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.
The theory of computing is the study of efficient computation, models of computational processes, and their limits. Research at Cornell spans all areas of the theory of computing and is responsible for the development of modern computational complexity theory, the foundations of efficient graph algorithms, and the use of applied logic and formal verification for building reliable systems.
Computations consist of events and can be represented as graphs, where edges between events reflect various relations. Nodes and edges will have attributes called labels, states, values, colors, parameters, etc. We require different labels for any two edges with the same source. Edges of one type, called causal, run from each event x to all events essential for the occurrence or attributes of x. They form a directed acyclic graph (though cycles are sometimes added artificially to mark the input parts of the computation).
A frequently encountered situation in the theory of computation is that at least suprema of certain chains exist (or are adjoined as new "ideal objects"), while binary joins occur rather rarely. Indeed, it is not clear a priori what kind of suprema are most adequate for the intended theory, but the consideration of directed supprema turned out to be one of the most reasonable and convenient settings; fortunately, we know from the first section that in most cases, it suffices to work with well-ordered chains instead of directed sets, while the restriction to sequences or to countable directed sets sometimes requires a slightly modified approach.
The motivation for trying to formulate a mathematical theory of computation is to give mathematical semantics for high-level computer languages. The word "mathematical" is to be contrasted in this context with some suck term as "operational."
The Theory of Computation provides a new viewpoint on old phenomena. For example, a computational approach to randomness leads to the conclusion that randomness can be expanded almost arbitrarily (cf. the theory of pseudorandomness). Likewise, a computational approach to proofs leads to the conclusion that obtaining a proof to a statement may not teach you anything beyond the validity of the statement (such proofs are called zero-knowledge). In general, a computational approach to proofs leads to the realization that the standard notion may be generalized by allowing interaction and randomization, and the derived notions of probabilistic proof systems offer many advantages over standard (static and deterministic) proof systems.
Theory of Computation (TOC) is the study of the inherent capabilities and limitations of computers: not just the computers of today, but any computers that could ever be built. By its nature, the subject is close to mathematics, with progress made by conjectures, theorems, and proofs. What sets TOC apart, however, is its goal of understanding computation -- not only as a tool but as a fundamental phenomenon in its own right.
The foundations (or theory) of computer science can be partitioned into two sub-disciplines: one concerned with the Theory of Computation, and the other concerned with the Theory of Programming. The Theory of Computation aims at understanding the nature of computation, and specifically the inherent possibilities and limitations of efficient computations. The Theory of Programming is concerned with the actual task of implementing computations (i.e., writing computer programs).
The theory of computation does not tell us much about nonalgorithmic activities, such as the dynamics of human-machine interactions, or the social aspects of computing. But even there the theory can contribute - for example, by providing the theory behind the strong encryption technology essential to privacy.
The theory of computation deals with the essence of problems and abstracts away many of the details. The goal of computation theory is to take a real-life problem, with all of its ugly implementation details and ambiguous behavior, and distill the core aspects: Is the problem solvable? How much time does a given instance take? How much memory does it use? How do time and memory requirements grow as the size of the instance gets bigger?
Theory of computing is the fundamental scientific discipline concerned with understanding (efficient) computational phenomena, whether it be man-made, in nature, or imaginary. Among the most important and challenging problems of our time. Deep technological, scientific, and philosophical ramifications.