This book offers a fresh perspective on the study and teaching of the Theory of Computation. The book covers new developments not typically addressed in other texts on the subject, such as algebraic theory, new applications of finite automata and regular languages, and topics from compiler theory that are closely related.