CSE 200, Computability and Complexity, Spring 2026

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.

Information:

Homework:

Textbook:

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

Lecture notes:

The lecture notes are on Overleaf and will be updated throughout the quarter.

Topics:

  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)

Evaluation:

Your grade is based on homework, a midterm and a final exam:

Tentative schedule:

Other books:

These books offer different perspective on computational complexity, and you are encouraged to check them out:
  • Mathematics of the impossible, by Emanuele Viola.
  • Complexity in computer science, by Thomas Watson.