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 | |||
Released P0 due 11:59pm PT P0: Review | ||||
Fri 01/10 | LEC 03 ADTs to Know | |||
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 due 11:59pm PT EX1 | ||||
Wed 01/15 | LEC 05 Big O & Case Analysis in-class: gslides resources: panopto megathread | |||
Thu 01/16 | SEC 02 Algorithm Analysis | |||
Released P1 due 11:59pm PT P1: Deque | ||||
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 due 11:59pm PT EX2 | ||||
Wed 01/22 | LEC 07 Intro to Hashing in-class: gslides resources: megathread panopto | |||
Thu 01/23 | SEC 03 Recursive Algorithm Analysis | |||
Released P2 due 11:59pm PT P2: Maps | ||||
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 due 11:59pm PT EX3 | ||||
Wed 01/29 | LEC 10 Self Balancing Trees in-class: gslides resources: megathread panopto | |||
Thu 01/30 | SEC 04 Trees | |||
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 due 11:59pm PT P3: Heaps | ||||
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 due 11:59pm PT EX4 | ||||
Wed 02/12 | LEC 15 Shortest Paths in-class: gslides resources: megathread panopto | |||
Thu 02/13 | SEC 06 Graphs | |||
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 due 11:59pm PT EX5 | ||||
Wed 02/19 | LEC 17 Disjoint Sets I in-class: gslides resources: megathread panopto | |||
Thu 02/20 | SEC 07 MSTs | |||
Released P4 due 11:59pm PT P4: Mazes | ||||
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 | |||
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 due 11:59pm PT EX6 | ||||
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 | |||
Tue 03/11 | ||||
Released E7 due 11:59pm PT EX7 | ||||
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 | ||||