# Theory of Computation (Fall 2016)

**Time and Location:** TTh 12-1:15pm, Gilman 17.

**Instructor:** Xin Li. **Office hours:** Tuesday 2:30-3:30pm, Malone 215, or by appointment

**TA:** Kuan Cheng. **Email:** kcheng17@jhu.edu ** Office hours:** Wednesday 3:00-4:00pm, Malone 260

**Syllabus**

**Course description:** This is a graduate-level course studying the theoretical foundations of computer science. Topics covered will be models of com-putation from automata to Turing machines, computability, complexity theory, randomized algorithms, inapproximability, interactive proof systems and probabilistically checkable proofs. Students may not take both 600.271 and 600.471, unless one is for an undergrad degree and the other for grad degree.

**Pre Requisite:** discrete math or permission. Probability theory strongly recommended.

**Required Textbook:** Computational Complexity: A Modern Approach, by Sanjeev Arora and Boaz Barak.

**Recommended Textbook:** Introduction to the Theory of Computation, by Michael Sipser.

Homework 1 Solution

Homework 2 Solution

Midterm Exam Midterm Solution

Homework 3 Solution

Homework 4 Solution

Sample Final Exam Solution