Automata & Formal Languages
The theory of automata and formal languages deals with the problem of modeling computation: what is a computer, and what are its fundamental capabilities? Thus, it constitutes the basis for further studies on the theory of computability and complexity. Additionally, Automata and Formal Languages is a very practical course, as it provides knowledge of the models used in many branches of computer science, from scanners and lexical analyzers in compilers, to programs for designing digital circuits, and even in other areas such as linguistics. At the end of this course you will be familiar with models of computations used today, you will understand how they are fundamental to further studies and you will be ready for a more advanced course on the theory of computation.
- Introduction to the Theory of Computation, Michael Sipser, ANY edition