This textbook provides undergraduate students with an introduction to the basic theoretical models of computability, and develops some of the model's rich and varied structure. The first part of the book is devoted to finite automata and their properties. Pushdown automata provide a broader class of models and enable the analysis of context-free languages. In the remaining chapters, Turing machines are introduced and the book culminates in analyses...