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] [ANNOUNCEMENTS] [OUTLINE]