Theoretical models of simple computing machines, known as automata, play a central role in computer science. This textbook presents an introduction to the theory of automata and to their connection with the study of languages. At the heart of the book is the notion that by considering a language as a set of words it is possible to construct automata which "recognize" words in the language. Consequently one can generate a correspondence between a hierarchy...