6.045/18.400 Automata, Comput, & Complexity
Spring 2011
Instructor: Scott Aaronson
TAs: Sebastien Dabdoub, Leonid Grinberg
Lecture: TR2.30-4 (32-124)
Information:
[6.045's Piazzza discussion site]
[Alan Turing's 1936 paper "On Computable
Numbers"]
[Alan
Turing's 1950 paper "Computing Machinery and
Intelligence"]
This course provides a challenging introduction to some of the
central ideas of theoretical computer science. Beginning in
antiquity, the course will progress through finite automata,
circuits and decision trees, Turing machines and computability,
efficient algorithms and reducibility, the P versus NP problem,
NP-completeness, the power of randomness, cryptography and one-way
functions, computational learning theory, and quantum
computing. It examines the classes of problems that can and
cannot be solved by various kinds of machines. It tries to
explain the key differences between computational models that
affect their power.
Prerequisites: We assume that you have taken 6.042 Mathematics for Computer Science, or have equivalent mathematical preparation. In particular, we will assume you have basic "mathematical maturity": i.e., that you're comfortable both reading and writing rigorous mathematical proofs.
Textbook: There is no required textbook for the course. However, there are three recommended books:
1. The Nature of Computation by Cris Moore and Stephan Mertens -- draft available for free on the web (access info provided in class)
2. Introduction to the Theory of Computation by Michael Sipser -- covers most material from the first half of the course
3.
Computational Complexity: A Modern Approach by Sanjeev Arora
and Boaz Barak -- covers most material from the second half (as
well as more advanced material that we won't get to in
class). Draft
available for free on the web.
Lecture Notes and PowerPoint Slides from
earlier iterations of the course are available
here.
Announcements
No announcements