Theoretical computer science (source code)

= Theoretical computer science
{wiki}

<Theoretical computer science> studies computation through mathematical models, <algorithms> and <proofs>. <Computability theory> asks which problems admit <algorithms> at all; <computational complexity theory> asks what resources solving them requires. <Automata theory>, <mathematical logic> and <formal languages> describe machines and representations. For example, a <finite-state automaton> recognizes a language using finitely many states, while a <Turing machine> provides a more general model with unbounded working storage. Separating a problem's specification from a particular implementation makes it possible to prove both algorithmic upper bounds and impossibility results.