# Lecture
Topics

**8/23—Introduction**

*Reading:* §1.2

**8/25—Stable
matching: Gale–Shapley algorithm**

*Reading:* §1.1

**8/28—Greedy Algorithms I: Interval scheduling **

*Reading:* §4.1

**8/30—Greedy Algorithms II: Scheduling to minimize lateness**

*Reading:* §4.2

**8/31— Homework
1 due (on data structures and stable matching) **

**9/1—Greedy Algorithms III: Minimum spanning tree**

*Reading:* §4.5

**9/4—Labor
Day, no class **

**9/6—Dynamic Programming I: weighted interval scheduling**

*Reading:* §6.1-6.2

**9/7— Homework
2 due (on greedy algorithms) **

**9/8—Dynamic Programming II: segmented least squares**

*Reading:* §6.3

**9/11—Dynamic programming III: Sequence Alignment**

*Reading:* §6.6

**9/13—Dynamic programming IV: Knapsack Algorithm **

*Reading:* §6.4

**9/14— Homework
3 due (on dynamic programming I) **

**9/15—Dynamic programming V: Bellman Ford Algorithm **

*Reading:* §6.8

**9/18—Divide and Conquer I: Integer Multiplication **

*Reading:* §5.2 and 5.5

**9/20—Randomized Divide and Conquer: Median Finding**

*Reading:* §13.5

**9/21— Homework
4 due (on dynamic programming II +probability) **

**9/22—Radomized Algorithms II: Finding a min-cut in a graph**

*Reading:* §13.2

**9/25—more on min cuts in a graph, and probabilities and expectations**

*Reading:* §13.2 and 13.3

**9/27—Divide and Conquer III: Sequence Alignment in Linear Space**

*Reading:* §6.7

**9/28— Homework
5 due (on divide and counquer and randomized algorithms) **

**9/29—Randomized Algorithms III: Hashing**

*Reading:* §13.6

**10/2—Randomized Algorithms IV: Prime Testing **

*Reading:*
Supplementary Notes

**10/4—Network Flows I: Introduction**

*Reading:* §7.1

**10/6—Network Flows II: Flows and Cuts**

*Reading:* §7.2

**10/9-10—Fall Break**

**10/11—Prelim Review**

**10/12—Prelim at 7:30pm**

**10/13—Network Flows III: running time and Application to Matching**

*Reading:* §7.5

**10/16—Network Flows IV: Applications of min cuts **

*Reading:* §7.10

**10/18—Network Flows V: extensions of flow, and other applications **

*Reading:* §7.7

**10/19— Homework
6 due (on flows and cuts) **

**10/20—NP-Completeness I: Reductions between problems: Independent Set and Vertex Cover**

*Reading:* §8.1

**10/23—NP-Completeness II: More Reductions: Satisfiability (SAT) and definition of NP**

*Reading:* §8.2 and 8.3

**10/25—NP-Completeness III: Proving problems NP-complete, Clique, Set Cover, 3-SAT**

*Reading:* §8.4

**10/26— Homework
7 due (flows applications and reduction) **

**10/27—NP-Completeness IV: the Traveling Salesman Problem (TSP)**

*Reading:* §8.5

**10/30—NP-Completeness V: Partitioning problems **

*Reading:* §8.6

**11/1—NP-Completeness V: Subset Sum**

*Reading:* §8.8

**11/2— Homework
8 due (on NP-completeness) **

**11/3—NP and co-NP and other complexity classes **

*Reading:* §8.9 and 8.10

**11/6—Prelim Review**

**11/7—Prelim at 7:30pm**

**11/8—Introduction to Turing Machines **

*Reading:* Sections 1 and 2 from the Notes on Turing Machines

**11/10—Universal Turing Machines **

*Reading:* Sections 3 from the Notes on Turing Machines

**11/13—Undecidable Problems**

*Reading:* Sections 4 from the Notes on Turing Machines

**11/15—SAT is NP-complete**

*Reading:* Sections 5 from the Notes on Turing Machines

**11/16— Homework
9 due (on Computability) **

**11/17-Approximation Algorithm I: Simple Greedy Algorithms **

*Reading:* Introduction to Chapter §11 and Section 2 of the notes on Greedy Approximation Algorithms

**11/20-Approximation Algorithm II: Using Linear Programming **

*Reading:* §11.6

**11/27-Approximation Algorithm III: Center Selection **

*Reading:* §11.2

**11/29-Approximation Algorithm IV: Online Matching**

*Reading:* Section 1 of the notes on Greedy Approximation Algorithms

**11/30— Homework
10 due (on Approximation Algorithms) **

**12/1-Final Review**

**12/11 at 2-4:30pm—Final exam**