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