Theory of Computation
This course emphasizes computability and computational complexity theory. Topics include regular and context-free languages, decidable and undecidable problems, reducibility, recursive function theory, time and space measures on computation, completeness, hierarchy theorems, inherently complex problems, oracles, probabilistic computation, and interactive proof systems.
Syllabus
- 1 Lecture 1: Introduction, Finite Automata, Regular Expressions
- 2 Lecture 2: Nondeterminism, Closure Properties, Regular Expressions β Finite Automata
- 3 Lecture 3: Regular Pumping Lemma, Finite Automata β Regular Expressions, CFGs
- 4 Lecture 4: Pushdown Automata, CFG β PDA
- 5 Lecture 5: CF Pumping Lemma, Turing Machines
- 6 Lecture 6: TM Variants, Church-Turing Thesis
- 7 Lecture 7: Decision Problems for Automata and Grammars
- 8 Lecture 8: Undecidability
- 9 Lecture 9: Reducibility
- 10 Lecture 10: Computation History Method
- 11 Lecture 11: Recursion Theorem and Logic
- 12 Lecture 12: Time Complexity
- 13 Lecture 14: P and NP, SAT, Poly-Time Reducibility
- 14 Lecture 15: NP-Completeness
- 15 Lecture 16: Cook-Levin Theorem
- 16 Lecture 17: Space Complexity, PSPACE, Savitch's Theorem
- 17 Lecture 18: PSPACE-Completeness
- 18 Lecture 19: Games, Generalized Geography
- 19 Lecture 20: L and NL, NL = coNL
- 20 Lecture 21: Hierarchy Theorems
- 21 Lecture 22: Provably Intractable Problems, Oracles
- 22 Lecture 23: Probabilistic Computation, BPP
- 23 Lecture 24: Probabilistic Computation (cont.)
- 24 Lecture 25: Interactive Proof Systems, IP
- 25 Lecture 26: coNP β IP
Course materials
- Course on MIT OpenCourseWare β website