Lectures:
Introduction: Algorithm intuitively.
History: Foundational crisis in 20th century mathematics. Solving the crisis. Formal systems. Hilbert’s program. Godel’s theorems.
Introduction to computability: What is algorithm and computation? Models of comp. Church-Turing thesis. Turing machine and versions. Nondeterminism.
Universal TM. RAM model and general purpose computers. Recursion theorem, recursive definitions and execution.
Incomputability. Sets vs. languages. Decision problems. Incomputable problems exist. Methods of proving incomputability (diagonalization, reductions, Rice’s theorem). Examples of incomputable problems and consequences in various fields. (Basics of relative computability and hierarchies.)
Automata, grammars, languages: Finite automata, regular grammars, expressions and languages. Pushdown automata, context-free grammars and languages. Linear bounded automata, context-sensitive grammars and languages. Examples and application.
Introduction to computational complexity: Time, space, and other complexities. Easy and hard problems. Classes P, NP, EXP and other complexity classes. NP-completeness/hardness and methods of proving it. Examples and applications.
Coping with hard problems: Basics of randomized, approximation, and parallel computing. Basics of interactive proving. Examples and application.
Recent approaches: Basics of quantum computing.
Home works and seminars: