The following is the slightly edited text, and some of the
slides, from a talk I gave at the University of Bergen (Bergen, Norway)
in 1993. Some new pictures were added in 2001 in preparation for a talk
at NWPT'01.
By Christmas of that year I decided that I was sufficiently interested in the subject to apply the government to get a summer job as a ``student aid trainee'' in a government computer laboratory. Over the Christmas vacation I took a civil service examination that qualified me to seek such a position. More about that later.
Another important event was that I discovered that Harvard had a computation
Laboratory headed by a then famous computer scientist named Howard Aiken.
Aiken was a very imposing looking person with a personality to match. He
was commonly called ``the Tiger'', but not to his face.
My understanding was that Aiken felt he had invented the computer and
was not receiving adequate recognition for his work. At that time Harvard
had two computers: the Harvard Mark I
and the Harvard Mark IV (actually, the Mark III may have been there
when I first visited the laboratory, but the Mark IV was at least under
construction). The Mark I had been jointly developed with IBM and in IBM
literature it is referred to as the ``IBM automatic sequence controlled
calculator'' However Aiken had had a falling out with IBM and I was advised
never to mention IBM in his presence. The Mark I had been built in 1944
and was not really a computer in the modern sense, in particular it lacked
the ability to manipulate its program -- it was a decimal machine made
out of ten position stepping relays, and was programmed by means of paper
tapes that were the width of IBM cards and were thus, I assume, read by
IBM card readers. It has been designed to compute tables for such things
as naval ordnance and Bessel functions. It did a grand total of three operations
a second with considerable accompanying noise. The Mark IV was a
more modern computer which I'll discuss a little later.
I also discovered at this time that there was a course about ``modern computer design '' offered by the University and that the course would be taught that spring. I have forgotten the name of the professor who was offering the course. I do remember that it was not Aiken, this was fortunate as I had enough trouble building up the courage to ask the professor if I might sit in on the course for free. He was happy to have me sit in and to include me on the various field trips that were part of the course. This was just before the invention of the transistor so the state of the art was vacuum tubes and semi-conductor diodes. The big problem was memory. A computer memory built out of vacuum tubes is very expensive. I can't remember what was done on the Mark IV but I do remember taking a field trip during that course where we saw a computer under development at, I believe, the Raytheon corporation. In that computer the memory consisted of mercury delay lines. These were boxes filled with mercury with, in effect, a loudspeaker at one end and a microphone at the other, the contents of the memory was a sequence of sound pulses that were sent through the box. That computer had something on the order of a memory for several hundred thirty-six or so bit words. Physically the memory consisted of a mercury delay line for each bit -- that is, thirty six boxes operating in parallel. They were very proud of this memory even though it was not operating correctly on the day of our visit. And, I should add, we were also very impressed.
On the basis of my score on the civil service exam and on the basis of having audited the above mentioned class I received a number of job offers for that summer and accepted one at the Bureau of Standards in Washington DC as a student aid trainee in their computation laboratory. Because of my major in physics I was given a position in their components research group. My job was not all that interesting as it consisted largely of collecting data on the aging of semiconductor diodes, but the place as a whole was very interesting. Their computer at that time was the SEAC computer -- Standards Eastern Automatic computer (There was also a SWAC somewhere out on the west coast). I was not allowed to use the computer -- it was a very delicate machine with all its I/O on paper tapes. It was very temperature sensitive and as a result all the air conditioning in the building was dedicated to cooling the computer. Washington is very hot and humid in the summer -- without air conditioning one tends to be covered with a thin layer of perspiration all summer long. I was particularly aware of this as I received a very large number of electric shock from my apparatus for testing the semiconductor diodes. There was considerable emphasis on memory at NBS. The main emphasis was on Williams tube storage -- this is a system where cathode ray tubes are used for storage. Again, as with the mercury delay lines, you have a CRT tube for each bit with the ith bit of many words appearing on the ith CRT. You have a bright spot for a 1 and a blank spot for a 0. A conducting film on the face of the tube is able to detect whether the spot being scanned is bright or blank. Of course you have to continually scan and refresh the image and, as with the delay lines, you may have to wait until the scanners get to the desired word. They were also working on magnetic core memory but with very large cores about the size of my thumbnail. This was an exciting summer but by the end of it I realized that I was more interested in the design of computers than in the physics of components .
That fall I got a part time job in the chemistry department as a ``computer'' (How many people in this field can claim to have been a computer?). What I did was solve sets of eight linear equations eight unknowns for some chemists who were trying to determine the exact shape of a particular tetrahedral molecule . The procedure was that they would do an experiment and produce data in the form of the coefficients for the equations and I would then invert the matrix using a Marchant mechanical calculator and taking about 8 hours at $2 per hour. Fortunately for me, they had a lot of trouble with their data collection and the computations never produced a reasonable shape for the molecule (typically, on a scale where the base triangle formed by three of the atoms would be about 10 cm on a side, the fourth atom would be computed as being about a kilometer away). This paid part of my way through college and was more interesting than being a waiter in a restaurant -- my occupation during my first three years in college. . By the way that the Marchant machine cost about $800 ($5000 NOK) you can get a better machine today for 1/100 the cost.
That fall, when I returned to college I decided learn about the use of computers and so enrolled in a course in numerical analysis that included learning how to program the Mark IV. The programming part of the course was taught by Ken Iverson who later on developed the programming language APL. One of the course requirements was that we would have to write a program and run it on the Mark IV -- I decided to program matrix inversion for 8x8 matrices. Programming the Mark IV was very difficult by today's standards. For starters the programming as done completely in machine language. Instruction were just strings of digits -- the first couple of digits represented the operation codes and the remaining digits indicated which locations in the memory were to be employed. there were no mnemonics or other aids -- all addresses were absolute (what you wrote was what you got). Also there were no index registers so in order to add together the contents of memory locations 100 through 200 you had to either write 100 addition instructions or write codes that directly modified your program as it ran. One saving grace in all this is that the computer was decimal rather than binary so all these computations were carried out in ordinary everyday familiar arithmetic. Another complication was that the machine went through its instructions at a fixed rate -- and if you did a division say at step 10 the result would not be available until something like 10 times steps later i.e., at step 20 of the program. The programmer thus had a choice of either leaving those steps blank or doing addition, subtraction and shift operations during that time. Since the memory was rather small it was important to try to be efficient and do things during these divisions and multiply gaps -- actually this problem still exists today on some machines but it is taken care of by the compiler and so we never have to contend with it as long as we avoid writing. compilers. The writing of the program to be run on the Mark IV was one of the last events in the course. Despite having had months to work on it I did most of the programming the night before the program was to be run -- it was the only time in college when I actually stayed up for the whole night. But, as you can see, all night hacking is not a recent development The thing that made the project particularly difficult was the manner of entering a program into the computer, The input was done on magnetic tape . The problem was getting the program onto the magnetic tape. This was done using on what I hope was one of the most primitive devices in the history of computing. What you did was mount a tape on a device that (relying on my memory of an event that took place forty years ago) looked something like this slide.
Then yoiur took your program and entered the instructions one by one (number by number) by punching these keys -- as your punched the keys the digits came up in these little window (a mechanical display -- no electronics) if you entered a wrong digit you pushed the erase and started the line over again -- if you got it right you pushed record and it was written on the tape. There was no way to correct for a missed line except by writing in a patch. At three or four n the morning it is extremely hard to operate such a device and I was there for a long, long time. However, after a very fast breakfast, I finally go on the machine. We mounted the tape on the Mark IV, pushed the start button and, of course, got the wrong answer, bugs have also been there since the beginning of computing. However, working on the machine we (Iverson and I) were able to pinpoint all the bugs and it was possible, once the program was in the machine , to modify the contents of locations, and so, after about fifteen minutes I got the correct answer. I knew it was correct since it was a matrix that I had inverted for the chemists somewhat earlier (of course the molecule was still an impossible shape). What did impress me considerably is that, once debugged the program took less than a minute (30 seconds) to run. It was clear that I did not have much of a future as a computer per se. since that made the Mark IV about 500 to 1000 times as fast as I was .
During that same last year of college I also pursued my original interest
in AI like aspects of the subject -- I took a course on the physiology
of the nervous system and I took a course of probability and statistics
in the hope that these subjects would provide the necessary tools for making
some real progress in the area. I didn't find these courses to be very
encouraging even though they were interesting. However, I also took a course
in logic from Willard Quine and that was both interesting and useful. For
one thing it clearly provided tools that would be useful in the logical
design of computers and secondly it stimulated me to design a very small
relay computer for evaluating logical expressions. This activity in logical
design coupled with the need to get a job stimulated me to look for a position
in the then fledgling computer industry. I applied to a number of companies
but it was clear to me that IBM was the leader in the industry at that
time. When I accepted the position at IBM I recall telling Iverson about
it and his immediate remark was to be sure not to tell Howard Aiken about
it (I heeded this advice and so lived on to work at IBM).
A good solid, reliable product in those days was electromechanical and consisted of parts such as the following:
By the time I got to IBM they had pretty well accepted the idea that there was money to be made in the computer business. They were already offering the IBM 701 as a product and I'll have more to say about that shortly. But I was hired to work, as a logical designer on the SAGE computer. This was a big project done jointly by IBM and MIT . At the time I joined the project the computer was called something like the ANFSQ7 -- but later on it was renamed the SAGE computer ( I have said for years that this stood for Simulated Air Ground Environment -- and this may have been true at some time but the official translation is somewhat different and despite having read it last week I forgotten the last two words -- but it started out as Sequenced Automatic something something). The purpose of the computer was to be able to track all the airplanes in an area the size of the NE US in the event of a Soviet air strike. However, Before describing the SAGE let me give you some more idea about its precursors.
Of course there were some business machines around before my time at IBM that were predecessors of the computer. One that I never saw was the Selective Sequence Electronic Calculator that came out in 1948 -- I think they only made one (and it may have also been done in collaboration with Harvard -- but I couldn't tell from the literature of the time). That computer had 20,000 words of paper tape storage (66 readers reading loops of papers tape of the width of IBM cards. 150 words of relay memory and 8, yes eight, words of electronic memory. It could perform a multiplication in 20 milliseconds. The significance of this machine is that it was ``the first operating computer with instructions treated like data. '' That is actually a quote from some IBM literature and I think that the word ``operating'' is probably very significant as John von Neuman is generally regarded as having designed the first computer in which instructions were treated like data and this was not the SSEC but the ``Jonniac '' at the Institute for advanced study in Princeton.
One of the precursors I did get to see and program during my first summer
at IBM, this was the IBM 604 -- this was a n actual product. It had the
capability of performing a program with 60 three address instructions.
The program was first designed on a piece of paper that looked like this
and was then wired into the computer using a wiring panel or plug board
that looked like this. To figure out the wiring one used a piece of paper
that could be laid over the plug board after one had drawn the wires on
it. Here is an actual one from forty years ago with my wired program on
it.
[Sorry, I couldn't get my program to copy
properly -- but here is an example from the manual for the
IBM 604]. It is easy to see that this
way of programming is very messy -- it makes GOTOs look positively benevolent.
The 604 was superseded by the 607. Here is a picture of this worthy
device
and here is an article
about it from an edition of The IBM Record from April (?) 1953. I
have underlined some of the material that is particularly interesting.
If you read the material with the red underline, I think you see some reflection of the belief , widely held at that time, that there was not much of a market for really large computers.
However, the first of the real IBM computers came out essentially at
the same time as I joined IBM. This was the 701. While cleaning out my
office prior to retiring from IBM I found an advertising flier for
the 701. Here is the picture of it from that flier (I have edited the background
to make it a uniform color and I have removed text that was impossible
to read).
As you can see , this is a physically large machine. with many parts.
There are eleven different boxes, from left to right we have: Two Magnetic
tape drives, Magnetic drum storage, power supply, electrostatic storage
(Williams tube), power control and distribution, computing and control,
operator panel, card reader, printer and card punch. However, if we look
closer we find that, by today's standards, this machine is very small.
According to the brocure,
Each reel of magnetic tape can "store more than 2,000,000 digits",
each magnetic drum can "store 40,960 digits" and the William's tube storage
can "store 10,240 digits".
Another way of looking at the size of the Williams tube storage is
that is consisted of 2048 "words" each consisting of 36 bits.
The fast storage, the Williams tubes, had an access time of 12 one-millionths
of a second. i.e. 12 micro-seconds per cycle. Addition took 5 cycles and
multiplication and division both took 38. However, despite the fact that
701 did not have index registers nor an assembly language of
any consequence, it was much easier to program than the Mark IV largely
because of the use of IBM cards as an input medium.
There were some shortcomings however. These early computers were not very reliable. There was no internal checking and programs had to contain lots of checking and also had to print out intermediate results so that not all would be lost in the event of a hardware failure. The degree of unreliability is illustrated by the following:
The williams tube storage was very photogenic.
The motion of the dots of storage gave ;you a picture of the computer
in operation that intrigued visiting dignitaries. As a result it was the
practice at IBM's main office in New York to photograph such visiting dignitaries
in front of the williams tube storage. The computer was so generally unreliable,
and broke down so frequently, that it was some time before they realized
that each time they took such a photograph the flash of the flash bulb
completely erased the williams storage.
The 701 was a vacuum tube computer and the tubes were gathered in modules a
long way from a modern silicon chip. But it does explain why the
computer took up so much space.
As I said above, I worked on the design of the control circuitry. I found that my knowledge of logic was useful in logical design and that designing a computer had a lot of satisfactions. But I also felt that there were many problems of a theoretical nature that were more interesting than the day to day problems of engineering design. While logic was useful, minimization was very difficult and eventually it was thinking about this problem that lead me to become a researcher rather than an engineer. There were also lots of other problems of design . One that was answered shortly after that time was how to handle the endless drawing and redrawing of logical diagrams. This took a lot of time and was a very boring job for the draftsmen since the drawing consisted of nothing but little boxes with arrows connecting them. The answer of course was to let the computer do it rather than a small army of bored draftsmen.. A much more difficult problem was the laying out of wiring on the back panels of the computer. Unless you have tried it you can barely imagine the feeling of frustration one has when you lay out several hundred wires and and discover that there are still five more wires to put in and the only feasible thing to do is to start over. One of my co-worker became so tense from doing wiring layouts that he began constantly losing things such as his wallet, his car keys, his pen, etc. and was finally sent on vacation.
To be on the project we all had to get government clearance. The first level of clearance, confidential clearance, did not take long to get. However, we were then required to get secret clearance. That took a long time and caused problems because something we had designed could be classified secret and then we were not supposed to know anything about it. In particular, it is very frustrating when, as the inventor of some part of the computer, you are not allowed to read the documents you have written about it People had this problem the whole time I was on the project (from June 1953 until April 1954). I left the project when I was drafted into the United States Army. My clearance came though after I went into the Army, where, of course, I didn't need it.
Upon my release from the army I returned to IBM, but as a researcher on Switching Theory in their newly formed IBM Research Division. This lead to IBM sending me to graduate school at Columbia for a PhD in Mathematics. From there I returned to IBM where I stayed until I retired in 1993. I continue to do mathematical research in theoretical computer science.
Revised 2 September 2001