Lecture Topics (tentative)

Mon, Jan 22— Course Intro: Tiling Problems (Notes)

Reading: KT § 1.2

Wed, Jan 24— Stable Matching I: Gale-Shapley Algorithm (Notes)

Reading: KT § 1.1

Fri, Jan 26— Stable Matching II: Analyzing Gale-Shapley (Notes)

Reading: KT § 1.1

Mon, Jan 29— Greedy Stays Ahead: Interval Scheduling (Notes)

Reading: KT § 4.1

Wed, Jan 31— Exchange Arguments: The Cut Lemma (Notes)

Reading: KT § 4.5 (see also, § 4.2)

Fri, Feb 2— Algorithms for Minimum Spanning Tree (Notes)

Reading: KT § 4.5

Mon, Feb 5— Fast Implementation of Kruskal's and Prim's Algorithms (Notes)

Reading: KT § 4.6 (optional additional reading: § 4.8 on Huffman coding, a greedy algorithm for lossless data compression)

Wed, Feb 7— Introduction to Dynamic Programming (Notes)

Reading: Lecture Reading and KT § 6.1-6.2 (Recommended)

Fri, Feb 9— Sequence Alignment via Minimum Edit Distance (Notes)

Reading: KT § 6.6

Mon, Feb 12— Shortest Paths: Bellman-Ford Algorithm (Notes)

Reading: KT § 6.8 (optional additional reading: § 6.9 on distance vector protocols)

Wed, Feb 14— RNA Folding (Notes)

Reading: KT § 6.5

Fri, Feb 16— Introduction to Divide and Conquer (Notes)

Reading: KT § 5.1-5.3

Mon, Feb 19— Karatsuba Integer Multiplication (Notes)

Reading: KT § 5.5

Wed, Feb 21— Multiplying Polynomials and Convolution (Notes)

Reading: KT § 5.6

Fri, Feb 23— The Fast Fourier Transform (Notes)

Reading: KT § 5.6

Mon, Feb 26— Feb Break (No Class)

Wed, Feb 28— Randomized Median Finding (Notes)

Reading: KT § 13.5 and 13.3 (Review)

Fri, Mar 1— Analyzing Randomized Median (Notes)

Reading: KT § 13.5 and 13.3 (Review)

Mon, Mar 4— Network Flow I: Problem Definitions (Notes)

Reading: KT § 7.1

Wed, Mar 6— Network Flow II: The Ford-Fulkerson Algorithm (Notes)

Reading: KT § 7.1-7.2

Fri, Mar 8— Network Flow III: Ford-Fulkerson and the Max-Flow Min-Cut Theorem (Notes)

Reading: KT § 7.1-7.2

Mon, Mar 11— Network Flow IV: Max-Flow Min-Cut and Max Bipartite Matching (Notes)

Reading: KT § 7.5

Wed, Mar 13— Network Flow V: Max Flow Reductions (Notes)

Reading: KT § 7.7, 7.12

Fri, Mar 15— Network Flow VI: Min Cut Reductions (Notes)

Reading: KT § 7.10-7.11

Mon, Mar 18— NP-Completeness I: SAT and 3-SAT (Notes)

Reading: KT § 8.1-8.2

Wed, Mar 20— NP-Completeness II: Graph Problems (Notes)

Reading: KT § 8.1-8.2

Fri, Mar 22— NP-Completeness III: Hamiltonian Cycle (Notes)

Reading: KT § 8.5

Mon, Mar 25— NP-Completeness IV: Hamiltonian Cycle Continued (Notes)

Reading: KT § 8.5

Wed, Mar 27— NP-Completeness V: SAT is Hard (Notes)

Reading: KT § 8.4

Fri, Mar 29— NP-Completeness VI: Towards Faster SAT Algorithms (Notes)

Mon, Apr 8— No Class

Wed, Apr 10— Computability I: Turing Machines (Notes)

Reading: Lecture Reading TM Notes § 1-2

Fri, Apr 12— Computability II: Turing Machine Examples (Notes)

Reading: Lecture Reading TM Notes § 1-2

Mon, Apr 15— Computability III: Universal Turing Machine (Notes)

Reading: Lecture Reading TM Notes § 3-4

Wed, Apr 17— Computability IV: Computability and Undecidability (Notes)

Reading: Lecture Reading TM Notes § 4

Fri, Apr 19— Computability V: The Halting Problem and Computability Reductions

Reading: Lecture Reading TM Notes § 4-6

Mon, Apr 22— Computability VI: Rice's Theorem (Notes)

Reading: Lecture Reading TM Notes § 6-7

Wed, Apr 24— Greedy Approximation for Max Cut (Notes)

Reading: KT § 11.1 and 12.4

Fri, Apr 26— Integer and Linear Programming (Notes)

Reading: KT § 11.6

Mon, Apr 29— FPTAS for Knapsack (Notes)

Reading: KT § 11.8

Wed, May 1— Intro to Cryptography (Notes)

Reading: Lecture Reading Crypto Notes § 1-2

Fri, May 3— Diffie-Hellman Key Exchange (Notes)

Reading: Lecture Reading Crypto Notes § 3

Mon, May 6— Program Checking (Notes)