Formal Languages and Automata Theory deals with the mathematical abstraction model of computation and its relation to formal languages. This book is intended to expose students to the theoretical development of computer science. It also provides conceptual tools that practitioners use in computer engineering. An assortment of problems illustrative of each method is solved in all possible ways for the benefit of students. The book also presents challenging exercises designed to hone the analytical skills of students.