Automata theory deals with the definitions and properties of mathematical models of computation. These models play a role in several areas of computer science. One model, called the finite automaton is used in text processing, compilers and hardware design. Another model, called the context-free grammar (which is equivalent to pushdown automaton), is used in programming languages and artificial intellegience. Yet another model, called Turing machine, is used in formalizing the notion of computability. The Church-Turing thesis states that the intuitive notion of algorithms is equivalent to Turing machine algorithms, which makes it possible to establish various undecidablity results. For instance, it is to be presented in the course that the halting problem is undecidable.
The course also studies various time complexity results on algorithms, introducing two important classes of problems P and NP.
Automata and Formal Language is an excellent place to begin the study of the theory of computation, allowing practice with mathematical formalism.