History and Preliminaries
Finite Automata and Regular Languages: determinism and nondeterminism, checking vs. computing, properties of finite automata, regular expressions, the pumping lemma, closure properties
Universal models of computations:issues of computability, the Turing machine, translation between models, model independence
Computability theory: primitive and partial recursive functions, encoding a turing machine, recursive and R.E. sets, Rice's theorem and the Recursion theorem, unsolvability
Complexity theory: reducibility among problems, reduction and complexity classes, hierarchy theorems, model-independent complexity classes, NP-completeness, space completeness, provably intractable problems
Proving problems hard: NP-complete problems, P-completeness proofs, Turing reductions and search problems, the polynomial hierarchy and enumeration problems
Complexity theory in practice: restriction of hard problems, strong NP-completeness, the complexity of approximation, the power of randomization
Average case complexity, models of parallel computation, communication and complexity, zero knowledge and probabilistically checkable proofs, complexity and constructive mathematics
Students who are auditing this course must attend at least 75% of the class lectures to avoid a grade of F.
[INSTRUCTOR] [HOURS] [PREREQUISITES] [OBJECTIVES] [REQUIREMENTS & GRADING] [OUTLINE]