Course Overview
Course Description
Content
This course will cover topics in computability theory and
complexity theory. Specifically, we will review Turing
machines, decidability, P and NP, polynomialtime reductions,
hierarchies, circuit complexity, randomized computation and extraction, and proof systems. Previously, this course also included
topics in logic and automata theory, which we will not cover
this semester. We will rely very heavily on Jonathan Katz's
lecture notes, which can be found under the "links" section on
the right. However, I will post edited versions each week in
the schedule below.
Objectives
The material in this course is difficult, and I expect students
to work hard. However, my goal, first and foremost, is that students gain
a basic understanding of the material, and some enthusiasm for
the subject. I
encourage students to ask a lot of questions, and I am happy to
slow down or repeat material whenever necessary.
Course Requirements
Homework
There will be 6 homework assignments, due every other week.
Students are welcome to work in groups, but every student
must write their solutions independently. Homeworks that
appear overly similar will be considered to violate the honor
code. Students may resubmit up to 3 homeworks for regrading.
Anything submitted for regrading must be accompanied by the
original submission.
I encourage students to type their answers, both because they
will be easier to read, and also because I believe it helps you clarify your
own thinking. You can use
this LaTex
template file, if it is helpful to you. There are also command
definitions that might be helpful
to
you here.
(If you're using the template file, you will need to
remove the comment where the preamble file is included.) This is a
great
LaTex reference,
with a list of useful symbols on page 75.
Exams
There will be one midterm and one final exam. Each will cover
roughly half of the semester. The final will not be
cummalitive. Both exams are closed book, and no notes will be
allowed.
Grading
Homework: 50%
Midterm: 25%
Final:
25%
Course Policies
Laptops
I prefer that students do not use laptops in class. I will go
slowly enough that notes can be taken by hand, and I will also
provide typed notes on each lecture. If you still feel you need
a laptop, please discuss it with me.
Tentative Schedule
Date 
Topic 
Lecture Notes 
Homework 
Sept. 1 
Turing machines, Universal Turing machines, the halting
problem, P, NP and defining Karp reductions. 
lecture 1 

Sept. 8 
Countable and uncountable sets, Diagonalization, the
halting problem revisited and mapping reductions. 
lecture 2 
HW 1 out 
Sept. 15 
The recursion theorem, Karp reductions, NPcompleteness
of SAT. 
lecture 3 

Sept. 22 
More NP Completeness, CONP, Decision vs. Search. 
lecture 4 
HW 1 due. HW 2 out 
Sept. 29 
Space Complexity:~A hierarchy theorem, Savage's Thoerem, NL = coNL 
lecture 5 

Oct. 6 
PSPACE completeness, The polynomial hierarchy 
lecture 6 
HW 2 due. 
Oct. 13 
Review Session 

HW
3 out 
Oct. 20 
Midterm (in class) 

HW 3 due. 
Oct. 27 
Review of the midterm solutions. Start of circuit complexity 
lecture 7 

Nov. 3 
Circuit complexity 
lecture 8 

Nov. 10 
Randomized Time Complexity 
lecture 9 
HW4 out 
Nov. 17 
Interactive proofs 
lecture 10 

Nov. 24 
Interactive proofs: IP = PSPACE 
lecture 11 
HW 4 due. 
Dec. 1 
Zero knowledge proofs 
lecture 12 
HW5
and HW6
out. 
Dec. 8 
Review 


Dec. 15 
Final Exam (in class) 

HW 5 and 6 due. 