(Page originally by Lars H, but feel free to add material.)
The Turing machine, named after Alan Turing [L1 ], is the classical mathematical model for a general computing device -- the model used to define the term "computable". One should however be aware that there are countless variations of the basic definition that all turn out to be equivalent, so one shouldn't be too bothered with the details. Turing's definition (from 1937) probably gains its popularity from its apparent concreteness, but it wasn't the first.
A Turing machine consists of a finite state automaton, a read/write head, and an infinite tape which the head operates on. The tape is to be thought of as an infinite chain of discrete squares, in each of which is written a symbol from some finite alphabet. Each cycle of the machine operation consists of reading the symbol in the square currently under the head, updating the internal state of the automaton (based on its previous state and the symbol read), and performing one of the following actions (again depending on the previous state of the automaton and the symbol that was read):
Each Turing machine can be thought of as an implementation of an algorithm. The input consists of the symbols initially written on the tape. The output consists of the symbols that are on the tape when the machine halts. The algorithm itself is completely described by the transition function of the finite state automaton and the function that decides which operation the machine should perform.
A universal Turing machine is one which can simulate any other Turing machine. In other words, given the same input tape, it will produce the same output. A universal Turing machine can be made by creating a machine which takes as input first a description of the machine to simulate, and then the actual input. The description of the machine to simulate is an encoding of its finite state automaton as a string of symbols.
There are a couple of obvious variations of the above description whose equivalence should be pointed out.
See also: