UW CSE 373: Data Structures and Algorithms
CSE 373 is UW's data structures and algorithms course for non-majors and students outside the standard CSE admission track, covering lists, stacks, queues, trees, hashing, graphs, sorting, and asymptotic analysis. It cannot be taken for credit by students who have already completed CSE 332.
Fennie is independent and not affiliated with University of Washington. This is an unofficial study guide.
What makes it hard
The conceptual load (balancing trees, hash collision strategies, graph traversals, and Big-O analysis) arrives fast, and many students take 373 without the dense theory background CSE majors get from 311. Asymptotic analysis trips people up most: exams want you to derive and justify runtimes, not just recite them, and the implementation projects assume comfort writing substantial code.
What you'll cover
- • Asymptotic (Big-O) analysis
- • Lists, stacks, and queues
- • Trees and balanced search trees
- • Hash tables and collision resolution
- • Graphs and traversals
- • Sorting algorithms
The CSE 373 study guide
How to study for UW CSE 373, step by step.
- 1
Make Big-O reasoning a daily habit
Asymptotic analysis is the most-tested and most-missed skill in CSE 373. For every structure and operation, practice arguing why a runtime holds rather than memorizing a table. Exams want the justification.
- 2
Implement each structure, don't just read it
Build a small version of each tree, hash table, and graph yourself. The projects and exams assume you can produce structure code, and reading provided implementations doesn't build that ability.
- 3
Trace graph algorithms by hand
Walk BFS, DFS, and shortest-path algorithms through small graphs on paper, tracking the queue or stack at each step. Hand-tracing is how the algorithms move from memorized to understood.
- 4
Start projects early and debug deliberately
The implementation projects are substantial. Beginning early gives you room to understand bugs instead of patching them blindly, which is also how the concepts cement before exams.
Today's CSE 373 plan
What a Fennie Daily Plan looks like for CSE 373. Yours is built from your syllabus and adapts every day to your deadlines and progress.
- Review: Lists, stacks, and queuesReview · 25 min
Work back through the CSE 373 material on lists, stacks, and queues. In the app, Fennie builds this from your own notes and syllabus.
- Practice: Trees and balanced search treesPractice · 20 min
Targeted problems on trees and balanced search trees, the kind CSE 373 actually tests.
- Quick quiz: Hash tables and collision resolutionQuiz · 10 min
Five generated questions to expose weak spots on hash tables and collision resolution before the exam does.
- Preview: Graphs and traversalsPreview · 10 min
A first pass over graphs and traversals so the next session starts from familiar ground.
First plan free, no card required. Fennie is independent and unaffiliated with your school.
FAQ
Is CSE 373 hard?
It's demanding for a non-majors course. The topic pace is quick and asymptotic analysis is conceptually slippery. Students who practice deriving runtimes and implementing structures themselves handle it well.
What's the difference between CSE 373 and CSE 332?
CSE 332 is the data structures course for CSE majors and adds parallelism and concurrency; CSE 373 covers the core structures and algorithms for non-majors. You can't take 373 for credit if you've already completed 332.
How do I study for CSE 373 exams?
Focus on Big-O reasoning you can justify, hand-trace graph algorithms on small inputs, and implement each structure at least once rather than relying on provided code.
More UW courses
CSE 121: Introduction to Computer Programming I
CSE 121 is UW's no-experience-required intro to programming in Java, the first course in the CSE 12X sequence that replaced the old CSE 142/143 in 2022. It's designed for students who have never written code, covering variables, control flow, methods, and arrays through weekly programming assignments.
CSE 122: Introduction to Computer Programming II
CSE 122 is the second course in UW's intro programming sequence, and the usual starting point for students with AP CS A credit or prior coding experience. It covers data structures from the client perspective (lists, sets, maps, stacks, queues) plus file processing and reasoning about code complexity.
CSE 123: Introduction to Computer Programming III
CSE 123 completes UW's intro programming sequence, shifting from using data structures to building them. Students implement linked lists and binary trees, write recursive algorithms, and design class hierarchies with inheritance and interfaces, the material that used to be the back half of CSE 143.
CSE 311: Foundations of Computing I
CSE 311 is UW's discrete math and theory course: propositional logic, proofs, set theory, induction, regular expressions, and finite automata. It's the first course in the major where the work is writing proofs instead of writing programs, and it underpins everything from CSE 312 to algorithms.