Week 
Lectures 
Homework 
1 
8/28. Stable
matching problem: a motivating example 8/30. Basics of algorithm analysis. 
HW1. Stable
matching, basic algorithm design and analysis. 
2 
9/4. Asymtotic
notations. 9/6. Common running time. 
HW2. Asymtotic notations. Running time analysis. 
3 
9/11. Divide
and conquer. 9/13. Divide and conquer (cont.) 

4 
9/18. Probabalistic
analysis. 9/20. Heapsort. 
HW3. Divide and conquer and probabilistic analysis 
5 
9/25. Lower
bound, quicksort, and counting sort. 9/27. Greedy algorithms. 

6 
10/2. Midterm exam 1. 10/4. Greedy algorithm and dynamic programming. 
HW4. Greedy algorithm and dynamic programming 
7 
10/9. Dynamic
programming (cont.) 10/11. Dynamic programming (cont.) 

8 
10/16. More
dynamic programming 10/18. Basic graph algorithms: BFS and DFS 
HW5. Dynamic programming 
9 
10/23. More
DFS and its applications. 10/25. Minimum spanning tree. (MST) 

10 
10/30. Shortest
path. 11/1. Midterm exam 2. 
HW6. Basic graph algorithms and MST. 
11 
11/6. Introduction
to randomized algorithms. 11/8. Introduction to geometric algorithms. 

12 
11/13.
Algorithms with numbers. 11/15. Concept of NP completeness. 
HW7. Shortest path and more. 
13 
11/27. NP
problems. 11/29. NP completeness: proofs. 
HW8. NP completeness. 
14 
12/4. NP
completeness: proofs 12/6. Cope with NP completeness: heuristics, speical instances and approximation. 

15 
Final exam. 