Week 
Lectures 
Homework 
1 
Stable matching problem: a motivating example. Asymptotic notations.  HW1. Stable
matching, basic algorithm design and analysis. 
2 
Common running time. Basic graph algorithms: BFS and DFS  HW2. Asymptotic notations. Running time analysis. 
3 
More DFS
and its applications. Greedy algorithms. 
HW3. Basic graph algorithms. Greedy algorithm 
4 
Greedy algorithm (cont.). Heap.  
5 
Divide and
conquer. Still more on divide and
conquer: 
HW4. Divide and conquer 
6 
Midterm exam 1. More on divide and conquer. 
Programming assignment 1: implement divide and conquer algorithm 
7 
Dynamic programming  HW5. Dynamic programming 
8 
More
dynamic programming. 

9 
Still more
dynamic programming. 

10 
Shortest
path problem. Midterm exam 2. 
Programming assignment 2: dynamic programming 
11 
Randomized
algorithms 
HW6. Shortest
path 
12 
NP completeness: proofs.  HW7. Randomized algorithms 
13 
NP
completeness. 
HW8. NP completeness 
14 
Algorithms
for coping with NP complete problems. 

15 
Final exam. 