Instructor: Dr. Paul Regier Time: Tues/Thurs 8:00 am - 9:25 pm
Email: Place: Austin Hall 213
Office hours: paulregier.com/office-hours/

1 Course Description

Study of fundamental data structures—including arrays, stacks, queues, linked lists, hash tables, trees, heaps, and graphs—and their applications. Emphasis is placed on algorithm design and analysis, including Big-O notation, time and space complexity, recursion, and trade-offs in performance and memory usage. Students will implement and evaluate algorithms for searching, sorting, and manipulating data structures on existing systems. (3 hours)

Prerequisite: CSCI 3253 - Programming in Python II

1.1 Materials

  1. Personal Laptop computer: Please install the following software (free) before our first meeting or as soon as you can:
  2. Textbook: Problem Solving with Algorithms and Data Structures using Python, by Brad Miller and David Ranum, Luther College.

1.2 Technical Skills Needed

  1. Ability to navigate and use learning management system (Canvas)
  2. Ability to run Python (12.10) with VS Code on your personal computer or by checking out a USAO computer.
  3. Ability to securely store and access files on cloud storage (such as OneDrive through your USAO account) during and after class. It is your responsibility to store files securely so you can access them in and out of class.

1.3 Learning Outcomes

By the end of this course, you will be able to:

  1. Conceptual Understanding
    • Explain the purpose, structure, and use cases for arrays, stacks, queues, linked lists, hash tables, trees, heaps, and graphs.
    • Compare the strengths, limitations, and typical applications of different data structures.
    • Describe and apply the concepts of recursion, divide-and-conquer, and iterative algorithm design.
  2. Algorithm Analysis
    • Analyze algorithms using Big-O, Big-Θ, and Big-Ω notation for time and space complexity.
    • Evaluate trade-offs between time complexity, memory usage, and implementation simplicity.
    • Determine the best choice of data structure for a given problem based on performance considerations.
  3. Implementation Skills
    • Implement fundamental data structures (e.g., stacks, queues, linked lists, binary trees, heaps, hash tables, graphs) from scratch.
    • Implement common algorithms for searching (linear, binary, depth-first, breadth-first) and sorting (selection, insertion, merge, quick, heap sort).
    • Use recursion effectively to solve problems such as tree traversals, graph searches, and divide-and-conquer sorting.
  4. Application and Problem-Solving
    • Select appropriate data structures and algorithms to solve real-world computational problems.
    • Modify and optimize existing implementations to improve performance or reduce memory footprint.
    • Debug, test, and validate implementations for correctness and efficiency.
  5. Software Development Practices
    • Apply modular programming principles to structure code for clarity and reuse.
    • Use version control to manage iterative improvements in algorithm and data structure implementations.
    • Document algorithms and data structures clearly, including performance considerations and design decisions.

2 Course Format

This course will meet IN-PERSON, with the exception of Week 9 (10/21, 10/23) and Week 11 (11/4, 11/6), in which online assignments will be given. Your active engagement in class will be crucial for your success in this course.

3 Assessment

Course grades are made up of the following components:

Component Weight
Attendance 5%
Coursera Assignments 20%
Lab Projects 30%
Midterm Exams 30% (15% each)
Final Project 15%
Total 100%

After rounding final grade to the nearest percent:
\(A = 90-100\%, B = 80-89\%, C = 70-79\%, D = 60-69\%, F = \text{below } 60\%\)

3.1 Attendance

Your active engagement in class is crucial for your success in this course. Thus, attendance will be recorded.

3.2 Coursera

Weekly Coursera assignments are posted on Canvas and are due before the class period in which we begin that topic.

  • Assignments are due at 8:00 AM on the day we begin the topic in class.
  • For quizzes with multiple attempts, your most recent score will be recorded
  • Complete the assigned readings/videos before attempting the quiz.
  • Bring any questions from the assignments to class — these will guide our in-class labs and discussions.

3.3 Lab Assignments

Lab projects are a major part of your grade and will be assigned about once per week. Labs begin in class, and remaining work is completed outside of class.

Policies:

  • Labs are due the next class period after they are completed in class, at the start of the class period.
  • Collaboration during in-class labs is encouraged, but all submitted work must be your own. Copying another student’s lab or code is considered academic dishonesty.
  • If you bring your draft to class with questions, you may revise and resubmit until the end of that day.
  • Late labs will receive a 10% penalty per day.
  • All labs must be submitted via Canvas — emailed labs will not be graded.

Feedback:

  • Labs will be graded within one week.
  • Feedback is intended to improve your skills in coding, problem solving, and interpretation of results.
  • Use this feedback to track whether you are meeting key learning benchmarks.

Technical note:

Procedures for completing labs in VS Code will be covered during the first week of class. If you miss these classes, it is your responsibility to meet with a peer or attend office hours to learn the process.

3.4 Exams

Exams will focus on real-world problems that require you to:

  • Interpret problem scenarios,
  • Develop accurate and efficient solutions, and
  • Clearly communicate your reasoning.

Exams will be completed in class and submitted through Canvas. Late or emailed exams will not be accepted.

Exams will be graded according to rubrics posted on Canvas. Partial credit may be awarded for clear reasoning, even if the final answer is incomplete.

3.5 Final Project

The Final Project will require you to apply multiple data structures and algorithms to solve a real-world problem. Details will be provided later on in the semester.

4 Course Communication

Be aware and anticipate the following response times for the following types of correspondence:

  • Student –> Instructor: For emails to the instructor sent after 8 am on Monday but before noon on Friday, please allow 24 hrs response time. Messages left after midday Friday may take up to 72 hrs. Holidays excluded. Messages sent via email generally will receive quicker responses than messages sent in Canvas.
  • Instructor –> Student: Students are expected to check and be aware of information sent via email and Canvas announcement posts regularly and respond if needed following the same guidelines described in the above item.
  • Student –> Student: When working with other students (e.g. homework or group projects) students are advised to exchange contact information of some sort, as well as check and read email/group messages regularly.

In all course communication with your instructor and classmates, please follow these net etiquette (netiquette) guidelines: 1

  1. Remember the Human: When communicating electronically, whether through email, instant message, discussion post, text, or some other method, practice the Golden Rule: Do unto others as you would have others do unto you. Remember, your written words are read by real people, all deserving of respectful communication. Consider the tone of your emails and discussion posts and before you press “send” or “submit” ask yourself, “Would I be okay with this if someone else had written it?”
  2. Make yourself look good: In all course communication with your instructor and classmates, be professional and polite. One of the great things about the virtual world is the lack of judgment associated with your physical appearance, the sound of your voice, or the clothes you wear. You will, however, be judged by the quality of your writing, so keep the following tips in mind:
    • Always check for capitalization, spelling, grammar, and punctuation errors.
    • Think about what you want to communicate and state it clearly.
    • Avoid slang and acronyms like ROTFL for “rolling on the floor laughing.”
    • Don’t use ALL CAPS for entire sentences or posts, which denote yelling at someone. Any form of attack or inappropriate response within any form of communication with other students or faculty is unacceptable and if done in a discussion post will be removed immediately accompanied with a warning.
    • Be pleasant and polite.
  3. Respect other people’s time and bandwidth: Electronic communication takes time: time to read and time in which to respond. Most people today lead busy lives, just like you do, and don’t have time to read or respond to frivolous emails or discussion posts. As a virtual world communicator, it is your responsibility to make sure that the time spent reading your words isn’t wasted. Make your written communication meaningful and to the point, without extraneous text or large attachments that may take forever to download.

5 Other Information

5.1 Office Hours

If you are struggling falling behind in this course, it is your responsibility to come to offices as soon as you realize this!

5.2 Illness

Regular class attendance is necessary in achieving the course objectives. Thus, taking care of your health and avoiding unnecessary exposure to illness is an important part of your success.

However, if you do fall ill for any reason, I want you to be able to rest. Please do not come to class if you are sick. If you are ill, please email me to let me know. Then, when you are well, contact me ASAP to make plans for making up missed work.

If you are absent, you are still responsible for all course requirements. I will work with you to make up work, but it is your responsibility to contact me as soon as you are well. Do not wait until the end of the semester to make up missed work.

5.3 Disability Services

The University has a continuing commitment to providing accommodations for students with documented disabilities. Like so many things this Fall, the need for accommodations and the process for arranging them may be altered by safety protocols related to COVID-19. To fully participate in this class, those with disabilities who may need accommodation should contact the Disability Services, as soon as possible. For this semester, please do this by emailing the Disability Services Office at .

5.4 Academic Dishonesty

Academic dishonesty of any kind will not be tolerated. This includes plagiarism, fabrication, cheating, unauthorized collaboration, copying code, or submitting work generated by AI tools as your own. All work must represent your own effort unless collaboration is explicitly allowed.

Violations of this policy will result in a grade of zero on the assignment and may be reported under the University’s Academic Code of Conduct. For more details, see the USAO student handbook.

5.5 Important Dates

Please also mark your calendar with all exam dates, as posted in the course schedule (see home Canvas page).

It is your responsibility to be aware of all dates listed in the USAO academic calendar.

5.6 Course Changes

The instructor reserves the right to make changes to this course as deemed mutually beneficial or necessary to all involved, with appropriate notification.

I encourage any feedback you have at any point during the semester. If you find any structural or content errors in any current course materials, let me know respectfully via the syllabus discussion in Canvas, via email, or in person. If you do so, I will give two points extra credit (per correction) toward Lab Assignments.


  1. Partially adapted from The Core Rules of Netiquette. Shea, V. (1994). Netiquette (Online ed., pp. 32-45). San Francisco: Albion Books.↩︎