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

4 
Lect. 7. Probabalistic
analysis. Lect. 8. Heapsort. 
HW3. Divide and conquer and probabilistic analysis 
5 
Lect. 9. Lower
bound,
quicksort, and counting sort. Lect. 10. Greedy algorithms. 

6 
Midterm exam 1. Lect.11. Greedy algorithm and dynamic programming. 
HW4. Greedy algorithm and dynamic programming 
7 
Lect. 12.
Dynamic programming (cont.) Lect. 13. Dynamic programming (cont.) 

8 
Lect. 14.
More dynamic programming Lect. 15. Basic graph algorithms: BFS and DFS 
HW5. Dynamic programming 
9 
Lect. 16.
More
DFS and its applications. Lect. 17. Minimum spanning tree. (MST) 

10 
Lect. 18 Shortest
path. Midterm exam 2. 
HW6. Basic graph algorithms and MST. 
11 
Lect. 19.
Introduction
to randomized algorithms. Lect. 20. Introduction to algorithms on text and strings. 

12 
Lect. 21.
Algorithms with numbers. Lect. 22. Concept of NP completeness. 
HW7. Shortest path and more. 
13 
Lect. 23.
NP problems. Lect. 24. NP completeness: proofs. 
HW8. NP completeness. 
14 
Lect. 25.
NP completeness: proofs Lect. 26. Cope with NP completeness: heuristics, speical instances and approximation. 

15 
Final exam. 