CSE 200, Computability and Complexity, Winter 2018

This class is an introduction to computational complexity theory. This area aims to understand the various resources needed to solve computational problems. Such resources include the obvious ones, such as time and memory, but also possibly less obvious ones, such as randomization, interaction and non-uniformity. In addition, we will attempt to classify problems as "easy" or "hard", study relations between easy and hard problems, as understand why the "P vs NP" problem is possibly the most important open problem in computer science, mathematics and science at large.



Computational Complexity: A Modern Approach, Sanjeev Arora and Boaz Barak, 1st edition, 2009. Online version (draft)


  1. Models of computation: Turing Machines and variants, RAM model, Boolean circuits. Simulating one machine model with another. The Church-Turing thesis and versions for efficient computation (Chapters 1, 3, and 6)
  2. Universal machines and diagonalization: Undecidability. Recursive enumerability. The Halting Problem. Time and Space Hierarchy Theorems. Reductions. (Chapter 3).
  3. NP-completeness and the P vs NP question. Consequences of P = NP. The polynomial-time hierarchy. (Chapters 2 and 5)
  4. Space Complexity (Chapter 4)
  5. Randomized computing (Chapter 7)
  6. Time permitting: Interactive proofs (Chapter 8), Quantum computation (Chapter 10)


4 homework sets and a final project, each worth 20%.

Final project:

The final project should be a survey on an area of your choice, explaining its relation to complexity theory and what we studied in class. It could be a high level survey of an area, or a technical survey of a specific theorem or result. The goal is really for you to learn something new, and understand how complexity theory is prevalent in many areas of CS.

Examples: Requirements: this is an individual project. The length of the survey should be 6-10 pages. I should approve the topic before you start working on it. Please use this Google sheet to feel in your information.
Due date: April 2nd (beginning of spring break) or earlier (if you want your grade earlier :)



Notes might change through the quarter as we revise them (we will make a note of that).

  1. Computational models [Updated 1/17]
  2. Time and space hierarchies [Updated 1/17]
  3. NP and NP completeness [Updated 1/29]
  4. Nondeterminism [Updated 1/29]
  5. Space complexity
  6. Boolean circuits
  7. Circuit lower bounds
  8. Randomized algorithms
  9. Interactive proofs

Tentative schedule: