Week 
Lectures 
Homework 
1 
Lect. 1.
No class Lect. 2. Stable matching problem: a motivating example 
HW1. Stable
matching, basic algorithm design and analysis. 
2 
Lect. 3. Asymptotic
notations.
Lect. 4. Common running time. 
HW2. Asymptotic notations. Running time analysis. 
3 
Lect. 5. Quiz.
Basic graph algorithms: BFS and DFS Lect. 6. More DFS and its applications. 
HW3. Basic graph algorithms. 
4 
Lect. 7. Greedy
algorithms. Lect. 8. Greedy algorithm (cont.). 
HW4. Greedy
algorithm 
5 
Lect. 9. Divide
and conquer Lect. 10. More on divide and conquer. 
HW5. Divide and conquer 
6 
Midterm exam 1. Lect.11. Still more on divide and conquer: FFT. 

7 
Lect. 12.
Dynamic programming Lect. 13. More on dynamic programming 
HW6. Dynamic programming 
8 
Lect. 14.
Still more dynamic programming Lect. 15. Even more dynamic programming 
HW7. Dynamic programming 
9 
Lect. 16.
Network flows Lect. 17. Network flows (cont.) 
HW8. Network flows 
10 
Lect. 18 Concept of
NP completeness. Midterm exam 2. 

11 
Lect. 19.
NP problems. Lect. 20. NP completeness: proofs. 

12 
Lect. 21.
NP completeness: proofs Lect. 22. Cope with NP completeness: heuristics and speical instances. 
HW9. NP completeness. 
13 
Lect. 23.
Approximation algorithms. Lect. 24. More on approximation algorithms. 
HW10. Coping with NP completeness. 
14 
Lect. 25.
Introduction to randomized algorithms. Lect. 26. More on randomized algorithms. 

15 
Final exam. 