Course Information
Instructor:
- Prof. Mihalis Yannakakis
- Office: 455 Computer Science
- Phone: 212- 939-7145
- email: mihalis@cs.columbia.edu
- Office hours: Monday 3-5
Teaching Assistant:
- Dimitris Paparas
- Office: 509 Computer Science
- email: paparas@cs.columbia.edu
- Office hours: Tuesday 3-5
Lectures:
- Time: Monday,
Wednesday
1:10 - 2:25
- Place: 535 Mudd
Prerequisites
The main prerequisite course is COMS 3261 or equivalent. A
course in
algorithms at the level of COMS 3137 or 3139 or COMS 4231
is also
helpful.
Textbook
The required textbook is Computational
Complexity
by Christos Papadimitriou. The book is available
from the Book Culture bookstore, as well as online
booksellers (Amazon, Barnes and Noble etc.) . Errata for the
textbook
can be found here.
There is a number of other good books that can be used
for supplementary reading on some of the topics. The book Computational Complexity: A
Modern Approach
by Sanjeev Arora and Boaz Barak is a more advanced (and more
extensive)
textbook. Two good books that cover part of the material at a
more
introductory
level are Introduction
to the
Theory of Computation by Michael Sipser, and Introduction to Automata Theory,
Languages
and Computation by John Hopcroft, Rajeev Motwani and
Jeffrey
Ullman.
The book Computers and
Intractability: A Guide to the Theory of NP-completeness,
by
Michael Garey and David Johnson is the classic reference on
NP-completeness.
Course Description
One goal of complexity theory is to characterize the inherent
difficulty of computational problems in terms of the resources
(eg.
time, space etc.)
needed to solve them. For some problems (such as multiplying two
numbers, or
finding the shortest path connecting two nodes in a graph) we
have
efficient algorithms that can solve very large instances, while
for
other problems (such as factoring a number, or finding the
shortest
path that visits all the nodes of a graph) no such efficient
algorithms
are known, and we can only feasibly solve much smaller
instances. A
rich, comprehensive theory of computational complexity has been
developed to understand the difficulty of problems and classify
them
with respect to their resource requirements. A central element
of the
theory is that problems are not studied only in isolation, but
also as
they relate to each other; the key notions of reduction and
completeness play a central role in this regard.
A second goal of complexity theory is to understand the power
and
limitations of different modes and paradigms of computation,
such as
randomization, nondeterminism, parallelism, communication etc.
In this course we will study basic concepts and results of
complexity
theory. Topics include the following:
- Models and modes of computation, eg. deterministic,
nondeterministic, probabilistic, alternating machines, and
Boolean
circuits.
- Resources (time, space) and associated complexity classes
- Relations between complexity classes
- Reductions and Completeness
- Basic complexity classes (P, NP, PSPACE, PH, #P,
NLOGSPACE, NC)
and their complete problems
- Interactive protocols
- Probabilistically checkable proofs and approximability
Class Information
Class announcements, including homeworks and handouts will be
posted on
courseworks.
Please make sure to visit it frequently.
Class Mechanics and Grading
The format of the course will consist of lectures and homeworks.
You
are strongly encouraged to attend the lectures and participate
actively. Besides the homework assignments, there will be a
final exam.
There will be no programming
projects or assignments. The grading will be based on the
homeworks
(60%), and the final (40%).
Homeworks will be assigned
approximately
every two weeks and will be posted on the courseworks website.
Typically they will
be due two weeks later in class before the lecture starts. Late
homeworks will be penalized at the rate of 15% per late day or
part
thereof (i.e. fractions of a day are rounded up). Exceptions
will be
made only for exceptional unforseen circumstances (eg. serious
illness).
The homework with the lowest score will not count in the grade.
Homeworks will consist of a mix of easier and more challenging
problems. It is recommended that you
start
early working on the problems. You are encouraged to
ask
questions in a timely fashion and make effective use of the
office
hours of the teaching staff.
In writing up your assignments, it is
important to be as
clear,
precise
and
succinct as
possible. Understundability will be an important
factor in the grading of the assignments.
You are permitted to discuss the homework assignments. If
you do
collaborate, you must still
write
the
solutions individually (without looking at anybody
else's
solutions), and
acknowledge anyone with whom you have discussed the problems. It
will be considered an honor code violation to consult solutions
from
previous years, from the web or elsewhere, in the event that
homework
problems have been previously assigned or solutions are
available
elsewhere.
The CS department web page
http://www.cs.columbia.edu/education/honesty
lists
the
department's
academic
honesty policies. All students are
expected to abide by these policies.