Foundations of Complexity Theory

From International Center for Computational Logic

Foundations of Complexity Theory

Course with SWS 2/2/0 (lecture/exercise/practical) in WS 2020




  • 2/2/0


Examination method

  • Oral exam

Lecture series

This course covers the fundamental concepts as well as advanced topics of complexity theory.

Key topics are:

  • Turing Machines (revision): Definition of Turing Machines; Variants; Computational Equivalence; Decidability and Recognizability; Enumeration
  • Time Complexity: Measuring Time Complexity; Many-One Reductions; Cook-Levin Theorem; Time Complexity Classes (P, NP, ExpTime); NP-completeness; pseudo-NP-complete problems
  • Space Complexity: Space Complexity Classes (PSpace, L, NL); Savitch’s Theorem; PSpace-completeness; NL-completeness; NL = coNL
  • Diagonalization: Hierarchy Theorems (det. Time, non-det. Time, Space); Gap Theorem; Ladner’s Theorem; Relativization; Baker-Gill-Solovay Theorem
  • Alternation: Alternating Turing Machines; APTime = PSpace; APSpace = ExpTime; Polynomial Hierarchy
  • Circuit Complexity: Boolean Circuits; Alternative Proof of Cook-Levin Theorem; Parallel Computation (NC); P-completeness; P/poly; (Karp-Lipton Theorem, Meyer’s Theorem)
  • Probabilistic Computation: Randomized Complexity Classes (RP, PP, BPP, ZPP); Sipser-Gács-Lautemann Theorem
  • Quantum Computing: Quantum circuits, BQP, some basic results

Schedule and Location

Because of the ongoing COVID-19 pandemic, we are offering this lecture as an online course. Here are all the details:

  • We will host the tutorials as "live sessions" on Tuesdays from 14:50 to 16:20. See the schedule of these sessions under the "Dates and Materials" tab for more information.
  • These "live sessions" will take place in a dedicated BigBlueButton room. To access this room, click on this link 10 minutes before the beginning of each session.
  • Exercise sheets preparing for the tutorials and the final exams will be uploaded at least one week before the tutorial takes place.
  • Every week on Tuesday, we will publish either one video (if there is a tutorial happening on that week) or two videos (if there is none) with the weekly lectures. These videos will be posted on this webpage under the "Dates and Materials" tab.


Simliar courses have been taught at TU Dresden by Prof. Dr. Markus Krötzsch in previous years:

Note that the lecture this year is a bit more compact than the ones offered in 2018 and 2019.


The slides for some of the foundational lectures of this course are based on slides used by Markus Krötzsch for the course Complexity Theory at the University of Oxford, which were adopted from slides created by Stefan Kreutzer and Ian Horrocks for that course. Further material has been prepared first by Daniel Borchmann during his time at TU Dresden.
  • Michael Sipser: Introduction to the Theory of Computation, International Edition; 3rd Edition; Cengage Learning 2013
Introductory text that covers all basic topics in this lecture.
Free lecture notes with general overview of main results; more detailed than Sipser on oracles and alternation; main reference for randomized computation
  • John E. Hopcroft and Jeffrey D. Ullman: Introduction to Automata Theory, Languages, and Computation; Addison Wesley Publishing Company 1979
The Cinderella Book; contains a lot of information not contained in most other books; the hierarchy of undecidable problems as well as Rice' characterization of recognizable properties of recognizable languages are from here.
  • Christos H. Papadimitriou: Computational Complexity; 1995 Addison-Wesley Publishing Company, Inc
Standard reference text for many advanced aspects on complexity theory; the proofs of the Linear Speedup Theorem, the Gap Theorem, and Ladner's Theorem as given in the lecture are from here
  • Sanjeev Arora and Boaz Barak: Computational Complexity: A Modern Approach; Cambridge University Press 2009
Extensive book covering the state of the art of Complexity Theory
  • Michael R. Garey and David S. Johnson: Computers and Intractability; Bell Telephone Laboratories, Inc. 1979
The classical book on Complexity Theory; contains a long list of problems with their complexities

Subscribe to events of this course (icalendar)

Lecture Introduction DS7, October 27, 2020 in Screencast Download 1 Download 2 Download 3
Lecture Mathematical Foundations, Decidability, and Recognisability DS8, October 27, 2020 in Screencast Download 1 Download 2 Download 3
Exercise Mathematical Foundations, Decidability, and Recognisability DS5, November 3, 2020 in BigBlueButton Download
Lecture Time Complexity and Polynomial Time DS8, November 3, 2020 in Screencast
Lecture NP DS7, November 10, 2020 in Screencast
Lecture NP-Completeness DS8, November 10, 2020 in Screencast
Exercise Time Complexity, PTime, and NP DS5, November 17, 2020 in BigBlueButton
Lecture NP-Complete Problems DS8, November 17, 2020 in Screencast
Exercise NP-Completeness and Time Complexity DS5, November 24, 2020 in BigBlueButton
Lecture Space Complexity DS8, November 24, 2020 in Screencast
Lecture Polynomial Space DS7, December 1, 2020 in Screencast
Lecture Games/Logarithmic Space DS8, December 1, 2020 in Screencast
Exercise Space Complexity DS5, December 8, 2020 in BigBlueButton
Lecture The Time Hierarchy Theorem DS8, December 8, 2020 in Screencast
Exercise Diagonalisation DS5, December 15, 2020 in BigBlueButton
Lecture Space Hierarchy and Gaps DS7, December 15, 2020 in Screencast
Lecture P vs. NP: Ladner's Theorem DS7, January 5, 2021 in Screencast
Lecture P vs. NP and Diagonalisation DS8, January 5, 2021 in Screencast
Exercise Diagonalisation and Alternation DS5, January 12, 2021 in BigBlueButton
Lecture Alternation DS7, January 12, 2021 in Screencast
Exercise Alternation and the Polynomial Hierarchy DS5, January 19, 2021 in BigBlueButton
Lecture The Polynomial Hierarchy DS7, January 19, 2021 in Screencast
Exercise Circuit Complexity DS5, January 26, 2021 in BigBlueButton
Lecture Circuit Complexity DS7, January 26, 2021 in Screencast
Exercise Probabilistic Turing Machines and Complexity Classes DS5, February 2, 2021 in BigBlueButton
Lecture Probabilistic Turing Machines and Complexity Classes DS7, February 2, 2021 in Screencast