Course description
This is an introductory, undergraduate level course on the theory of computation.
We will start with simple models of computation (DFAs, NFA, PDAs). We will then focus on the fundamental mathematical model of a Turing Machine, discuss its powers and limitations, discuss computational resources
that a TM might use (time, space, randomness) and the complexity classes associated with them (P, NP, PSPACE, BPP, RP, etc).
Prerequisites: Mathematical maturity.