Theory of computation is the study of what problems can be solved by computational models and how efficiently they can be solved. It includes automata theory, computability theory, and computational complexity theory.
In theoretical computer science and mathematics, the theory of computation is the branch that deals with how efficiently problems can be solved on a model of computation, using an algorithm. The field is divided into three major branches: automata theory and languages, computability theory, and computational complexity theory, which are linked by the question: "What are the fundamental capabilities and limitations of computers?".