CSE 373
Site logo of CSE 373
CSE 373
  • Home / Calendar
  • Syllabus
  • Projects
    • P0 - CSE 143 Review
      • System Setup
      • Using IntelliJ
      • Programming
      • Unit Testing
      • Commit & Submit
    • P1 - Deques
      • Getting Started
      • Programming
      • Tests
    • P2 - Maps
      • Map Interface
      • Iterator Interface
      • ArrayMap Implementation
      • ChainedHashMap Implementation
      • Tests and Submission
    • P3 - Heap
      • Programming
    • P4 - Mazes
      • Introduction
      • Disjoint Sets
      • Kruskal's Algorithm
      • Dijkstra's Algorithm
  • Exercises
  • Exams
  • Office Hours
  • Course Staff
  • Resources

  • Course Tools
  • EdStem
  • Anonymous Feedback
Acknowledgements

Data Structures and Algorithms

Winter 2025

Welcome to CSE 373: Data Structures and Algorithms 🎉

What is this class? What will I learn?

CSE 373 covers the theoretical and conceptual foundations of common data structures and algorithms. We emphasize the importance of creating and defending design decisions. Then, we apply these decisions in larger programming projects.

Specific technical topics we will cover include:

  • Data Structures and ADTs: lists, stacks, queues, sets, dictionaries, linked lists, arrays, trees, balanced trees, AVL trees, hash tables, priority queues, binary heaps, and disjoint sets.
  • Graphs and Graph Algorithms: graph search, shortest path, and minimum spanning trees.
  • Algorithm Analysis: asymptotic analysis, and P and NP complexity classes.
  • Sorting: insertion/exchanging and divide-and-conquer approaches.

This course is also designed to have a practical component to help you gain basic familiarity with techniques used within industry. In particular, you’ll be asked to:

  • Work on programming projects and integrate your work in an existing codebase.
  • Learn how to use an industrial-strength IDE.
  • Learn techniques for checking correctness: writing unit tests with JUnit, designing and checking invariants, etc.
  • Learn how to collaborate on a single code base using source control repositories.

Taken together, all of the above skills are chosen to set you up for success in a software-related role. In fact, this course is typically regarded as useful preparation for industry and technical interviews.

Syllabus

If you want to learn more about the course and its policies, please check out our course syllabus.

Registration

Please do not email the course staff or instructors regarding registration for the course. The course staff do not have access to add codes. Please email ugrad-adviser@cs.washington.edu for assistance.

This Week (at a glance)¶

Tuesday (03/04)

  • Lecture 22: DP II
    3:30 pm in ARC 147

Wednesday (03/05)

  • EX5 due @ 11:59pm PT.

Thursday (03/06)

  • Exam 2
    3:30 pm in ARC 147

Friday (03/07)

  • Section 9: DP

Monday (03/10)

  • Lecture 23: Memory
    3:30 pm in ARC 147

Calendar¶

Topic Projects Exercises
Week 1
Mon 01/06
LEC 01 Intros/ADTs
in-class: gslides
resources: panopto megathread
Tue 01/07
Wed 01/08
LEC 02 ADT Case Study
in-class: gslides
resources: panopto megathread
Thu 01/09
SEC 01 CSE 123 / 143 Review
in-class: gslides
resources: handout solution
Released
P0
P0: Review
due 11:59pm PT
Fri 01/10
LEC 03 ADTs to Know
in-class: gslides
resources: panopto megathread
Review Session: info
Week 2
Mon 01/13
LEC 04 Intro to Runtime Analysis
in-class: gslides RuntimeStopwatch
resources: panopto megathread

Note: RuntimeStopwatch.zip has the source code for the experimental setup to time code. You're welcome to check it out. You may need update the version of Java Runtime to run it.

Tue 01/14
Released
E1
EX1
due 11:59pm PT
Wed 01/15
LEC 05 Big O & Case Analysis
in-class: gslides
resources: panopto megathread
Thu 01/16
SEC 02 Algorithm Analysis
in-class: gslides
resources: handout solution
make_up_problems: 1, 2, 3a, 4b, 4d
Released
P1
P1: Deque
due 11:59pm PT
Fri 01/17
LEC 06 Analyzing Recursive Code
in-class: gslides
resources: megathread panopto
Week 3
Mon 01/20
HOLIDAY MLK Jr. Day
Tue 01/21
Released
E2
EX2
due 11:59pm PT
Wed 01/22
LEC 07 Intro to Hashing
in-class: gslides
resources: megathread panopto
Thu 01/23
SEC 03 Recursive Algorithm Analysis
in-class: gslides
resources: handout solution
make_up_problems: 1b-c, 3a, 4a, 4d-e, 6
Released
P2
P2: Maps
due 11:59pm PT
Fri 01/24
LEC 08 Hashing Collision Resolution
in-class: gslides
resources: megathread panopto
Week 4
Mon 01/27
LEC 09 Analyzing Trees
in-class: gslides
resources: megathread panopto
Tue 01/28
Released
E3
EX3
due 11:59pm PT
Wed 01/29
LEC 10 Self Balancing Trees
in-class: gslides
resources: megathread panopto
Thu 01/30
SEC 04 Trees
in-class: gslides
resources: handout solution
make_up_problems: 1a-c, 4a-c, 5a-c, 6a-c
Fri 01/31
LEC 11 Intro to Heaps
in-class: gslides
resources: megathread panopto
Week 5
Mon 02/03
LEC 12 Heap Implementation
in-class: gslides
resources: megathread panopto
Tue 02/04
Wed 02/05
LEC 13 Intro to Graphs
in-class: gslides
resources: megathread panopto
Thu 02/06
SEC 05 Heaps / General Review
in-class: gslides
resources: handout solution additional review slides
make_up_problems: 1a-d, 2e, 3a-c, Exam 1 Review 6-9
Released
P3
P3: Heaps
due 11:59pm PT
Fri 02/07
EXAM Midterm Exam
Week 6
Mon 02/10
LEC 14 Graph Traversals
in-class: gslides
resources: megathread panopto
Tue 02/11
Released
E4
EX4
due 11:59pm PT
Wed 02/12
LEC 15 Shortest Paths
in-class: gslides
resources: megathread panopto
Thu 02/13
SEC 06 Graphs
in-class: gslides
resources: handout solution
make_up_problems: 1a-b, 3, 4a-b
Fri 02/14
LEC 16 MSTs
in-class: gslides
resources: megathread panopto
Week 7
Mon 02/17
HOLIDAY President's Day
Tue 02/18
Released
E5
EX5
due 11:59pm PT
Wed 02/19
LEC 17 Disjoint Sets I
in-class: gslides
resources: megathread panopto
Thu 02/20
SEC 07 MSTs
in-class: gslides
resources: handout solution
make_up_problems: 1a-b, 6d-e, 7, 8a-b
Released
P4
P4: Mazes
due 11:59pm PT
Fri 02/21
LEC 18 Disjoint Sets II
in-class: gslides
resources: megathread panopto
Week 8
Mon 02/24
LEC 19 Sorting I
in-class: gslides
resources: megathread panopto
Tue 02/25
Wed 02/26
LEC 20 Sorting II
in-class: gslides
resources: megathread panopto
Thu 02/27
SEC 08 Sorting
in-class: gslides
resources: handout solution
make_up_problems: 5, 6a-e, 9a-d, 10a-d, 10a-c
Fri 02/28
LEC 21 DP I
in-class: gslides
resources: megathread panopto
Week 9
Mon 03/03
LEC 22 DP II
in-class: gslides
resources: megathread
Tue 03/04
Released
E6
EX6
due 11:59pm PT
Wed 03/05
EXAM Final Exam
Thu 03/06
SEC 09 DP
in-class: gslides
make_up_problems: Coin Change and Unique Paths problem on Ed
Fri 03/07
LEC 23 Memory
in-class: gslides
resources: megathread panopto
Week 10
Mon 03/10
LEC 24 Parallelism & Threading
in-class: gslides
resources: megathread panopto
Code Examples: ParallelArraySum.java (simple pattern), RecursiveParallelArraySum.java (more complex pattern), Bank.java (concurrency)
Tue 03/11
Released
E7
EX7
due 11:59pm PT
Wed 03/12
LEC 25 P/NP
in-class: gslides
resources: megathread
Thu 03/13
SEC 10 TA's Choice!
Fri 03/14
LEC 26 Approximation Algorithms
in-class: gslides
resources: megathread panopto
Week 11 - Finals week
Mon 03/17
Tue 03/18

Search

Search the class website; related sections and pages will appear below. Note: this search is not as forgiving with typos as other search engines.