The Most Complex Machine

Software for Macintosh Computers

This page briefly describes the software written to accompany
The Most Complex Machine: A Survey of Computers and Computers,
by David Eck.

You can also read summaries of the labs based on these programs, and you can get information about downloading the lab worksheets and programs.

THE PROGRAMS described on this page are free and can be downloaded for use on any Macintosh computer. There is also a set of fifteen lab worksheets that can be used with the programs. All of the programs are now available as Java applets, for on-line use, with their own set of lab worksheets. You'll find all the new material on the TMCM Java page. I do not expect to do any further work on the Macintosh version of this material.

The Programs:


A logic gate is an electronic component that computes some "logical function." An AND gate, for example, has two input wires and one output wire. It turns its output wire ON whenever its first input is on AND its second input wire is on. There are also OR gates and AND gates. Gates perform very simple computations. To perform more complex computations, they can be combined into "logic circuits". A computer is, basically, just an exceedingly complex logic circuits. The program xLogicCircuits allows you to construct simulated logic circuits on the computer's screen and watch them compute. You can't build a computer, but you can build addition circuits, memory circuits, timing circuits...


A computer executes a program by repeating a fairly simple "fetch-and-execute cycle" over and over. In the "fetch" part of the cycle, the computer gets a program instruction from memory. The instruction is fetched into the computer's CPU (Central Processing Unit), where all the most interesting stuff happens. Then, in the "execute" part, the CPU goes through a sequence of steps to carry out the instruction. The instructions that the CPU can execute directly in this way make up the computer's "machine language." The xComputer program allows you to write machine language programs for a simple model computer and then watch as the program is executed step-by-step. You can observe the contents of the CPU and memory. Think of it as a "visible computer."


A Turing Machine is an type of computing device invented in the 1930s by Alan Turing. Turing Machines are not meant to be built physically. They are "abstract machines" meant to be studied on the theoretical level. The individual steps in a Turing Machine's computations are almost ridiculously simple. Nevertheless, Turing Machines can solve any problem that can be solved by any real computer. The best way to understand Turing Machines--and to convince yourself of their computational power--is to watch them compute. The xTuringMachine program allows you to program Turing Machines and watch as they carry out their programs.


Turtle graphics refers to a set of commands that can be used to produce pictures on a computer screen. (Imagine an invisible turtle on the screen, moving and turning about, drawing lines as it moves.) The xTurtle program lets you write programs in a language that includes turtle graphics commands. Except for data structures, this is an full-powered language that includes recursive subroutines and even multiprocessing capabilities. The graphics are there mostly so that you can watch what is going on.


"Sorting" means arranging a list of items into increasing (or decreasing) order. There are many different sorting algorithms; xSortLab works with five of these: Bubble Sort, Selection Sort, Insertion Sort, Merge Sort and QuickSort. You can watch each of these methods in action as it sorts sixteen bars of various lengths. The program can also (invisibly) sort arrays of different sizes and report the execution time, number of comparisons, and number of copy operations. This illustrates the difference between O(n*log(n)) and O(n-squared) algorithms. (See chapter 9 of the text.)

xModels-2D and xModels-3D

Generating images on a computer is often done in two stages. In the first, a "geometric model" is created. This is a model made up of simple geometric forms such as lines and triangles. In the second stage, color is added to the surfaces in the image. The programs xModels-2D and xModels-3D deal with the first stage--geometric modeling--in two and three dimensions. You can construct a line drawing of an image by writing a scene description in a specialized language. The scene descriptions are "hierarchical." That is, once you have modeled an object, you can easily include that object as part of more complex objects. Both programs support animation. You can specify the motion of any or all of the objects in your model. The program will draw a sequence of frames and play them back as an animation.


A minor program that I use as part of an introduction to the Macintosh computer. It is just a very basic text editor. (It does demonstrate the type of text editing used in some of the more interesting programs listed above.)

Data Reps

Another minor program that shows how different types of data (integers, real numbers, binary numbers, characters, graphics) can all be represented by strings of zeros and ones.