Lectures occured on Tuesdays and Thursdays. Recitations took place on Wednesdays and Fridays. Optional problem sessions were held on Fridays.
Week  Lectures  Recitations  Problem Sessions  Key Dates 

1 
Lecture 1: Introduction Lecture 2: Data Structures 
Recitation 1 Recitation 2 
Problem Session 1 
Problem Set 0 Due 
2 
Lecture 3: Sorting Lecture 4: Hashing 
Recitation 3 Recitation 4 
Problem Session 2 
Problem Set 1 Due 
3 
Lecture 5: Linear Sorting 
Recitation 5 
Problem Session 3 
Problem Set 2 Due 
4 
Lecture 6: Binary Trees, Part 1 Lecture 7: Binary Trees, Part 2: AVL 
Recitation 6 Recitation 7 
Problem Session 4 
Problem Set 3 Due 
5 
Lecture 8: Binary Heaps Lecture 9: BreadthFirst Search 
Recitation 8 Recitation 9 
Quiz 1 Review 
Problem Set 4 Due Quiz 1 Review 
6 
Lecture 10: DepthFirst Search Lecture 11: Weighted Shortest Paths 
Recitation 10 Recitation 11 
Problem Session 5 

7 
Lecture 12: BellmanFord 
Recitation 12 
Problem Session 6 
Problem Set 5 Due Quiz 1 
8 
Lecture 13: Dijkstra’s Algorithm Lecture 14: Johnson’s Algorithm 
Recitation 13 Recitation 14 
Problem Session 7 
Problem Set 6 Due Quiz 2 Review 
9 
Lecture 15: Dynamic Programming, Part 1: Recursive Algorithms Lecture 16: Dynamic Programming, Part 2: Subproblems 
Recitation 15 Recitation 16 
Problem Session 8 

10 
Lecture 17: Dynamic Programming, Part 3: APSP, Parens, Piano 
Recitation 17 
No problem sessions 
Problem Set 7 Due Quiz 2 
11 
Lecture 18: Dynamic Programming, Part 4: Pseudopolynomials Lecture 19: Complexity 
Recitation 18 Recitation 19 
Problem Session 9 
Problem Set 8 Due Quiz 3 Review 
12 
Lecture 20: Course Review 
Recitation 20 
No problem sessions 
Quiz 3 
13 
Lecture 21: Algorithms—Next Steps 
No recitations 
No problem sessions 

14 
Final Exam 