1.2. Topics

  1. Strings, sets, languages and functions. Notation and terminolgy.

  2. Computability. Diagonalization. Examples of uncomputable problems.

  3. Reductions among problems.

  4. Introduction to complexity. Complexity classes.

  5. Polynomial time complexity. Deterministic and nondeterministic computation. The classes P and NP. NP-completeness. Examples of NP-complete problems.

  6. Other complexity classes. The class PSPACE and PSPACE-completeness.

  7. Applications of complexity results. Cryptography. Interactive and zero-knowledge proofs.