Introduction to the Theory of ComputationMichael 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 lowlevel 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 upperlevel 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. 
What people are saying  Write a review
User ratings
5 stars 
 
4 stars 
 
3 stars 
 
2 stars 
 
1 star 

Review: Introduction to the Theory of Computation
User Review  Lewis Cawthorne  GoodreadsHad to shelve this about a third in to focus on classes, but looking forward to finishing it. Read full review
Review: Introduction to the Theory of Computation
User Review  Yunjiang Jiang  GoodreadsThe best math book I have ever read. Read full review
Contents
Introduction IONvJ0JlJJvllI  1 
Regular Languages  31 
ContextFree Languages  91 
Copyright  
10 other sections not shown
Common terms and phrases
3SAT alphabet arrows automata binary Boolean circuit Boolean formula branch called cell Chomsky normal form clause computation history construct contains contextfree grammar contextfree language convert corresponding decidable decidable language deﬁne describe deterministic directed graph edges encoding equivalent example exponential FIGURE ﬁnd ﬁnger ﬁnite automaton ﬁrst ﬁxed following ﬁgure formal deﬁnition function f give GNFA graph G halts Hence induction inﬁnite input string integer labeled log space mathematical move natural numbers nondeterministic nondeterministic Turing machine notation NPcomplete operation oracle output parse tree Player polynomial polynomial time algorithm polynomial time reducible PROOF IDEA prove PSPACE pumping lemma pushdown automaton quantiﬁers recognizes recursion theorem regular expression regular languages reject runs satisﬁable satisfying assignment sequence simulation space complexity stage statement steps strings of length tape transition function true Turing machine Turingrecognizable undecidable variables Veriﬁer write