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.
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. The survey should be approximately 6-10 pages.
Examples:
- Quantum complexity theory
- Applications of complexity theory to cryptography
- The PCP theorem and hardness of approximation
- Proofs that we skipped in class, such as a randomized O(log n) space algorithm for undirected connectivity
The deadline for the final project is somewhat flexible. There is a soft deadline of Dec 7th. Projects turned in by this date will be graded in time for final grades to be submitted by Dec 14th. Alternatively, if you are attempting a more involved project and would like additional time, you can submit a status update on Dec 7th instead. This update should include:
- Project description, including paper(s) selected for survey
- Current progress (e.g. number of pages written so far)
- Estimated number of hours until first draft is done
- Estimated date for completion of final draft
Conditioned on submitting a status update by Dec 7th, the hard deadline for the project is Dec 31st. Projects submitted by this date will be graded sometime during the first few weeks of winter quarter.