## 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, 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.

**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 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.

### Exams

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.

### 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

The following schedule is tentative, and is likely to change.
Please go

here for a
schedule that is updated weekly to reflect what we actually cover,
and to find lecture notes and homework assignments.

Date |
Topic |

Sept. 1 |
Turing machines, Universal Turing machines, the halting
problem, P, NP and defining Karp reductions. |

Sept. 8 |
Countable and uncountable sets, Diagonalization, the
halting problem revisited and mapping reductions. |

Sept. 15 |
The recursion theorem, Karp reductions, NP-completeness
of SAT. |

Sept. 22 |
More NP Completeness, CO-NP, Decision vs. Search. |

Sept. 29 |
Space Complexity:~A hierarchy theorem, Savage's Thoerem, NL = coNL |

Oct. 6 |
PSPACE completeness, The polynomial hierarchy |

Oct. 13 |
Review Session |

Oct. 20 |
Midterm (in class) |

Oct. 27 |
Review of the midterm solutions. Start of circuit complexity |

Nov. 3 |
Circuit complexity |

Nov. 10 |
Randomized Time Complexity |

Nov. 17 |
Interactive proofs |

Nov. 24 |
Interactive proofs: IP = PSPACE |

Dec. 1 |
Zero knowledge proofs |

Dec. 8 |
Secure Computation, and final review |

Dec. 15 |
Final Exam (in class) |

######