Part.1 Mathematical Notation and Techniques -- Part.2 Regular Languages and Finite Automata -- Part.3 Context-Free Languages and Pushdown Automata -- Part.4 Turing Machines and Their Languages -- Part.5 Unsolvable Problems and Computable Functions -- Part.6 Introduction to Computational Complexity --
Providing an introduction to the theory of computation, this work emphasizes formal languages, automata and abstract models of computation, and computability. It includes an introduction to computational complexity and NP-completeness. It also introduces the necessary mathematical tools in the context in which they are used.