Calendar

Lectures occured on Tuesdays and Thursdays. Recitations took place on Wednesdays and Fridays. Optional problem sessions were held on Fridays. 

WeekLecturesRecitationsProblem SessionsKey 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: Breadth-First Search

Recitation 8

Recitation 9

Quiz 1 Review

Problem Set 4 Due

Quiz 1 Review

6

Lecture 10: Depth-First Search

Lecture 11: Weighted Shortest Paths

Recitation 10

Recitation 11

Problem Session 5

 

7

Lecture 12: Bellman-Ford

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