Introduction to the Theory of Computation

For the Fall 2020 semester, I taught Theory of Computation remotely and produced the lectures below. I am leaving them online as an ongoing resource. If you use them for your own teaching, you will need to make minor modifications to change dates and references to problem sets and exams. (Note, be careful modifying slides that contain equations because it sometimes breaks the animations due to an apparent bug in PowerPoint.)

If you (re-)post the original or modified versions of these slides, I ask that you credit the original source.

Michael Sipser

- PPT Introduction, finite automata, regular expressions §1.1
- PPT Nondeterminism, closure properties, FA → Reg Exprs §1.2–1.3
- PPT FA ← Reg Exprs, Regular pumping lemma, CFGs §1.4–2.1
- PPT Pushdown automata, CFG ↔ PDA §2.2
- PPT Context-free pumping lemma, Turing machines §2.3,3.1
- PPT TM variants, Church-Turing thesis §3.2–3.3
- PPT Decision problems for automata and grammars §4.1
- PPT Undecidability §4.2
- PPT Reducibility §5.1,5.3
- PPT Computation history method §5.2
- PPT Recursion theorem, logic §6.1–6.2
- PPT Time complexity §7.1
- Midterm Exam
- PPT P and NP, SAT, poly-time reducibility §7.2–7.3
- PPT NP-completeness §7.5
- PPT Cook-Levin theorem §7.4
- PPT Space complexity, PSPACE §8.1–8.2
- PPT Savitch's theorem, PSPACE-completeness §8.3
- PPT Games, Generalized geography, L and NL §8.3–8.4
- PPT NL-completeness, NL=coNL §8.4
- PPT Hierarchy theorems §9.1
- PPT Provably intractable problems, oracles §9.2
- PPT Probabilistic computation, BPP §10.2
- PPT An interesting language in BPP, Arithmetization §10.2
- PPT Interactive proof systems, IP §10.4
- PPT coNP ⊆ IP §10.4