Michael Sipser’s philosophy in writing this book is simple: make the subject interesting and relevant, and the students will learn. His emphasis on unifying computer science theory – rather than offering a collection of low-level details – sets the book apart, as do his intuitive explanations. Throughout the book, Sipser – a noted authority on the theory of computation – builds students’ knowledge of conceptual tools used in computer science, the aesthetic sense they need to create elegant systems, and the ability to think through problems on their own.

INTRODUCTION TO THE THEORY OF COMPUTATION provides a mathematical treatment of computation theory grounded in theorems and proofs. Proofs are presented with a “proof idea” component to reveal the concepts underpinning the formalism. Algorithms are presented using prose instead of pseudocode to focus attention on the algorithms themselves, rather than on specific computational models.

Topic coverage, terminology, and order of presentation are traditional for an upper-level course in computer science theory. Users of the Preliminary Edition (now out of print) will be interested to note several new chapters on complexity theory: Chapter 8 on space complexity; Chapter 9 on provable intractability, and Chapter 10 on advanced topics, including approximation algorithms, alternation, interactive proof systems, cryptography, and parallel computing.

PART 1: AUTOMATA AND LANGUAGES.

1. Regular Languages.

2. Context-Free Languages.

PART 2: COMPUTABILITY THEORY.

3. The Church-Turing Thesis.

4. Decidability.

5. Reducibility.

6. Advanced Topics in Computability Theory.

PART 3: COMPLEXITY THEORY.

7. Time Complexity.

8. Space Complexity.

9. Intractability.

10. Advanced Topics in Complexity Theory.

Selected Bibliography.

REVIEW