Princeton University
Computer Science Dept.

Computer Science 423
Theory of Algorithms

Michael Goldwasser

Spring 1998


Theory of Algorithms is an intermediate course on the design and analysis of algorithms. For the first half of the course, we will focus both on presenting general techniques for designing efficient algorithms, as well as on models and methods for comparing different algorithms by formally analyzing their complexity (e.g. running time, use of space, quality of output).

Later in the course, we will examine several other models for computation, such as when we allow our algorithms the use of randomization or parallelism, or when we restrict the information given to our algorithms. We will also ask the question of whether or not there exist problems for which there are no efficient techniques. This will lead us to the notion of NP-Completeness, and we will see examples of many such problems which are believed to be impossible to solve efficiently. For several of these problems, however, we will show that there are efficient algorithms which are able to find a solution which has cost reasonably close to the optimal.


Prerequisites: The official prerequisite for this course is cs226 (Algorithms and Data Structures) as well as cos341 (Discrete Mathematics). During this course, we will be designing many advanced data structures and algorithms, and the background in algorithms and data structures will be necessary for two reasons. Many of our algorithms will need to use more basic data structures as building blocks, and although we will try when possible to review the earlier material, we expect that students will have seen many of these concepts previously. Even for entirely new material, we expect students to be able to think about how to describe an algorithm, an argue about why it works, and how much time it takes. In addition, a solid background in mathematics will prove invaluable for this course, in that we will argue rigorously about the correctness and performance of almost every algorithm and data structure we introduce. The ability to write clear and formal proofs will be relied upon heavily throughout the course.


cos423 Class Page
Michael Goldwasser
wass@cs.princeton.edu
Last modified: February 5, 1998