CS 600: Theory of Computation, Fall 2015

Course Overview

Course Description

This course will cover topics in computability theory and complexity theory. Specifically, we will review Turing machines, decidability, P and NP, polynomial-time 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.

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


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 re-submit up to 3 homeworks for re-grading. Anything submitted for re-grading 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.


There will be one mid-term 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.


Homework: 50%
Midterm: 25%
Final: 25%


Course Policies


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, NP-completeness of SAT. lecture 3  
Sept. 22 More NP Completeness, CO-NP, 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.