CS 787 - Advanced Algorithms
This is an advanced course in the design and analysis of algorithms.
The main focus is on techniques for constructing algorithms for NP-hard
problems, and on tools to reason about their correctness and efficiency.
After a quick review of basic algorithmic design paradigms and the notion
of NP-completeness, we will spend most of the course on approximating
NP-hard optimization problems. We will also discuss techniques for
exact and heuristic solutions to such problems.
The material we cover will bring you close to the frontier of current
research in algorithms. Time permitting, we may cover elements of
algorithmic game theory, a new hot topic in the algorithms community.
There is no required text.
Lecture notes will be made available from the course web page.
CS 577 (Introduction to Algorithms) and, by transitivity,
CS 367 (Data Structures) and CS 240 (Discrete Mathematics).
If you have never taken an algorithms course before and haven't
either, I recommend you take CS 577 instead.
- Scribes (20%).
Write lecture notes for about 3 lectures in groups of 2. Someone who
missed the class should be able to learn the material from the notes.
We expect a draft within 24 hours after the lecture, and the final version
a week later. You need to type your notes in LaTeX using the
guidelines we provide.
- Homework (80%).
There will be 4 assignments. Expect the problems to be challenging so
start early. You are allowed to discuss the problems in group but you
should write out the solutions on your own and give credit to your
collaborators. The last homework will be assigned during the last week
of the semester.
The following books are on reserve in Wendt library (3-day loan):
In case you need to refresh some of the material of CS 577, the following
reference is also on reserve (2-hour loan):
Vazirani, Approximation Algorithms,
QA76.9 A43 V39 2003.
Hochbaum, Approximation Algorithms for NP-hard Problems,
T57.7 A68 1997.
Motwani and Raghavan, Randomized Algorithms,
QA274 M68 1995.
- Cormen, Leiserson, Rivest, and Stein,
Introduction to Algorithms,
QA76.6 C662 2001.