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


5/10 — Review