15-855 (A) AN INTENSIVE INTRODUCTION TO COMPUTATIONAL COMPLEXITY THEORY
Guruswami/O'Donnell
12 Units
SPRING 2009

DESCRIPTION:
This is a graduate course on the theory of computational complexity.
Complexity theory is the study of how much of a resource (such as
time, space, parallelism, randomness, quantum entaglement...) is
required to perform some of the computations that interest us the
most. In a standard algorithms course, one concentrates on giving
resource-efficient methods to solve interesting problems. In this
course, we concentrate on techniques that prove or suggest that there
are no efficient methods to solve many important problems.

PREREQUISITES:
At least one of 15-451 and 15-453 (or equivalents), preferably both.

TEXT:
We will refer to the free online textbook draft by Arora and Barak at
http://www.cs.princeton.edu/theory/index.php/Compbook/Draft
The text Computational Complexity by Papadimitriou is recommended but
not required.

METHOD OF EVALUATION:
Grading will be based on homework assignments (approximately 10), a
midterm, and a final.

TOPICS TO BE COVERED:

Possible topics include:

. Basic time complexity -- P, NP, the polynomial-time hierarchy,
diagonalization.
. Basic space complexity -- L, PSPACE, Savitch's Theorem,
immerman-Szelepcsenyi Theorem
. Circuit complexity: Non-uniform models, Karp-Lipton Theorem
. Randomized complexity classes: BPP, ZPP, RP: Valiant-Vazirani Theorem
. Counting classes: #P, PP, Toda's Theorem
. Interactive proofs: MA, AM, IP, IP=PSPACE Theorem
. Pseudorandomness & derandomization: expanders, extractors, hashing
. PCP Theorem and hardness of approximation
. Cryptography
. Communication complexity
. Average-case complexity
. Quantum complexity
. Algebraic complexity