Software for The Most Complex Machine
This page briefly describes the software written to accompany
the book 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.
These programs are free. I will make them available as soon as
the book is published, later this Spring. They are interesting on
their own, even apart from the book (although I hope that if you like
them, you'll buy the book).
Currently, the programs are available for Macintosh computers only.
However, I have plans to produce versions that will run Windows.
- 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
- A Turing Machine is an type of computing device invented in the
1930s by Alan Turning. 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.