CS 262
Computational Complexity
Spring 2013


Sandy Irani
4042 Bren Hall

Class Times and Place

MW 9:30-10:50
DBH 1431

Course Overview

The study of computational complexity is concerned with the question of what can we computed with limited resources (time, space, randomness, parallelism, communication, etc.). We will define general classes of problems that can be solved with a particular set of resources and will study the relationships between these classes. We will provide proofs for many of the known relationships between these classes.


The best course to have taken in preparation for this class is an undergraduate class on automata theory. An undergraduate class in algorithms is also good background. The course, however, is fairly self-contained and should be accessible to any student who is comfortable with mathematical abstraction and proofs.

Course Requirements

There will be a total of five problem sets, due on Monday of week 3, 5, 7, 9 and the first day of finals period.

Homework Policies: The homework exercised are an essential part of this course because the practice solving problems is important part of understanding the material. You can probably find many of the solutions to the homework exercises on the internet or in the literature but you will not get the benefit of solving the problems on your own. Therefore, the only sources you are allowed to consult in solving these problems are the recommended texts and notes from class (either mine, yours or those of another student).

I encourage you to work in small groups, but you must note your collaborators on the homework you turn in. In addition, you must write up your own solutions without any collaboration.

You are also encouraged to put your solutions into LaTeX. Here is a template that you can use: Homework Template .

Course Materials

I will provide my own course notes before every lecture (although not necessarily very much in advance). When they are posted, you can reach them by clicking on the topic name in the course outline below. This is theoretically all you should need for understanding the material in class. However, you may wish to consult my sources in preparing these notes. These are:

Lecture Topics and Homework

Week Topic Homework
Week 1 Languages, Turing Machines, Completeness -
Week2 Complexity Classes Homework 1
Week 3 Non-determinism
Non-determinism, Part II
Non-deterministic Space
Homework 2
Week 4 Circuits, Uniformity and advice, NC
Week 5 Randomness: ranomized complexity classes, error reduction, pseudo-randomnumber generators. Homework 3
Week 6 Alternation and the Polynomial Hierarchy. -
Week 7 Complexity of Counting. Homework 4
Week 8 Interactive Complexity Classes -
Week 9 Intro to PCP and Hardness of Approximation
NP contained in PCP[ poly, 1 ]
Week 10 Probabilistically Checkable Proofs and Hardness of Approximation Homework 5