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)¶
Monday (02/03)
- Lecture 12: Heap Implementation
3:30 pm in ARC 147
Tuesday (02/04)
- Nothing!
Wednesday (02/05)
- Lecture 13: Intro to Graphs
3:30 pm in ARC 147
Thursday (02/06)
- Section 5: Heaps / General Review
- P2: Maps due @ 11:59pm PT.
- Project 3 Released
Due Thur 2/20 @ 11:59 pm
Friday (02/07)
- Exam 1
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 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: megasthread | |||
| Thu 02/06 | SEC 05 Heaps / General Review | |||
| Released P3 P3: Heaps | ||||
| Fri 02/07 | EXAM Midterm Exam | |||
| Week 6 | ||||
| Mon 02/10 | LEC 14 Graph Traversals | |||
| Tue 02/11 | ||||
| Released E4 EX4 | ||||
| Wed 02/12 | LEC 15 Shortest Paths | |||
| Thu 02/13 | SEC 06 Graphs | |||
| Fri 02/14 | LEC 16 MSTs | |||
| Week 7 | ||||
| Mon 02/17 | HOLIDAY President's Day | |||
| Tue 02/18 | ||||
| Released E5 EX5 | ||||
| Wed 02/19 | LEC 17 Disjoint Sets I | |||
| Thu 02/20 | SEC 07 MSTs | |||
| Released P4 P4: Mazes | ||||
| Fri 02/21 | LEC 18 Disjoint Sets II | |||
| Week 8 | ||||
| Mon 02/24 | LEC 19 Sorting I | |||
| Tue 02/25 | ||||
| Wed 02/26 | LEC 20 Sorting II | |||
| Thu 02/27 | SEC 08 Sorting | |||
| Fri 02/28 | LEC 21 DP I | |||
| Week 9 | ||||
| Mon 03/03 | LEC 22 DP II | |||
| Tue 03/04 | ||||
| Released E6 EX6 | ||||
| Wed 03/05 | EXAM Final Exam | |||
| Thu 03/06 | SEC 09 DP | |||
| Fri 03/07 | LEC 23 Memory | |||
| Week 10 | ||||
| Mon 03/10 | LEC 24 Parallelism & Threading | |||
| Tue 03/11 | ||||
| Released E7 EX7 | ||||
| Wed 03/12 | LEC 25 TBD | |||
| Thu 03/13 | SEC 10 TBD | |||
| Fri 03/14 | LEC 26 P/NP | |||
| Week 11 - Finals week | ||||
| Mon 03/17 | ||||
| Tue 03/18 | ||||