COURSE TITLE: Advanced Theory of Computation CREDITS: 3 Course Objective To gain an understanding of the mathematics which underlies the theory of computation. At the end of the course, the student should be able to formalize mathematical models of computations; use these formalisms to explore the inherent limitations of computations; and describe some major current approaches to investigating feasible computation. Rationale The theory of computation is concerned with the theoretical limits of computability. Several mathematical models of computation have been formulated independently and under any such computational model, the existence of well-defined but unsolvable problems can be formally shown. These topics form part of the core of the mathematical foundations of computer science that will provide students and researchers with a sound theoretical view of the most fundamental concepts of computation. Specifically, this course provides a rigorous introduction to the theoretical foundations of computer science. It deals with a number of interconnected topics and tries to answer the basic questions, "What is a computer?", "What is an algorithm?", and "What is computable?". This course examines important theorems and proofs, establishes a number of interesting assertions in order to expose the techniques used in the area of theory of computation. Note that although this is not a "mathematics" course, it does make significant use of mathematical structures, abstractions, definitions, theorems, proofs, lemmas, corollaries, logical reasoning, inductive proofs, and the like. If such concepts are difficult for you, you will find this course very difficult but rewarding. I invite you to accept the challenge. Course Outline Automata theory, formal languages, Turing machines, computability theory and reducibility, computational complexity, determinism, nondeterminism, time hierarchy, space hierarchy, NP completeness, selected advanced topics. STUDENT LEARNING OUTCOMES: Upon successful completion of this course students will be able to Define and describe formal models of computation, such as finite automata, pushdown automata, and Turing machines; Give examples of languages and computational problems appropriate for different models of computation; Create proofs for statements regarding formal models of computation; Describe class-based resource usage models, including time and space complexity; Apply NP-completeness concepts to create proofs regarding the computational complexity of novel problems; Use basic concepts and explain implications of modern complexity theoretic approaches to advanced topics such as randomization, proof complexity, and quantum computing. Books: 1. Michael Sipser, Introduction to the Theory of Computation, PWS Publishing, Boston, 2012. 3rd Ed. 2. Mikhail J. Atallah and Mariana Blanton (Eds.), Algorithms and Theory of Computation Handbook: General Concepts and Techniques, CRC Press, New York, 2009 (2nd Edition). Other Supplementary: 1. Thomas Cormen, Charles Leiserson, Ronald Rivest, and Cliff Stein, Introduction to Algorithms, McGraw Hill Publishing Company and MIT Press, 2009 (3rd Edition). 2. Christos Papadimitriou, Computational Complexity, 1994, Addison-Wesley. 3. John Hopcroft and Jeffery Ullman, Introduction to Automata Theory, Languages, and Computation, 1979, Addison-Wesley. 4. Tao Jiang, Ming Li, and Bala Ravikumar, Formal models and Computability, in Handbook of Computer Science, CRC Press, 19 Week 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Lecture Plan Class Introduction and Overview Math Review Finite Automata and Regular Languages Context-Free Languages and Pushdown Automata Turing Machines and the Church-Turing Thesis Decidability Catch-up and review Reducibility Time complexity, P, and NP NP-completeness Catch-up and review Space complexity Randomization Interactive Proofs Parallel Complexity Quantum Computing Reference Chapter 0 Chapter 1 Chapter 2 Chapter 3 Chapter 4 Chapter 5 Sections 7.1-7.3 Sections 7.4-7.5 Chapter 8 Section 10.2 Section 10.4 Section 10.5 Handout