view quicktime movie (~2M)

Turing is an interactive visualization of Alan Turing's famous computational machine. It is the first in a series of projects which aim to make the process of programming more intuitive. A Turing machine is essentially a miniature model of a computer with a memory tape, and a memory-reading head. Upon reading the current letter on the tape, the head may write a new letter onto the tape, and then move left or right on the tape. The logic in the machine is embodied in the transitions between the states. Each transition has associated with it an input symbol, an output symbol, and a selection between left and right. If the letter on the tape matches the input symbol, the output symbol is written to the tape, and it then moves left or right. It has been proven in fact that any thing which could be computed, could be done on a Turing machine.

Several key ideas were generated in the development of Turing. The first is the idea that computation is made of two parts: the program and the memory. Unfortunately, programmers never see the memory despite the fact that they are operating on it all the time. The second idea is that code can be clustered and then laid out on the screen to use the whole space available. Optimally, this layout process should be done by the programmer so that he or she leaves a mental map of the program when it is complete. The last ideas which came out of Turing development was variable speed computation. While one normally wants programs to run at maximum speed, it is convenient for the programmer to be able see the code run slowly over a crucial area. These are ideas are all being incorporated into the more advanced CodeFocus environment.


jared schiffman

aesthetics & computation group
mit media lab