Computer Sciences Dept.

CS 810 - Complexity Theory

Spring 2007

Course Description

This course provides a graduate-level introduction to computational complexity theory, the study of the power and limitations of efficient computation.

In the first part of the course we focus on the standard setting, in which one tries to realize a given mapping of inputs to outputs in a time- and space-efficient way. We develop models of computation that represent the various capabilities of digital computing devices, including parallelism, randomness, quantum effects, and nonuniformity. We also introduce models based on the notions of nondeterminism, alternation, and counting, which precisely capture the power needed to efficiently compute important types of mappings. The meat of this part of the course consists of intricate relationships between these models, as well as some separation results.

In the second part we study other computational processes that arise in diverse areas of computer science, each with their own relevant efficiency measures. Specific topics include:

  • proof complexity, interactive proofs, and probabilistically checkable proofs -- motivated by verification,
  • pseudorandomness and zero-knowledge -- motivated by cryptography and security,
  • computational learning theory -- motivated by artificial intelligence,
  • communication complexity -- motivated by distributed computing,
  • query complexity -- motivated by databases.
All of these topics have grown into substantial research areas in their own right. We will cover the main concepts and key results from each one.


Complexity theory at the level of CS 520. We will start the course with a quick review of the relevant CS 520 material. If you haven't taken CS 520 or an equivalent course before but are mathematically mature, you can probably pick up the prerequisite material from the review.


Three 75-minute time slots are reserved for this course, namely MWF 2:30-3:45pm in 1257 CS. The plan is to use two of the three slots on average but to frontload the semester so that there is time to work on projects at the end of the semester. Click on the lectures tab on the left for the current schedule. It may change due to faculty meetings and the like.


There is no required text. Lecture notes will be made available from the course web page. Relevant references are the preliminary versions of the upcoming books Complexity Theory: A Modern Approach by Sanjeev Arora and Boaz Barak, and Computational Complexity: A Conceptual Perspective by Oded Goldreich.

Course Work

  • Scribes (20%). Write lecture notes for two the three lectures. 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 provided.

  • Homework (45%). There will be 3 assignments. You are allowed to discuss the problems in group but you should write out the solutions on your own.

  • Project (35%). There will be no exams. Instead, you are expected to work out a project on a topic of your own choosing. I will hand out a list with suggestions during the 5th week of the semester. You should discuss your selection with me, and settle down on a topic before spring break. More guidelines will be posted in due time.

Computer Sciences | UW Home