CS 221: Computational Complexity
Spring 2014


Description | Topics | Format & Goals | Prerequisites | Grading | Readings | Related Courses | Past Offerings

Instructor: Salil Vadhan (MD 337)
    Shopping week office hours: Mon 1/27 2-4, Tue 1/28 11:30-12:30, Wed 1/29 4:30-5:30, Thu 1/30 11:30-12:30, 1-4, Fri 1/31 2-4 (second hour at AM study card signing party in Pierce 307B).
TF: none yet... let me know if you are interested (even if you haven't seen the material before)!
Assistant: Carol Harlow (MD 343, has handouts)

Room & time: TuTh 10-11:30 MD 319
Sections: TBA (if we have a TF)
Course email address (use for all questions): cs221@seas.harvard.edu
Course website: http://www.courses.fas.harvard.edu/5812

Course Description

Computational complexity aims to understand the fundamental limitations and capabilities of efficient computation.  For example, which computational problems inherently require a huge running time to solve, no matter how clever an algorithm one designs? This most basic question of computational complexity is now understood to be both extremely difficult and of great importance, as demonstrated by all the attention given to the famous P vs. NP question.    At the same time, however, this is but one of many the fascinating issues addressed by complexity theory (and covered in this course).  First, running time will not be the only computational resource we consider, but also space/memory, nondeterminism, randomness, parallelism, communication, algebraic operations, and quantum mechanics.  We will also study a variety of types of computational problems, such as decision, search, counting, optimization, and proof verification. We will introduce an array of complexity classes to capture these resources and problem types.  We will use the powerful notions of reduction and completeness to establish relationships between seemingly unrelated problems, classes, and resources.   Indeed, it is in discovering such connections that complexity theory has had its greatest successes, and we will see one of the most surprising ones: the equivalence between probabilistic verification of mathematical proofs (PCPs) and the complexity of finding approximate solutions to optimization problems.  We will also examine various approaches to separating P and NP, and more generally to proving lower bounds on complexity. Finally, we will study what happens when one relaxes the requirement for an algorithm to be "correct", for example from worst-case complexity to average-case complexity or from exact solutions to approximate solutions.

The material in this course can be of interest to a wide range of graduate students and advanced undergraduates, ranging from those who plan to do research in the theory of computation, to those working in other areas of computer science and mathematics, to those interested in computational aspects of other fields such as economics and physics.

Tentative List of Topics

Definite topics (Arora-Barak Chs 1-7, plus some of Chs 8,11)

Possible topics (material from Arora-Barak Chs 8,13,14,16,17,19):

Format and Goals

This year, we are going to use a new, interactive format for the course, which I have previously used in cs225 (spring `11), cs229r (spring `13), cs127 (fall `13). Instead of me walking through all of the material in standard lecture format, you will be expected to read and comment on the relevant material prior to lecture. (We will use the online forum NB for posting your comments.) Then the class time will be much more interactive, where you all will bring out the key concepts, ideas, and intuition, as well as work through the difficult technical material together (with my guidance,of course). This will demand more of you, but the hope is that you will come away with a much deeper understanding of the material.

By the end of the course, I hope that you will all be able to:


The prerequisite for this course is Computer Science 121 (or the equivalent at another university) with a good grade (B+ or higher).    If you do not formally meet this requirement but still wish to take this course, you must (a) come to my office hours during shopping week to discuss your preparation for the course, (b) do Problem Set 0, and (c) come to my office hours again before add/drop date to discuss your performance on PS0 and comfort in the course so far.    For students meeting the prerequisite,  Problem Set 0 is optional, but we encourage you to work through the problems.

The most important topics that we will be assuming from CS 121 is comfort with Turing machines, computability, asymptotic running time, and NP-completeness.  General mathematical maturity, e.g. comfort with proofs, basic discrete probability, & combinatorics,  will also be assumed.

Grading & Problem Sets

The requirements of the course: Except for ps0, the biweekly problem sets will typically be handed out on Thursdays, and due two weeks later on Friday by 5 PM. You are allowed 12 8 late days for the semester, of which at most 5 can be used on any individual problem set. (1 late day = 24 hours exactly).  For an exception, you must have your senior tutor (for undergrads) or your advisor (for graduate students) contact me.

The problem sets will be challenging, so be sure to start them early.  You are encouraged to discuss the course material and the homework problems with each other in small groups (2-3 people), as long as you list all discussion partners on your problem set. Discussion of homework problems may include brainstorming and verbally walking through possible solutions, but should not include one person telling the others how to solve the problem.  In addition, each person must write up their solutions independently.  You may not look at another student's written solutions.


The required text is the new book, Computational Complexity: A Modern Approach, by Sanjeev Arora and Boaz Barak. It should be available at the Coop, and be on reserve at McKay library. You can also get it from:

Related Courses

Past Offerings

This course is generally offered every other year. Information from previous times I taught it, including Q evaluations, is available at http://seas.harvard.edu/~salil/cs221