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. 
Programming
assignment 1: implementing algorithms and evaluate running
time 
4 
Greedy algorithm (cont.). Divide and conquer  HW3. Basic
graph algorithms. Greedy algorithm 
5 
More on divide and conquer. Still more on divide and conquer: FFT.  HW4. Divide and conquer 
6 
Midterm exam 1. Dynamic programming 

7 
More on dynamic programming  HW5. Dynamic programming 
8 
Still more
dynamic programming. 
Programming assignment 2. Dynamic programming 
9 
Network
flows 
HW6. Network flows 
10 
Concept of
NP completeness. Midterm exam 2. 

11 
NP problems. NP completeness: proofs.  
12 
NP completeness: proofs. Cope with NP completeness: heuristics and speical instances.  HW7. NP completeness. 
13 
Approximation
algorithms. 
HW8. Coping with NP completeness. 
14 
Introduction
to randomized algorithms. 

15 
Final exam. 