Table of Contents

Course description

This graduate course gives a broad introduction to complexity theory, including classical results and recent developments. Complexity theory aims to understand the power of efficient computation (when computational resources like time and space are limited). Many compelling conceptual questions arise in this context. Some examples:

  • Is finding a solution inherently more difficult than verifying it?
  • Do more computational resources mean more computing power?
  • Is it easier to find approximate solutions than exact ones?
  • Are randomized algorithms more powerful than deterministic ones?
  • Is it easier to solve problems in the average case than in the worst case?
  • Are quantum computers more powerful than classical ones?

Most of these questions are (surprisingly?) difficult and far from being resolved. Nevertheless, a lot of progress has been made toward understanding them (and also why they are difficult). We will learn about these advances in this course. A theme will be combinatorial constructions with random-like properties, e.g., expander graphs and error-correcting codes.


The course has no formal prerequisites, but it assumes the following skills:

Mathematical maturity
comfort with mathematical proofs, discrete structures (e.g., graphs), basic linear algebra (e.g., eigenvalues), basic probability theory (e.g., Chernoff bounds)
Algorithmic thinking
familiarity with mathematical models of computation (e.g., Turing machines), basic algorithms (e.g., dynamic programming, network flow)

Course material

Computational Complexity: A Modern Approach The textbook for the course is Computational Complexity: A Modern Approach by Sanjeev Arora and Boaz Barak. (For this book, drafts of all chapters are available here.)

Other books on complexity theory:

  • Computational Complexity: A Conceptual Approach by Oded Goldreich
  • Theory of Computation by Dexter Kozen
  • Computational Complexity by Christos Papadimitriou


Grades are based on the following components:

  • Homework (weekly)
  • Peer grading (roughly twice during the course)
  • Class participation


We will be using Piazza as an online discussion forum. Piazza allows for open discussions of all course-related questions. You are encouraged to post any questions you might have about the course material. The course staff monitor Piazza closely and you will usually get a quick response. If you know the answer to a question, you are encouraged to post it.

By default, your posts are visible to the course staff and other students, and you should prefer this mode so that others can benefit from your question and the answer. However, you can post privately so that only the course staff can see your question, and you should do so if your post might reveal information about a solution to a homework problem. You can also post anonymously if you wish. If you post privately, we reserve the right to make your question public if we think the class will benefit.

Everyone who registered for the course by Thursday August 27 will be signed up at that time. If you have never used Piazza before, or if you did not preregister for the course, visit the Piazza CS 6810 page to sign up.

Piazza is the most effective way to communicate with course staff. Please avoid email if Piazza will do. Broadcast messages from the course staff to students will be sent using Piazza and all course announcements will be posted there, so check in often!


Homework is an important part of the course. We will have weekly homework assignments. All homework assignments will be posted on CMS. Most homework assignments will be due Wednesdays at 11:59pm.


Your homework submissions need to be typeset (hand-drawn figures are OK). The idea is that you first develop your solutions on paper and then type up their final form in a concise way. See typesetting resources for a list of typesetting software and references. Everyone who registered for the course by Thursday August 27 will be signed up to CMS at that time. If you would like to get added or dropped from CMS please contact .

Late submissions

You have eight late days. Late submission are graded only if you use your late days. You can use at most four late days per homework. If you are unable to submit your homework because of extenuating circumstances (medical or family emergency), contact an instructor beforehand.


You can collaborate with other students in the course and exchange ideas about homework. However, you are not allowed to share written notes about homework in any form. In particular, you need to write up your homework submission completeley on your own. Your submission has to acknowledge all students that you collaborated with on the homework. Failure to acknowledge collaborators is a violation of academic integrity.

For the homework, it is not admissible to use resources beyond course material and student discussions. (In particular, you may not Wikipedia.) Using such resources will in general result in point reduction. If you do end up using them, you absolutely need to reference them. Failure to reference outside resources you consulted is a violation of academic integrity.


Tentative list of topics:

  • Basic resources
    • time-/space-bounded Turing machines, depth-/size-bounded circuits
    • efficient universal simulation
  • P vs. NP
    • reductions, completeness, alternation
    • Diagonalization
    • hierarchy theorems, intermediate problems
    • limits of diagonalization/relativization
  • Probabilistic computation
    • randomness vs alternation
    • random walks in graphs, eigenvalues, expansion
    • undirected connectivity in randomized logspace
    • randomness-efficient error reduction
  • Interaction
    • graph isomorphism, polynomial space vs. interactive proofs
  • Cryptography
    • computational security, one-way functions, zero-knowledge proofs
  • Approximation
    • hardness of approximation vs. probabilistically checkable proofs (PCPs)
    • combinatorial proof of the PCP theorem
  • Fourier analysis over Boolean hypercubes, optimal 3-bit PCP
    • parallel repetition theorems
    • Unique Games Conjecture
    • Derandomization
    • undirected connectivity in deterministic logspace
    • pseudorandom generators from hard functions
    • worst-case to average-case reduction
  • Communication complexity
    • lower bound for set disjointness via information theory
    • applications to lower bounds for linear programs
  • Proof complexity
    • resolution lower bound for random 3CNF formulas
    • lower bounds for semidefinite programming hierarchies
  • Quantum computation
    • general search, integer factorization
  • Natural proofs

Academic Integrity

Any violation of academic integrity will be severely penalized. You are allowed to collaborate on the homework to the extent of formulating ideas as a group. However, you are expected to write up (and understand) the homework on your own, and you should acknowledge the names of the students with whom you collaborated.

From Cornell’s code of academic integrity:

Absolute integrity is expected of every Cornell student in all academic undertakings. Integrity entails a firm adherence to a set of values, and the values most essential to an academic community are grounded on the concept of honesty with respect to the intellectual efforts of oneself and others. Academic integrity is expected not only in formal coursework situations, but in all University relationships and interactions connected to the educational process, including the use of University resources. […]

A Cornell student’s submission of work for academic credit indicates that the work is the student’s own. All outside assistance should be acknowledged, and the student’s academic position truthfully reported at all times. In addition, Cornell students have a right to expect academic integrity from each of their peers.