Lecture Topics (tentative)
1/25 — Introduction & Tiling
Reading: §1.2
1/27 — Stable matching: Gale–Shapley algorithm
Reading: §1.1
1/30 — Stable matching: Gale–Shapley algorithm (continued)
2/1 — Greedy algorithms I: Interval Scheduling
Reading: §4.1
2/3 — Greedy algorithms II: Minimizing Lateness
Reading: §4.2
2/6 — Greedy algorithms III: Minimum Spanning Tree
Reading: §4.5
2/8 — Dynamic programming I: Weighted Interval Scheduling
Reading: §6.1
2/10 — Dynamic programming II: Weighted Interval Scheduling (continued)
2/13 — Dynamic programming III: Subset Sums and Knapsacks
Reading: §6.4
2/15 — Dynamic programming IV: RNA Secondary Structure
Reading: §6.5
2/17 — Dynamic programming V: Shortest Paths in a Graph
Reading: §6.8
2/22 — Divide and Conquer I: Counting Inversions
Reading: §5.3
2/24 — Divide and Conquer II: Closest Pair of Points in the Plane
Reading: §5.4
2/27 — Review of Material Prelim 1
3/1 — The Maximum-Flow Problem I: Definition
Reading: §7.1
3/3 — The Maximum-Flow Problem II: Ford-Fulkerson
Reading: §7.2
3/6 — The Maximum-Flow Problem III: Min Cut, Bipartite Matching
Reading: §7.2, §7.5
3/8 — The Maximum-Flow Problem IV: Bipartite Matching, Hall's Theorem, Extensions to Max Flow
Reading: §7.5, §7.7
3/10 — The Maximum-Flow Problem IV: Bipartite Matching, Hall's Theorem, Extensions to Max Flow (continued)
Reading: §7.5, §7.7
3/13 — The Maximum-Flow Problem V: Airline Scheduling
Reading: §7.9
3/15 — The Maximum-Flow Problem VI: Project Selection
Reading: §7.11 (class was cancelled --- you are responsible for reading the section of the textbook)
3/17 — The Maximum-Flow Problem VI: Max Flow Algorithm Revisited
Reading: notes on Edmonds-Karp
3/20 — NP-Completeness I: 3SAT
Reading: §8.1, §8.4
3/22 — NP-Completeness II: Independent Set
Reading: §8.2, §8.3
3/24 — NP-Completeness III: Vertex Cover, Set Cover, Clique
Reading: §8.1, §8.8
3/27 — NP-Completeness IV: P, NP, NP-Complete
Reading: §8.3
3/29 — NP-Completeness V: Subset Sum
Reading: §8.8
3/31 — NP-Completeness VI: Steiner Tree
4/10 — Turing Machines I: Introduction
Reading: Sections 1 and 2 from Notes on Turing Machines
4/12 — Review of Material Prelim 2
4/14 — Turing Machines II: Universal Turing Machine
Reading: Section 3 from Notes on Turing Machines
4/17 — Turing Machines III: Universal Turing Machine (cont.)
Reading: Section 3 from Notes on Turing Machines
4/19 — Turing Machines IV: Cardinality of TMs and Languages
Reading: Section 4 from Notes on Turing Machines
4/21 — Turing Machines V: Undecidability and Halting Problem
Reading: Section 4 from Notes on Turing Machines
4/24 — Turing Machines VI: Rice's Theorem
Reading: Section 4 from Notes on Turing Machines
4/26 — Turing Machines VII: Cook-Levin Theorem
Reading: Section 5 from Notes on Turing Machines
4/28 — Approximation Algorithms I: A Load Balancing Problem
Reading: §11.1
5/1 — Approximation Algorithms II: Knapsack
Reading: §11.8
5/3 — Approximation Algorithms III: Vertex Cover and Linear Programming
Reading: §11.6
5/5 — Approximation Algorithms IV: Greedy Revisited
Reading: §11.2
5/8 — Approximation Algorithms V: Vertex Cover and the Primal-Dual Method
Reading: §11.4