Week 
Lectures 
Homework 
1 
8/30. Stable
matching problem: a motivating example 9/1. Basics of algorithm analysis. 
HW1. Stable
matching, basic algorithm design and analysis. 
2 
9/6. Asymtotic
notations. 9/8. Common running time. 

3 
9/13. Divide
and conquer. 9/15. Divide and conquer (cont.) 
HW2. Asymtotic notations. Divide and conquer. 
4 
9/20. Probabalistic
analysis. 9/22. Heapsort. 
HW3. More divide and conquer and probabilistic analysis 
5 
9/27. Quicksort,
radix sort and counting sort. 9/29. Midterm exam 1. 

6 
10/4. Greedy
algorithms. 10/6. Greedy algorithm and dynamic programming. 

7 
10/11. Dynamic
programming (cont.) 10/13. Dynamic programming (cont.) 
HW4. Greedy algorithm and dynamic programming 
8 
10/18. More
dynamic programming 10/20. Basic graph algorithms: BFS and DFS 
HW5. Dynamic programming 
9 
10/25. More
DFS and its applications. 10/27. Midterm exam 2. 

10 
11/1. Minimum
spanning tree. (MST) 11/3. Shortest path. 
HW6. Basic graph algorithms and MST. 
11 
11/8. Introduction
to randomized algorithms. 11/10. Introduction to string algorithms. 

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

15 
Final exam. 