Introduction to the Theory of Computation
Automata and regular languages
Context free and Pushdown Automata
Turing machines