Theory of computation is seen as a branch of both theoretical computer science and modern mathematics (however, it also contains some concepts from pure mathematics). Theory of computation shows how one can effectively solve a problem using a computational model. A number of computational models are described in theory of computation. Algorithm is most common format of computational model. Algorithm is a logical, systematic presentation of the process of problem solution. It theoretically represents the procedure of solving a particular problem. Flowchart is another form of such model of computation. Simply, flowchart is a graphical representation of any algorithm, using various symbols. Each symbol of flowchart represents a particular action. Algorithms and flowcharts possess a strong relation among each other. Yet, theory of computation talks more deeply and descriptively about algorithms and less about flowcharts.

Theories, which are too broad, are often divided into sub theories or branches. Such division allows one to approach and learn the theory efficiently. Theory of computation is divided into four main branches. Many people see these branches as individual sub theories (sub theories and branches are both different terms). These main branches/sub theories are as following:
Automata Theory
Formal Language Theory
Computability Theory
Computational Complexity Theory 