Stable matching: Gale–Shapley algorithm

Reading: §1.1

Greedy algorithms I: Interval scheduling

Reading: §4.1

Greedy algorithms II: Minimizing lateness

Reading: §4.2

Greedy algorithms III: Minimum Spanning Tree

Reading: §4.5–4.6,

Greedy algorithms IV: Union-find data structure

Reading: §4.6

Dynamic programming I: Weighted interval scheduling

Reading: §6.1

Dynamic programming II: Sequence alignment

Reading: §6.6

Dynamic programming III: RNA secondary structure prediction

Reading: §6.5

Dynamic programming IV: Bellman–Ford algorithm

Reading: §6.8

(Feburary break)

Divide-and-conquer I: Closest pair of points

Reading: §5.4

Divide-and-conquer II: Integer multiplication

Reading: §5.5

Divide-and-conquer III: Randomized Median Finding

Reading: §13.5

(Prelim I)

Network flow I

Reading: §7.1

Network flow II

Reading: §7.2

Network flow III

Reading: §7.7

Network flow IV

Reading: §7.5

Network flow V

Reading: §7.12

Network flow VI

Reading: §7.11

NP-completeness I: Polynomial-time reductions

Reading: §8.1

NP-completeness II: Independent Set

Reading: §8.2–8.4

NP-completeness III: Hamiltonian Circuit

Reading: §8.5

NP-completeness IV: Subset Sum

Reading: §8.8

NP-completeness V: Max Cut; P vs NP question


Computability I: Models of computation, Turing machine

(notes, §1)

Computability II: Examples, Church–Turing thesis

(notes, §3)

Computability III: Universal Turing machine

(notes, §4)

(Spring break)

Computability IV: Decidable and Semidecidable Problems

(notes, §2)

Computability V: Undecidable Problems

(notes, §4)

(Prelim II)

Computability VI: Rice’s theorem

(notes, §5–7)

Complexity I: Cook–Levin Theorem

Complexity II: P vs NP question, Complexity Landscape

Approximation algorithms I: Introduction, Vertex Cover

Reading: §10.1

Approximation algorithms II: Set Cover, Pricing Method

Reading: §11.3

Approximation algorithms III: Weighted Vertex Cover, Pricing Method

Reading: §11.4

Approximation algorithms IV: Knapsack Approximation Scheme

Reading: §11.8

Linear Programming I: Introduction

Reading: §11.6

Linear Programming II: Randomized Rounding for Max Coverage


Convex Programming I: (Sub-)gradient Descent


Convex Programming II: Strong Convexity


Convex Programming III: Machine Learning Applications