The abstract branch of theoretical computer science known as Computation
Theory typically appears in undergraduate academic curricula in a form
that obscures both the mathematical concepts that are central to the
various components of the theory and the relevance of the theory to the
typical student. This regrettable situation is due largely to the
thematic tension among three main competing principles for organizing
the material in the course.
This book is motivated by the belief that a deep understanding of, and
operational control over, the few "big" mathematical ideas that underlie
Computation Theory is the best way to enable the typical student to
assimilate the "big" ideas of Computation Theory into her daily
computational life.