Computer Sciences Dept.

CS 787 - Advanced Algorithms

Fall 2004
Picture of Al-Khwarizmi

Course Description

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 otherwise mastered that material either, I recommend you take CS 577 instead.

Course Work

  • 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):

  • 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.
In case you need to refresh some of the material of CS 577, the following reference is also on reserve (2-hour loan):
  • Cormen, Leiserson, Rivest, and Stein, Introduction to Algorithms, QA76.6 C662 2001.

Computer Sciences | UW Home