Skip to article content

CSE 373 Summer 2026

University of Washington

Abstract

A data structure is a decision. Every one of them is somebody’s answer to the same question: given what I need to do with this data, how do I store it so the things I do most often are fast? Algorithms are similar: a procedure someone designed, defended, and proved. Learning data structures and algorithms is learning to make and defend those decisions yourself, instead of inheriting them.

You’re learning this at a strange time. You can hand a problem to a model and get working code back in seconds, and a lot of the time it’s good code. That’s not a shortcut to feel guilty about, it’s real, and the instinct to reach for it is rational. But the bar for what counts as a strong engineer is rising right alongside those tools. When generating a solution is nearly free, the value moves to the people who can tell a good solution from a plausible one, by reasoning about what a structure costs, why it breaks, and whether it’s even the right one. That judgment comes from building it by hand.

That’s what I’ve attempted to design this course for. We cover the core data structures and algorithms — lists, trees, heaps, hash tables, graphs, and the algorithms that run on them — by working them by hand: tracing them, analyzing them, implementing them, and arguing about the tradeoffs. The aim is straightforward. Whether you go on to ship fast with AI or to build the systems underneath it, you’ll understand the machinery well enough to know what’s actually happening.

Analysis Foundations
Mon, Jun 22LectureIntroductions
Wed, Jun 24LectureIntroduction to ADTs
Thu, Jun 25SectionSection 1HW1 due
Fri, Jun 26LectureIntro to Runtime Analysis
Mon, Jun 29LectureBig O & Case Analysis
Wed, Jul 1LectureAnalyzing Recursive Code
Thu, Jul 2SectionSection 2HW2 due
Fri, Jul 3HOLIDAY — No Class
Mon, Jul 6LectureIntro to Hashing
Wed, Jul 8LectureHashing Collision Resolution
Thu, Jul 9SectionSection 3HW3 due
Fri, Jul 10LectureAnalyzing Trees
Mon, Jul 13LectureSelf Balancing Trees
Wed, Jul 15ExamMidterm 1
Thu, Jul 16SectionSection 4HW4 due
Structures & Graphs
Fri, Jul 17LectureIntro to Heaps
Mon, Jul 20LectureHeap Implementation
Wed, Jul 22LectureIntro to Graphs / Graph Modelling
Thu, Jul 23SectionSection 5HW5 due
Fri, Jul 24LectureIntro to Graph Algorithms (BFS, DFS, Topo)
Mon, Jul 27LectureShortest Path
Wed, Jul 29LectureMSTs
Thu, Jul 30SectionSection 6HW6 due
Fri, Jul 31LectureDisjoint Sets
Mon, Aug 3LectureSorting I
Wed, Aug 5ExamMidterm 2
Thu, Aug 6SectionSection 7HW7 due
Synthesis
Fri, Aug 7LectureSorting II
Mon, Aug 10LectureDynamic Programming
Wed, Aug 12LectureFinal Review
Thu, Aug 13SectionSection 8: Final ReviewHW8 due
Fri, Aug 14ExamFinal Exam (handwritten, in person)

This course is designed to support students who have completed CSE 123: Introduction to Computer Programming III. You should be comfortable implementing basic data structures — resizing arrays, linked nodes, and trees — and reading and writing Java. We build directly on these foundations.

Why should we learn?

This course will help prepare you for programming jobs. But the decisions you’ll learn to make don’t end at runtime and memory. What you optimize for, whose request counts as the “common case,” what you treat as an edge case worth handling — these are design choices, and they decide who a system works well for and who it fails. The judgment that lets you pick the right data structure is the same judgment that lets you ask whether something is the right thing to build. I want you to leave here competitive as an engineer. I also want you to leave treating those choices as choices, not defaults.

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 things.

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, the following guidelines offer a starting point for ensuring compassion toward each other Inoue, 2022.

  • Listen with intention to understand first and form an opinion only after you fully understand.

  • Take responsibility for 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 email at vagar343@uw.edu or during office hours (see the Staff page). 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, 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. Allegations of misconduct by students may be referred to the appropriate campus office for investigation and resolution.

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. If you submit work in violation of these policies but bring it to the attention of the instructor within 72 hours, you may resubmit your own work without further consequence. Rather than blame students, we want to fix or replace broken systems that compel students to lose trust.

How the course works

Lectures run Monday, Wednesday, and Friday. They cover the core ideas and worked examples.

Homework is your deliberate practice. Each week’s assignment is one LeetCode-style coding problem and one exam-style written problem, due by end of day Thursday. Thursday section is the natural place to work through them with TA support, though attendance is optional (see Participation). Section is also where the handwritten-exam skill gets built, so it’s the on-ramp to the final.

Expect roughly 4 hours in class and 8 hours outside of it each week. Some weeks run heavier than others. If your workload is consistently far above this, talk to your TA.

Grading. Your grade is the sum of three components:

Participation (extra credit only). Section is optional. Attend at least 7 of the 8 sections and you earn an extra 5% added to your final grade. This is a pure bonus: nothing is deducted if you don’t attend, the 5% simply won’t apply.

Component weights may shift by up to 10% in either direction as the course evolves. Any changes will be announced on the course site.

Late work. Homework does not have built-in late days. If something comes up, post privately on Ed before the deadline and we’ll consider exceptions case by case.

Regrades. If you think something was graded incorrectly, submit your request as a private Ed post.


This course website is adapted from the CSE 373 course site created by Kevin Lin, used under CC BY-NC-SA 4.0.

References
  1. Inoue, A. B. (2022). Labor-Based Grading Contracts: Building Equity and Inclusion in the Compassionate Writing Classroom, 2nd Edition. The WAC Clearinghouse; University Press of Colorado. 10.37514/per-b.2022.1824