Data Structures and Algorithms

University of Washington, Summer 2025

Aelysha Sharma

aelysha@uw.edu

Office Hours 1

Mon 2:30 – 4:30 PM in PCAR 297

Office Hours 2

Fri 2:30 – 4:30 PM in DEM 124

Hey 373! I’m Aelysha, a recent graduate with a B.S. in Informatics and minor in Data Science. Over the past 5 quarters I have been a TA for 373 consecutively, where I found a strong passion for guest lecturing, which has brought me here! I’m always up for chats about new music releases, anime, student life at UW, forensics, and computer science education! I’m also open to any and all avenues for course improvement. I greatly look forward to working with you all!

Summer Anthem: “GO!” by Weston Estate

Husky Maps is a web app for mapping the world, searching for places, and navigating around Seattle. All these features are powered by data structures and algorithms, programming abstractions designed to represent data and automate processes. In your prior programming experience, you learned how to implement specifications by writing Java programs that used data structures to solve problems. In this course, you’ll learn how to answer the why question: Why did we write the specification that way in the first place?

There are many decisions to make when designing a software system, and many of these decisions have significant consequences on qualities of a system. In this course, we’ll focus on learning data structures as implementations of abstract data types. An abstract data type describes what you can do with a data type, but not how the data type is implemented; a data structure provides both a description of functionality and a specific implementation of functionality. Rather than think of problems as requiring custom algorithms that we invent from scratch each time, abstract data types help us think of problems as variations that can be addressed by adapting more general algorithm ideas.

Data Structures and Algorithms presents a selection of these ideas in a way intended to help you design, analyze, and evaluate software systems. Learning these ideas can enable fuller participation in the community of computing professionals. This 9-week course is organized around four 2-week case study projects and two Exam Interviews. By the end of the course, you’ll have retraced the history of invention for 4 abstract data types, 12 implementations of them, and 7 real-world problems that they address:

  1. Deque data structures for browsing history.
  2. Autocomplete data structures and algorithms for search suggestions and DNA indexing.
  3. Priority queue data structures for content moderation and shortest paths.
  4. Shortest paths and graph data structures for seam carving and navigation directions.
  5. Exam Interviews to communicate your understanding of course concepts, interpret code, and design solutions to real-world problems.

This course is divided into 5 modules: Deques, Autocomplete, Priority Queues, Shortest Paths, and Finale. Assignments are often due on Mondays and Fridays. Enrolled students will complete projects in CSE GitLab, but public project code is also available on GitHub.

Search to find relevant course materials.

Deques

Arrays and Nodes

Jun 23
Arrays and Nodes
Slides · Worksheet · Marked
PrjProject Setup by Jun 27
PrjDeques Presentation by Jul 4
Jun 25
Deques
Slides · Worksheet · Marked
Exc Exercise 1 by Jul 7
Jun 26
Sec CSE 123 Review
Slides · Worksheet
Jun 27
Asymptotic Analysis
Slides · Worksheet · Marked

Algorithm Analysis and Sorting

Jun 30
Iterative Sorts
Slides · Worksheet · Marked
Jul 2
Merge Sort and Recurrences
Slides · Worksheet · Marked
Jul 3
Sec Asymptotic Analysis
Slides · Worksheet
Jul 4
Holiday (4th of July)
PrjAutocomplete Pre-Quiz by Jul 9, Mid-Quiz by Jul 16, and Presentation by Jul 18

Autocomplete

Search Trees

Jul 7
Binary Search Trees
Slides · Worksheet · Marked
Exc Exercise 2 by Jul 14
Jul 9
TSTs & Tries
Jul 10
Sec Recurrences
Jul 11
More Recurrences and Runtime Analysis

Isomorphism and Heaps

Jul 14
2-3 Trees
Exc Exercise 3 by Jul 21
Jul 16
LLRBs and AVLs
Jul 17
Sec Isomorphism and Trees
Jul 18
Binary Heaps
PrjPriority Queues Pre-Quiz by Jul 23, Presentation by Aug 1

Priority Queues

Hashing and Midterm Review

Jul 21
Hash Tables
Exc Exercise 4 by Jul 28
Jul 23
Affordance Analysis
Jul 24
Sec Heaps and Hashing
Jul 25
Midterm Review

Midterm and Graphs

Jul 28
Midterm Interviews
Jul 30
Graph Data Type
Jul 31
Sec Graphs
Aug 1
Graph Traversals
PrjShortest Paths Pre-Quiz by Aug 6, Presentation by Aug 15

Shortest Paths

Graph Algorithms

Aug 4
Shortest Paths Trees
Exc Exercise 5 by Aug 11
Aug 6
Dynamic Programming
Aug 7
Section SPTs and DP
Aug 8
Minimum Spanning Trees

Applications

Aug 11
Disjoint Sets: Part 1
Exc Exercise 6 by Aug 18
Aug 13
Disjoint Sets: Part 2
Aug 14
Sec MSTs and Disjoint Sets
Aug 15
Iterative Design

Finale

Final Review

Aug 18
Sorting and Special Topics
Aug 20
Final Exam Review & Wrap-Up
Aug 21
Section Final Review
Aug 22
Final Interviews

Why should we learn?

The education you receive in this course can help prepare you for programming jobs, but this isn’t the only purpose for computing education.1 Education is not only about yourself and your personal gain, but also about all of us and our capacity to live together as a community.

The University of Washington acknowledges the Coast Salish peoples of this land, the land which touches the shared waters of all tribes and bands within the Duwamish, Puyallup, Suquamish, Tulalip and Muckleshoot nations. Among the traditions of the Coast Salish peoples is a value for the connectedness between all living things and a recognition of the unique ways that each of us comes to know something.2

Modern education has the idea that we all need to know the same thing. At the end of the lesson, everyone will know the same thing. That’s why we have tests, that’s why we have quizzes, that’s why we have homework: to ensure we all know the same thing. And that’s powerful—that’s important—within a certain context.

But for native culture, the idea that each listener divines or finds their own answer, their own meaning, their own teaching from the story is equally powerful—that each person needs to be able to look at the world and define it for themselves within their culture and then also find a way to live in that world according to the teachings of their people in their culture.

Our course emphasizes the following values and policies.

We are responsible for each others’ success
Everyone has a right to feel like they belong in this course. We’ll need to act with compassion and caring to collaborate with each other. Although we will need more than just unexamined commitments to collaboration, listening, empathy, mindfulness, and caring,3 the following guidelines offer a starting point for ensuring compassion toward each other.4
  • Listen with intention to understand first and form an opinion only after you fully understand.
  • Take responsibility for the intended and unintended effects of your words and actions on others.
  • Mindfully respond to others’ ideas by acknowledging the unique value of each contribution.

You should expect and demand to be treated by your classmates and teachers with respect. If any incident occurs that challenges this commitment to a supportive, diverse, inclusive, and equitable environment, please let the instructor know so the issue can be addressed. Should you feel uncomfortable bringing up an issue with the instructor directly, meet our advisors during quick questions or contact the College of Engineering.

We recognize everyone has unique circumstances
Do not hesitate to contact the instructor by private discussion post or email. The sooner we are made aware of your circumstances, the more we can help. Extenuating circumstances include work-school balance, familial responsibilities, religious observations, military duties, unexpected travel, or anything else beyond your control that may negatively impact your performance in the class.
It is the policy and practice of the University of Washington to create inclusive and accessible learning environments consistent with federal and state law. If you have already established accommodations with Disability Resources for Students (DRS), activate your accommodations via myDRS so we can discuss how they will be implemented in this course. If you have a temporary health condition or permanent disability that requires accommodations, contact DRS directly to set up an Access Plan.
Washington state law requires that UW develop a policy for accommodation of student absences or significant hardship due to reasons of faith or conscience, or for organized religious activities. The UW’s policy, including more information about how to request an accommodation, is available at Religious Accommodations Policy. Accommodations must be requested within the first two weeks of this course using the Religious Accommodations Request form.
We believe everyone wants to learn
Education is about shaping your identity as much as it is about learning things. In school, the consequences of making mistakes are relatively small. But the habits you form now—repeated over days, weeks, months, or years—determine who you will be in the future. Now is the best time to practice honest habits.
We ask that you do not claim to be responsible for work that is not yours. When you receive substantial help from someone else or an external tool, include a citation. Don’t post your solutions publicly. Most importantly, don’t deprive yourself or others of the learning opportunities that we’ve created in this course.
Academic honesty reflects the trust (or the lack thereof) between students and teachers. We do our best to design the course in ways that ensure trust, but we know our systems are not perfect. Rather than blame students, we want to fix or replace broken systems that compel students to lose trust. See our Syllabus for more details on course policies.

Students are expected to follow Washington state law on the Student Conduct Code for the University of Washington. In this course, students must:

  • Indicate on assignment submissions any assistance received, including materials distributed in this course.
  • Not receive, generate, or otherwise acquire any substantial portion or walkthrough for an assignment.
  • Not aid, assist, attempt, or tolerate prohibited academic conduct in others.

Some generative AI use is allowed with citation and caution. More generally, any concept not taught in this course or in a prerequisite course must be cited. Submitted work that is not consistent with our curriculum or citation policy will require a makeup procedure in office hours to account for knowledge loss or misconceptions that arise. Repeated failure to cite in accordance with our policies or attend office hours for makeups may have further consequences—do not prompt generative AI with any substantive portion of an assigned task.

How will you learn?

In a traditional classroom, you attend class while a teacher lectures until time is up. Then, you go home and do the important work of applying concepts toward practice problems or assignments on your own. Finally, you take an exam to show what you know.

Today, we know that there are more effective ways to learn science, engineering, and mathematics.5 Learning skills like software engineering and algorithm analysis requires deliberate practice: a learning cycle that starts with sustained motivation, then presents tasks that build on prior knowledge, and concludes with immediate, personalized feedback. Each module in the course will involve several different activities that are designed so that we can make the most of our class time together.

On your own before class, prepare for learning by completing the pre-class preparation.
In Canvas, read the weekly Lessons and complete the Pre-Class Quiz
Lessons are designed to introduce all the concepts for the entire week’s classes.
In groups during class and quiz section, collaborate on the in-class guided practice.
For extra credit, you may interact with PollEverywhere activites in lecture and Gradescope activities during section.
Class meetings are designed to deepen, complicate, and connect ideas across the course.
On your own after class, complete take-home assessments to show what you learned.
In Gradescope, demonstrate your learning by completing Exercises for quiz-like review.
Such preparation is vital to assess your knowledge of content in real time and practice active recall, to help focus exam studying efforts later on.
In Canvas, demonstrate your learning by assembling Projects via video presentations.
Projects are designed to integrate and situate what you learned in real-world problems.
For exams, take part in virtual Interviews to synthesize your technical knowledge.
In the midterm, complete TA-led interviews to discuss high-level concepts, assess portions of code, and design solutions to word problems. Content from weeks 1-5 will be emphasized.
In the final, complete TA-led interviews to discuss high-level concepts, assess portions of code, and design solutions to word problems. Content from weeks 6-10 will be emphasized.
You may resubmit the Midterm Interview to earn up to half of the points back that were originally lost.

Communicating your ideas and explaining your problem solving process is important in this course. We ask students to record their own screenshared and voiced videos because they provide rich information about your solution process and authenticate your assessment. But we know that visual or voiceover presentations are not accessible or equitable for everyone. If for any reason a voiceover presentation won’t work for you, we would be happy to work with you to find a better way to communicate your ideas and explain your problem solving process. You do not need to disclose why you feel uncomfortable, but we were thinking about people with vision impairment, gender and voice dysphoria, limited access to resources, or complicated living situations when designing this policy.

Expect to spend 4 hours in class and 8 hours outside of class working on this course. Some weeks may require more or less time than other weeks. If you find the workload is significantly exceeding this expectation, talk to your TA.

  • 11:00 AM
  • 11:30 AM
  • 12:00 PM
  • 12:30 PM
  • 1:00 PM
  • 1:30 PM
  • 2:00 PM
  • 2:30 PM
  • 3:00 PM
  • 3:30 PM
  • 4:00 PM
  • 4:30 PM
  • 5:00 PM
  • 5:30 PM
  • 6:00 PM
  • 6:30 PM
  • 7:00 PM
  • Monday

    • Office Hours
      11:30 AM–12:30 PM
      Zoom
    • Lecture
      1:10 PM–2:20 PM
      DEM 102
    • Office Hours
      2:30 PM–4:30 PM
      PCAR 297
  • Tuesday

  • Wednesday

    • Lecture
      1:10 PM–2:20 PM
      DEM 102
    • Office Hours
      2:30 PM–4:30 PM
      Zoom
  • Thursday

    • Sections
      12:00 PM–3:20 PM
    • Office Hours
      4:30 PM–6:30 PM
      DEN 259
  • Friday

    • Lecture
      1:10 PM–2:20 PM
      DEM 102
    • Office Hours
      2:30 PM–4:30 PM
      DEM 124

How is this course graded?

Grading in this course encourages learning through deliberate practice by emphasizing revision and resubmission of work. Most of the coursework is designed around feedback loops where you try something, get feedback, then try again. Grades are based on what you eventually learn through this process.

We will have these minimum guarantees when we convert from course submissions to final grades. That is, if you meet the conditions in the table, your final grade can be no lower than the grade shown in that row.

GradeExamsExercisesProjectsIn-Class Work
4.0100% on Midterm and 100% on Final6S4S100% on all Canvas quizzes
3.5100% on Midterm and 50% on Final6S4S100% on all Canvas quizzes
3.050% on Midterm6S4S100% on all Canvas quizzes
2.5Attempted Midterm, less than 50%5S3S100% on all Canvas quizzes
2.0None4S3S75% on all Canvas quizzes
1.0None2S2S50% on all Canvas quizzes

To be guaranteed a particular minimum grade, all requirements for that grade must be met. Failing to meet any of the requirements for a particular minimum grade does not preclude the possibility of receiving that grade (as the steps described above indicate), but we do not provide any estimates or guarantees beyond those listed here. For example, it’s possible to still earn a 3.0 or above even if you miss one of the requirements since every piece of work done above the required minimum can go to increasing your course grade; it’s just not guaranteed you will get a 3.0 or above if you don’t make all requirements (but even if something is not guaranteed, it can still happen).

We will use the full 4.0 grade scale (it is possible to get a 3.7 or 3.3, for example, even though those rows aren’t in the table). At the end of the quarter, we will develop formulas to interpolate between grade breaks. We will not release these formulas at the end of the quarter, nor will we debate whether another formula might have made for different results.

Exact final grades, including all grades not listed above, will be determined at the end of the quarter by the course staff based on each student’s overall body of work. Estimates of students’ final grades beyond the requirements listed above will not be provided.

Note that we have included optional Participation activities for extra credit. If you complete over 90% of Lecture PollEverywhere activities and 6 or more Section activities, we will round up your GPA to the nearest 10th of a point (3.44 to a 3.5).

Resubmission Policies

There are no penalties for resubmissions or late work turned in using a resubmission. You can use a resubmission as your first submission, without penalty, if you wish. Though we recommend turning in what you have at the time to get feedback from a TA for improvement!

As a result of the resubmission process, we don’t offer extensions for late work because you can resubmit instead. The Final Interview is not eligible for resubmission.

Projects

Resubmissions are due Friday nights at 11:59 PM via Canvas, by making a new submission to the same assignment you wish to resubmit.

Here is the schedule for Resubmissions. This schedule is set, and we do not anticipate the capacity for more resubmissions.

  • Weeks 3, 4 - Deques
  • Weeks 5, 6 - Deques, Autocomplete
  • Weeks 7, 8 - Deques, Autocomplete, Priority Queues
  • Week 9 - Shortest Paths

One extra resubmission will be permitted during Week 8.

Exercises

Exercises cannot be resubmitted. After the one-week timeline for completion, a one-week buffer period is provided if you are unable to meet the original deadline. After these 2 weeks, the assignment will close. Given that the correctness of your work can be assessed in real time, we aim to encourage you to keep up with course content with such rigid deadlines.

In-Class Work

Canvas pre-class quizzes can be submitted at any point throughout the quarter, by Friday 8/22 11:59PM. Participation makeups for PollEverywhere and Gradescope in sections will not be permitted as they fall under extra credit.

  1. Mark Guzdial. 2021. Computer science was always supposed to be taught to everyone, and it wasn’t about getting a job

  2. Roger Fernandes. 2012. Roger Fernandes: Artist/Storyteller/Educator

  3. Brian Arao and Kristi Clemens. 2013. “From Safe Spaces to Brave Spaces: A New Way to Frame Dialogue Around Diversity and Social Justice” in The Art of Effective Facilitation

  4. Asao B. Inoue. 2019. “Sample Charter for Compassion” in Labor-Based Grading Contracts: Building Equity and Inclusion in the Compassionate Writing Classroom

  5. Scott Freeman, Sarah L. Eddy, Miles McDonough, Michelle K. Smith, Nnadozie Okoroafor, Hannah Jordt, and Mary Pat Wenderoth. 2014. Active learning increases student performance in science, engineering, and mathematics


Explore CSE 373

  • Lessons - Learning materials and resources.
  • Projects - Project instructions and specifications.
  • Staff - All the teaching and learning assistants.