|
|
|
CSci 5403: Complexity Theory
3 Credits
T Th 2:30-3:45, EECS
3-111
Spring 2008
Instructor:
Nick Hopper
EECS 4-211
hopper AT cs.umn.edu
Office Hours:
M
|
T
|
W
|
Th
|
F
|
3:30-5:00
|
3:45-5:00
|
---
|
3:45-5:00
|
---
|
If you want to speak with me
about the
course and can't make one of the scheduled times, please send an email
and we'll schedule a different meeting.
Textbooks:
The required textbook for this
course is Sanjeev Arora and Boaz Barak's "Complexity Theory: A Modern
Approach." It can be downloaded here.
Course Overview:
Within computer science,
Complexity Theory is the name for the research area that studies the
inherent limitations of computation with bounded resources. This
includes traditional resources that you have studied before in
undergraduate courses, such as time and space, as well as other
resources such as randomness and interaction. In this class we
will learn some of the fundamental theorems, proof techniques, and open
problems in the field of complexity theory.
The high-level goals of this course are to allow graduate
students to:
- Understand the fundamental
results and problems in complexity theory
- Read and understand current
research papers in complexity theory and related research areas such as
theoretical cryptography, approximation algorithms, and computational
learning theory.
- Apply complexity-theoretic
tools and results in their own research.
To reach these goals, we will
cover a wide variety of materials and move at an aggressive pace.
The list of topics we will cover includes:
- Time
and Space complexity. These are the basic notions from
chapters 1-5 of the textbook, which are typically covered to some
extent by undergraduate courses. Concepts include TIME(f(n)),
SPACE(f(n)), nondeterminism, co-nondeterminism, reductions and
completeness. The main results include the time and Space
heirarchy theorems, P vs NP, PSPACE = NPSPACE, NL=coNL and the
characterization of the Polynomial time heirarchy.
- Circuit
complexity. In complexity theory, circuits are often used
to reason about computation because they avoid issues like iteration
and self-reference that are introduced by algorithms. Concepts
and results will include circuits as nonuniform computation, the class
P/poly, and the relationship between P/poly and the polynomial time
heirarchy.
- Randomized
algorithms. For some problems, the "best" way we know to solve
the problem is with an algorithm that uses random inputs.
We'll see several examples of randomized algorithms and techniques and
study randomized complexity classes, and their relationship to
nondeterminism and nonuniformity. Later, we'll also study derandomization, in which we use
computational intractability assumptions to make randomized algorithms
into deterministic ones, and explore the relationship between the power
of randomness and the existence of intractable problems.
- Counting
problems. Many of the problems we study in undergraduate
theory classes are decision
or search problems: for a
given instance, we either ask whether a solution exists or search for
the solution. We'll study the complexity of counting problems: given an
instance, how many solutions does it have? Concepts and results will
include the classes PP, #P, parity-P; the complexity of computing the
permanent; Toda's Theorem and the Valiant-Vazirani Theorem.
- Cryptography.
One positive consequence of the apparent limitations of
resource-bounded computation is the possibility of cryptography.
Concepts and results include the connection between one-way functions
and pseudorandom generators; pseudorandom functions, and encryption.
- Proofs
and complexity. One
characterization of the P vs NP problem is as the question: "if a
language has short proofs, can we find them efficiently?" Here we
will investigate how other notions of proofs, such as interactive, or
probabilistically checkable, proofs are related to problem
complexity. Results include Shamir's proof that IP=PSPACE;
Dinur's proof that NP = PCP(log n, O(1)), which means that every
NP-language has proofs that can be checked by looking at only a
constant number of bits; and the inapproximability of NP problems like
MAXSAT and Independent Set.
Prerequisites:
The main prerequisite for this
course is an undergraduate course that introduced the notion of
NP-Completeness. At UMN, that course is CSci 4011, but at some
other universities it is also covered in an undergraduate algorithms
course. However, having simply taken
such a class is a necessary
but not sufficient condition
to be prepared
for this course. Doing well in this course will require
mathematical maturity: you should be very comfortable reading and
writing proofs, since all assignments and exams will involve proving
statements by applying the concepts and proof techniques covered in the
lectures and
textbook.
Lecture Schedule:
The course website includes a
schedule of lectures for this course.
The schedule includes the readings related to each class. Students
are responsible for reading the appropriate materials for each
lecture; we may not cover all of the reading material in the lecture
but it may still appear on exams. Lecture slides will usually be linked
from the homepage before class, but always within one day following the
corresponding lecture.
Grading:
Grading for the class will be
based on three components:
- 14 Homeworks (40%): we
will have weekly homeworks, to be turned in at the beginning of
class each Tuesday. Homeworks will consist of (on average) 4
problems, posted
on the class website. Students may choose to work in groups with
up to 3 members
on homework problems: in this case, you should turn in a single solution with the names of all group members.
Solutions to each homework problem should be
on a separate sheet of paper to allow space for feedback. Remember to
include your name(s) on each page. It is required
that your solutions be typeset electronically, using LaTeX or one of
its WYSIWYG variants. An
excellent introduction to latex is the Not-So-Short
Guide to LaTeX. The AMS has a useful Short
Math Guide to LaTeX as well.
Each week, two randomly selected problems will be graded on a 4-point
scale as follows:
4 Points
|
The solution belongs in the
textbook: it has no errors.
|
3 Points
|
The solution has only minor
errors: e.g. it is not clearly written or is missing a minor point.
|
2 Points
|
The solution has the "right
idea" but has one or more important gaps
|
1 Points
|
The solution does not
demonstrate a significant understanding of the problem.
|
0 Points
|
No solution was attempted
|
Students should be aware that solving the homeworks is
the minimal work involved to
make sure you understand the course; if you have trouble with these
problems, you should try more until you are sure you understand the
material.
Due dates for all assignments are
strict: all homeworks must be received at the very start of the
class
in which
they are due in order
to receive full credit. Late homeworks turned in before 3pm on
Wednesday will be considered for 50% credit, and after 3pm on the day
after it is due, a homework is worth 0 points, with no
exceptions.
Keep a copy of each of your
submissions as evidence
that you have indeed submitted each assignment. Do not ever put
your
assignment under the instructor's office door: this is a certain way to
receive zero points for an assignment.
- 5 Take-Home Exams (40%).
Roughly every three weeks, a "take-home" exam question will be posted
to the class
website at noon on a Monday or Wednesday. Students are to
turn in their exams
(electronically typeset) by the end of lecture the following day.
The dates of these exams are posted on the class schedule. No late
take-home solutions will be accepted. Exams will be
graded on a 10-point scale, and each student's worst
question score will be dropped.
- 4 Example Solutions
(20%): Each student will be assigned to write complete example
solutions to four homework problems distributed throughout the
semester. Your example solutions should be more complete
than regular solutions, explaining all of the "details" of the solution
and why the solution is correct. I will typically require some
revisions to your solutions before they are posted; you will be
considered to have satisfied this requirement (earned 20%) if all of
your assigned solutions are eventually accepted and at least
three of your assigned solutions are posted within one week of the
original due date.
Composite scores will be
assigned to
grades as follows:
88
- 100
|
A
|
84
- 88
|
A-
|
80
- 84
|
B+
|
74
- 80
|
B
|
70
- 74
|
B-
|
66
- 70
|
C+
|
60
- 66
|
C
|
56
- 60
|
C-
|
53
- 56
|
D+
|
50
- 53
|
D
|
0
- 50
|
F
|
The dates for all exams are
currently marked on the class
schedule. Please be sure to make note of them, because there
will be no makeup exams, except in extraordinary and
documentable
circumstances.
Academic
Integrity Policy:
Every student is expected to
turn in his or her own work for all submissions in this class.
This is not meant to block
general discussion of HOW to do homework problems, nor is it meant to
prevent use of online resources such as academic papers. However,
it is never acceptable to use someone
else's work without acknowledging it. Every source you
reference for a class submission must be explicitly acknowledged.
Failure to do so will be considered plagiarism.
The University Student Conduct
Code defines scholastic dishonesty as:
submission of false records of academic achievement; cheating on
assignments or examinations; plagiarizing; altering, forging, or
misusing a University academic record; taking, acquiring, or using test
materials without faculty permission; acting alone or in cooperation
with another to falsify records or to obtain dishonestly grades,
honors, awards, or professional endorsement. In this course, a student
responsible for scholastic dishonesty will be assigned a penalty of an
"F" or "N" for the course. If you have any questions regarding the
expectations for a specific assignment or
exam, please ask me.
|
|