Computability and complexity
The most general models of computation are described: Turing machines, context-sensitive grammars and general recursive functions. The significance of non-determinism in computation is explained. The limits of these models are then given, showing the undecidability of some decision problems, such as the halting problem. Finally, the complexity classes P, NP and EXP, are given, with particular emphasis on NP-complete problems.