Announcements | Course Staff | Course Outline | Assessment | Homeworks | Notes and Handouts |
There is a significant dynamic component to the course, as topics drop in and out, or get longer or shorter treatment, depending on audience interest/reaction/resistence. We consider this a feature. Given this, here is a rough outline (notice how detailed and accurate it is for the first ten lectures!-):
Lectures 1-2: Introduction and SAT, depth-first search, strongly connected componnents, graph structure. References: Any algorithms book like [CLR].
Lectures 3-4-5 : Shortest paths (Dijkstra, negative edges, transitive closure) and maximum flows (max-flow min-cut, duality and linear programming, preflow-push algorithm). Reference: [CLR], book by [Papadimitriou and Steiglitz], book (and handout) by [Ahuja, Magnanti, and Orlin].
Lectures 6-7-8 : Linear Programming. Algorithms; simplex, Seidel's, interior point.
Lectures 9-10 : Randomized algorithms for min cuts, fingerprinting, polynomial equivalence. Reference: Book (and handout) by [Motwani and Raghavan].
Lectures 11-12-13 : Divide-and-conquer, mostly with geometric applications, but also sorting, selection, duplicate detection. Reference: [CLR].
Lectures 14-15-16 Dynamic programming. Reference: [CLR].
Lectures 17-18 NP-completeness. Reference: [CLR].
Lectures 19-20-21 Heuristics (Approximation algorithms, branch-and-bound and backtracking, local search and simulated annealing, etc.). Reference: [CLR], book by [Hochbaum], book (and handout) by [Lewis and Papadimitriou]
Lectures 22 PCP Application and Theorem.
Lectures 23-24-25-26-27 Other topics. Possiblities include coding theory, chernoff bounds, balls in bins anaylsis, fft.
Project presentations. During the last weeks of the class we shall present a selection of the projects, and lead the class in addressing questions related to them.