Week 
Lectures 
Homework 
1 
1/18. Stable
matching problem: a motivating example 1/20. Basics of algorithm analysis. 

2 
1/25. Asymtotic
notations. 1/27. Common running time. 
HW1. Stable matching, asymtotic notations and basic analysis amd more. 
3 
2/1. Divide
and conquer. 2/3. Divide and conquer (cont.) 

4 
2/8. Probabalistic
analysis. 2.10. Heapsort. 
HW2. Divide and conquer and probabilistic analysis 
5 
2.15. Quicksort,
radix sort and counting sort. 2.17. Midterm exam 1. 

6 
2.24. Data
structure and
algorithms. 2/26. Greedy algorithms. 
HW3. Sorting and
applications 
7 
3/1. Greedy
algorithm and dynamic programming. 3/3. Dynamic programming (cont.) 

8 
3/15. Dynamic
programming (cont.) 3/17. More dynamic programming 
HW4. Greedy
algorithm and dynamic
programming 
9 
3/22. Basic
graph algorithms: BFS and DFS 3/24. More DFS and its applications. 

10 
3/29. Midterm exam 2. 3/31. Minimum spanning tree. (MST) 
HW5. Basic graph algorithms and MST. 
11 
4/5. Shortest
path. 4/7. Introduction to randomized algorithms. 

12 
4/12.
Algorithms with numbers. 4/14. Concept of NP completeness. 
HW6. Shortest path and more. 
13 
4/19. NP
problems. 4/21. NP completeness: proofs. 

14 
4/26. NP
completeness: proofs 4/28. Cope with NP completeness: heuristics, speical instances and approximation. 
HW7. NP completeness. 
15 
Final exam. 