This book presents the foundations of theoretical computer science in a format accessible to undergraduate computer science students. Designed to serve as a text for a one-semester introductory course in the theory of computation, the book covers the traditional topics of formal languages, automata, computability, and computational complexity. In his book, Glenn Brookshear encourages students to appreciate the theoretical ideas as the foundation on which real problems are solved, rather than viewing them as unuseable abstractions. Theory of Computation covers regular, context-free, and general phrase-structure languages along with their associated automata, computability in the context of Turing machines, partial recursive functions and simple programming languages, and complexity theory with an introduction to some of the open classification problems relating to the classes P and NP.