| Date | 
Topic | 
Reading | 
Lecture Notes | 
Problem session (if any) | 
| Jan 11 | 
Syllabus, big-O review | 
Any discrete math book | 
Lecture 1 | 
  | 
| Jan 13 | 
Induction | 
Any discrete math book | 
Lecture 2 | 
  | 
| Jan 15 | 
Recurrences | 
Recurrences | 
Lecture 3 | 
  | 
| Jan 18 | 
No class - MLK day | 
 | 
 | 
  | 
| Jan 20 | 
Heaps (and pseudocode) | 
Section 2.5 | 
Lecture 4 | 
  | 
| Jan 22 | 
Intro to graphs | 
Chapter 3.1   
Graph notes  | 
Lecture 5 | 
  | 
| Jan 25 | 
Breadth First Search | 
Chapter 3.2   
Graph 
notes  | 
Lecture 6 | 
  | 
   
| Jan 27 | 
Depth First Search | 
Chapter 3.3, 3.4   Graph
notes  | 
Lecture 7 | 
  | 
| Jan 29 | 
Divide and Conquer:  Subset Sum | 
Divide and Conquer Notes, Sec. 2.2  | 
Lecture 8 | 
  | 
| Feb 1 | 
Divide and Conquer:  Counting inversions | 
Chapter 5.2-5.3 of book | 
Lecture 9 | 
  | 
| Feb 3 | 
Divide and Conquer:  Closest Pair of Points | 
Chapter 5.4 of book | 
Lecture 10 | 
  | 
| Feb 5 | 
Divide and Conquer:  Multiplication | 
Lecture Notes on Recursion, Sections 1.7 and 1.8 | 
Lecture 11 | 
  | 
| Feb 8 | 
Greedy Algorithms:  Interval Scheduling | 
Chapter 4.1 of book  
Lecture Notes on Greedy Algorithms, Section 4.2 | 
Lecture 12 | 
  | 
| Feb 10 | 
Greedy Algorithms:  Processor Scheduling | 
Chapter 4.2 of book | 
Lecture 13 | 
  | 
| Feb 12 | 
Greedy Algorithms:  Huffman codes | 
Lecture Notes on Greedy Algorithms, Section 4.4 | 
Lecture 14 | 
  | 
| Feb 15 | 
Greedy Algorithms:  Huffman codes   Shortest Paths | 
Lecture Notes on Greedy Algorithms, Section 4.4 | 
Lecture 15 | 
  | 
| Feb 17 | 
Greedy Algorithms:   Shortest Paths | 
Chapter 4.4 of book | 
Lecture 16 | 
  | 
| Feb 19 | 
Greedy Algorithms:   Minimum Spanning Trees | 
Chapter 4.5 of book | 
Lecture 17 | 
  | 
| Feb 22 | 
Union-Find | 
Union Find notes Chapter 4.6 of text | 
Lecture 18 | 
  | 
| Feb 24 | 
Dynamic Programming: Intro | 
Chapter 6.1 of book Dynamic Programming Notes, Sec. 3.1-3.4  | 
Lecture 19 | 
  | 
| Feb 26 | 
Dynamic Programming:   Edit Distance | 
Sec. 3.5 of Dynamic Programming Notes | 
Lecture 20 | 
  | 
| March 1 | 
DP: Longest Increasing Subsequence | 
Sec. 3.9.2 of Dynamic Programming Notes | 
Lecture 21 | 
  | 
| March 3 | 
DP: Independent Set | 
Sec. 3.7 of Dynamic Programming Notes | 
Lecture 22 | 
  | 
| March 5 | 
DP: Subset Sum  The Halting Problem | 
Sec. 3.9.1 of Dynamic Programming Notes | 
Lecture 23 | 
  | 
| March 15 | 
Problem Session Day | 
 | 
 | 
Worksheet | 
| March 17 | 
Review Session in class | 
 | 
 | 
  | 
| March 19 | 
Midterm | 
 | 
 | 
  | 
| March 22 | 
Recap of midterm   P versus NP | 
 NP-Hardness Notes, Sec. 1-3 Chapter 8 of book | 
Lecture 24 | 
 | 
| March 24 | 
Satisfiability and Reductions | 
NP-Hardness Notes, Sec. 4-5 Chpater 8 of book | 
Lecture 25 | 
  | 
| March 26 | 
More reductions | 
NP-Hardness Notes Chpater 8 of book | 
Lecture 26 | 
  | 
| March 29 | 
Graph reductions | 
 NP-Hardness Notes Chapter 8 of book | 
Lecture 27 | 
 | 
| March 31 | 
Work day on reductions | 
NP-Hardness Notes Chpater 8 of book | 
 | 
Worksheet | 
| April 2 | 
No class | 
Off for Good Friday | 
 | 
  | 
| April 5 | 
No class | 
Off for Easter Monday | 
 | 
  | 
| April 7 | 
Approximation: Minimizing makespan | 
 Approximation Notes Chapter 11.1 of book | 
Lecture 28 | 
 | 
| April 9 | 
Approximation: Vertex Cover | 
 Approximation Notes | 
Lecture 29 | 
 | 
| April 12 | 
Approximation: TSP | 
 Approximation Notes | 
Lecture 30 | 
 | 
| April 14 | 
Network Flow: Part 1 | 
 Chapter 7 of text Max Flow Notes | 
Lecture 31 | 
 | 
| April 16 | 
Network Flow: Part 2 | 
 Chapter 7 of text Max Flow Algorithms | 
Lecture 32 | 
 | 
| April 19 | 
Network Flow Applications | 
 Chapter 7 of text | 
Lecture 33 | 
 | 
| April 21 | 
Circulations | 
 Chapter 7 of text | 
Lecture 34 | 
 | 
| April 23 | 
More Network Flow applications | 
 Chapter 7 of text | 
Lecture 35 | 
 |