Lecture Topics (tentative)

Video recordings of all the lectures can be found on videonote .

1/24 — Introduction

Reading: §1.2

1/26 — Stable matching I: Gale–Shapley algorithm

Reading: §1.1

1/29 — Stable matching II: Analysis of Gale–Shapley

Reading: §1.1


1/31 — Greedy algorithms I: Interval Scheduling

Reading: §4.1

2/2 — Greedy algorithms II: Minimizing Lateness

Reading: §4.2

2/5 — Greedy algorithms III: Minimum Spanning Tree

Reading: §4.5, 4.6


2/7 — Dynamic programming I: Weighted Interval Scheduling

Reading: §6.1

2/9 — Dynamic programming II: Subset Sums and Knapsacks

Reading: §6.4

2/12 — Dynamic programming III: RNA Secondary Structure

Reading: §6.5

2/14 — Dynamic programming IV: Shortest Paths in a Graph

Reading: §6.8


2/23 — Review of Material for Prelim 1


2/26 — Divide and Conquer I: Multiplying Integers

Reading: §5.5

2/28 — Divide and Conquer II: Counting Inversions

Reading: §5.3

3/2 — Divide and Conquer III: Closest Pair of Points in the Plane

Reading: §5.4


3/5 — Network Flow I: Definition

Reading: §7.1

3/7 — Network Flow II: Ford-Fulkerson

Reading: §7.2

3/9 — Network Flow III: Bipartite Matching

Reading: §7.5

3/12 — Network Flow IV: Baseball Elimination

Reading: §7.12

3/14 &mash; Network Flow V: Image Segmentation

Reading: §7.10

3/16 — Network Flow VI: The Edmonds-Karp Algorithm

Reading: Lecture notes on the Edmonds-Karp Algorithm


3/19 — NP-Completeness I: 3SAT

Reading: §8.1, 8.3, 8.4 (first half)

3/21 — NP-Completeness II: Independent Set, Clique, Vertex Cover

Reading: §8.2, 8.4 (second half)

3/23 — NP-Completeness III: Hamiltonian Cycle, Traveling Salesman

Reading: §8.5

3/26 — NP-Completeness IV: 3-Dimensional Matching

Reading: §8.6

3/28 — NP-Completeness V: Subset Sum

Reading: §8.8

3/30 — NP-Completeness VI: Review, Panorama of Complexity Classes

Reading: §8.9, 8.10


4/9 — Computability Theory I: Turing Machine Definitions

Reading: Notes on Turing Machines, §1,2

4/11 — Prelim 2 Review

Reading: None

4/13 — Computability Theory II: Multi-Tape Turing Machines

Reading: Notes on Turing Machines, §3

4/16 — Computability Theory III: Universal Turing Machine

Reading: Notes on Turing Machines, §3

4/18 — Computability Theory IV: Diagonalization

Reading: Notes on Turing Machines, §4

4/20 — Computability Theory V: Undecidability of the Halting Problem

Reading: Notes on Turing Machines, §4

4/23 — Computability Theory VI: More on undecidability; Rice's Theorem

Reading: Notes on Turing Machines, §4


4/25 — Approximation Algorithms I: Greedy approximation algorithms

Reading: §11.1, 11.3

4/27 — Approximation Algorithms II: Dynamic programming and rounding

Reading: §11.8

4/30 — Approximation Algorithms III: Linear programming and rounding

Reading: §11.3

5/2 — Approximation Algorithms IV: Primal-dual

Reading: §11.4