Study in the foundations of computing building from Alan Turing's original paper defining a Turing Machine, the concept of a Universal Machine, and his solution to the Hilbert's Entscheidungsproblem.
Topics include: finite automata and regular languages, push down automata and context free grammars, Turing Machines and Chomsky's hierarchy of grammars; decidability of typical problems within finite state machines; time and space complexity, P versus NP, and NP-completeness