Lecture Topics (tentative)

1/23 — Introduction

Reading: §1.2

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

Reading: §1.1

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

Reading: §1.1


1/30 — Greedy algorithms I: Interval Scheduling

Reading: §4.1 (suggested reading: §4.2)

2/1 — Greedy algorithms II: Minimum Spanning Tree 1

Reading: §4.5

2/4 — Greedy algorithms III: Minimum Spanning Tree 2

Reading: § 4.6

2/6 — Greedy algorithms III: Huffman Codes and Data Compression

Reading: §4.8


2/8 — Dynamic programming I: Weighted Interval Scheduling, Part 1

Reading: §6.1

2/11 — Dynamic programming I: Weighted Interval Scheduling, Part 2

Reading: §6.1

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

Reading: §6.4

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

Reading: §6.8

2/18 — Dynamic programming III: RNA Secondary Structure

Reading: §6.5


2/20 — Review for Prelim 1


2/22 — Divide and Conquer I: Multiplying Integers

Reading: §5.5

2/25 — No class due to February break

2/27 — Divide and Conquer II: Fast Fourier Transform

Reading: §5.6

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

Reading: §5.4


3/4 — Network Flow I: Definition

Reading: §7.1

3/6 — Network Flow II: Ford-Fulkerson

Reading: §7.2

3/8 — Network Flow III: Max-Flow Min-Cut theorem

Reading: §7.2

3/12 — Network Flow IV: Reductions to Max-flow problem

Reading: §7.5, 7.7

3/14 — Network Flow V: Project Selection

Reading: §7.11

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

Reading: Lecture notes on the Edmonds-Karp Algorithm


3/18 — NP-Completeness I: 3SAT

Reading: §8.1, 8.2

3/20 — NP-Completeness II: Independent Set

Reading: §8.1, 8.2

3/22 — NP-Completeness III: Clique, Vertex Cover

Reading: §8.3,8.4

3/25 — NP-Completeness IV: Hamoltonian Cycle, Traveling Salesman Problem

Reading: §8.5

3/27 — NP-Completeness V: Subset Sum

Reading: §8.8

3/29 — NP-Completeness VI: Panorama of Complexity Classes

Reading: §8.9, 8.10


4/8 — Review for Prelims 2


4/10 — Computability Theory I: Turing Machine Definitions

Reading: Notes on Computability, §1,2,3

4/13 — Computability Theory II: Turing Machines & SJava

Reading: Notes on Computability, §3,4

4/15 — Computability Theory III: Universal SJava, Uncomputabillity

Reading: Notes on Computability, §5,6

4/17 — Computability Theory IV: Diagonalization and Undecidability of the Halting Problem

Reading: Notes on Computability, §7

4/19 — Computability Theory V: Undecidability by Reductions, Rice's Theorem

Reading: Notes on Computability, §8,9,10

4/22 — Computability Theory VI: Cook-Levin Theorem

Reading: Notes on Computability, §11


4/24 — Approximation Algorithms I: Greedy approximation algorithms

Reading: §11.1, 11.3

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

Reading: §11.6

4/29 — Approximation Algorithm IV: Knapsack Problem

Reading: §11.8


5/1 — Randomized Algorithms I: Max-Cut

Reading: Notes on Max-cut

5/3 — Randomized Algorithms II: Miller-Rabin Primality Testing

Reading: Notes on Miller-Rabin Primality testing

5/6 — Randomized Algorithms III: Karger's Min-Cut Algorithm

Reading: § 13.2