Combining concepts of mathematics and computer science, this book is about the sequences of symbols that can be generated by simple models of computation called finite automata. Suitable for graduate students or advanced undergraduates, it starts from elementary principles and develops the basic theory. The study then progresses to show how these ideas can be applied to solve problems in number theory and physics.