Introduction to the theory of computation -- Finite automata -- Regular languages and regular grammars -- Properties of regular languages -- Simplification of context-free grammars and normal forms -- Pushdown automata -- Properties of context-free languages -- Turing machines -- Other models of Turing machines -- A hierarchy of formal languages and automata -- Limits of algorithmic computation -- Other models of computation -- An overview of computational complexity.