This innovative textbook presents the key foundational concepts that can be covered in a one semester undergraduate course in the theory of computation. It offers the most accessible and motivational course material available for undergraduate computer theory classes and is directed at the typical undergraduate who may have difficulty understanding the relevance of the course to their future careers. The text helps make students more comfortable with techniques required for the deeper study of computer science.
This text is a bridge between theory and practice. It shows how theory is motivated by practical problems, and in turn how theory influences the practice of computing. Simple tools like string matchers, complex tools like compilers, and general notions like cryptographic security all lie at the interface between principles and practice.
* Contains coverage of contemporary topics: languages and problems, machine models, grammars, reductions, resource consumption, syntax vs. semantics, sequential vs. parallel computation, feasible vs. intractable problems
* Motivates students by clarifying complex theory with many examples, exercises, and detailed proofs
* Offers an integrated review of discrete math concepts, defining each concept where it is first used
* Unifies notation for describing machine models
* Emphasizes computational complexity