1. Introduction. Models of computation (Turing machines, random-access machines, ...), recalling computational complexity of algorithms.
2. Complexity classes. Classes P and NP, reduction between problems, NP-completeness, classical NP-complete problems.
3. Other complexity classes - PSPACE, EXPTIME, EXPSPACE, polynomial hierarchy.
4. Undecidable problems, Rice's theorem.
5. Advanced techniques for analysis and design of algorithms: amortized complexity, average-case complexity of algorithms (probabilistic analysis).
6. Randomized algorithm, approximation algorithms.
7. Computational complexity of parallel algorithms: computational models for parallel algorithms (PRAM).
8. Analysis of computational complexity of parallel algorithms, class NC, correspondence with circuits (circuit complexity).
9. Distributed algorithms: models of computation for distributed algorithms, communication complexity.
10. Kolmogorov complexity.
11. Semantics of programming languages: formal descriptions of semantics (operational semantics, denotational semantics).
12. Methods of proving correctness of programs, Hoare logic.
13. Quantum computing.
2. Complexity classes. Classes P and NP, reduction between problems, NP-completeness, classical NP-complete problems.
3. Other complexity classes - PSPACE, EXPTIME, EXPSPACE, polynomial hierarchy.
4. Undecidable problems, Rice's theorem.
5. Advanced techniques for analysis and design of algorithms: amortized complexity, average-case complexity of algorithms (probabilistic analysis).
6. Randomized algorithm, approximation algorithms.
7. Computational complexity of parallel algorithms: computational models for parallel algorithms (PRAM).
8. Analysis of computational complexity of parallel algorithms, class NC, correspondence with circuits (circuit complexity).
9. Distributed algorithms: models of computation for distributed algorithms, communication complexity.
10. Kolmogorov complexity.
11. Semantics of programming languages: formal descriptions of semantics (operational semantics, denotational semantics).
12. Methods of proving correctness of programs, Hoare logic.
13. Quantum computing.