Theory of Computation

'''In theoretical computer science and mathematics, the theory of computation is the branch that deals with whether and how efficiently problems can be solved on a model of computation, using an algorithm. The field is divided into three major branches: automata theory, computability theory and computational complexity theory.''' -Derived from Wikipedia

In the above diagram, we see the relationships between computability theory, complexity theory and formal language theory.

Above is an artists rendering of an hypothetical Turing machine,. "A Turing machine is a hypothetical device that manipulates symbols on a strip of tape according to a table of rules. Despite its simplicity, a Turing machine can be adapted to simulate the logic of any computer algorithm, and is particularly useful in explaining the functions of a CPU inside a computer."