Iterations – Norberg –
Software Development at EMCC
5
keeping contact with potential customers, and overseeing the
programming group, worked with several people on such problems as the
generation of random numbers, bi-harmonic problems, and programs for
BINAC. Jennings spent most of her energies on test routines for BINAC.
She even used some time programming chess and gin rummy games.
9
Rounding out the early programming group, Grace Murray Hopper, who
joined EMCC in 1949, possessed substantial training in mathematics and
experience in computer development and coding. She studied mathematics
at Vassar College in the 1920s, and in 1934 received a Ph.D. in
mathematics from Yale. Hopper was elected to Phi Beta Kappa and Sigma
Xi for her accomplishments. For a spell in the 1930s, she taught
mathematics at Vassar and held a postdoctoral fellowship award from
Vassar, which she used at New York University in 1941. She entered the
US Navy in 1943, and, after training, was posted to the Bureau of
Ordnance Computation Project at Harvard University. Working with
Howard Aiken on the Mark I and Mark II, she developed several
programs, and served as co-author of the Mark I and Mark II computer
manuals.
10
Hopper joined the Harvard staff as a Research Fellow in 1946,
continuing to work on Mark II and Mark III for the navy. From this
position, she moved to EMCC. Rounding out the early group was Herbert
F. Mitchell, who joined EMCC in 1949 and became head of the new
Laboratory for Computational Analysis. Mitchell received a Ph.D. from
Harvard in 1948, where his dissertation advisor was Howard Aiken and he
worked on developments in numerical analysis. Hopper and Mitchell had
worked together on various Mark designs at Harvard after the war.
The EMCC programming activities fell into three categories. First, there
were the requests of the customers for programs to accomplish their tasks
of payroll, procedural flows, accounting, and purchasing. Second, there
was commercial research undertaken by EMCC to enhance sales of
computer systems: collation, sorting, merging, editing, tabulated
examples, and integrated systems for payroll. And third, EMCC engaged
in engineering studies in collaboration with the engineering design group.
Besides the logical design of BINAC and UNIVAC, they investigated the
logical design of the UNITYPER, card-to-tape converter, supervisory
control, speed comparisons of codes, error detection, and reliability.
11
To understand this group’s activity better, it is useful to return to March
1947, an important month in EMCC, as the engineering and programming
groups made many decisions about basic design, which no doubt is the
reason Snyder served as a consultant during this time and the applications
group began to grow in the following summer. For example, March 11 and
12 were devoted to a design conference on the EDVAC II. During this
conference the staff discussed the basic activities of their design—sorting
speed, conversion of data from tape to memory and back, instructions for
Iterations – Norberg – Software Development at EMCC
6
operating the tape system,
displaying the memory, instructions for moving
from one point in a program to another, and starting and stopping. The
give and take during the meeting, as reflected in summary minutes,
resulted in some major decisions of how the storage system would be
designed and operated.
12
Census problems would require significant
sorting, and if the EDVAC II used binary sorting instead of decimal, then
gains over punch card systems would be offset making the EDVAC II and
the punch card systems near equal for sorting. Moreover, in systems with a
long latency period, sorting would be very time consuming. Times of
recovery of data with tapes were estimated to be about ½ millisecond. “If
mercury tanks holding 20 words are used, the average time lost in
obtaining a word from such a memory is ½ millisec.” This meant that the
internal speed of discriminating was comparable with the speed of the
input and output.
13
Calculation revealed that the gain in sorting using
EDVAC II would be in the neighborhood of 2.5, a bad comparison when
other tasks on the system showed gains of 100 to 1000. Some adjustments
would have to be made. They discussed decreasing the latency time by
using 10 word tanks instead of 20 word tanks. They believed they could
insert some parallelism by providing for simultaneous use of internal
operations and tape reading and writing. Data could then be transferred in
blocks rather than individually. The discussion at the meeting was done
under an assumption of a pulse rate of 1 megacycle. In further
consideration of the input/output issues, the group evaluated doubling the
pulse rate and returning to the 20 word tanks, but this raised reliability
questions. Further study seemed needed. Virtually all of these ideas were
tried over the next year.
Some of the instructions to accomplish these operations were obvious to
the group, such as the arithmetic functions. Therefore, they only spent
time considering additional orders to transfer data in the most efficacious
manner. “It is desirable to make the orders used for reading and writing on
tapes as simple as possible for the operator to use, and as simple as
possible to ‘mechanize’ in control equipment.”
14
Of four tapes, the system
could run two at a time, with provision for running forward and reverse
and reading and writing on different tapes simultaneously. Several
instructions were to be designed for this purpose.
15
Over the next six
weeks, Mauchly and Snyder designed the first instruction set of 26
instructions, five of which would later be dropped.
16
Between March 1947 and May 1949, the applications group developed
and analyzed ten variations of the code, or instruction set, for EMCC
designs and design changes. Many similarities exist across these codes,
although there are some important differences. C-1 through C-4 were
based on a 2-megacycle pulse repetition rate; the next four schemes
involved a 4-megacycle rate. C-9 dropped back to 2 megacycles, and C-
10, the final instruction set for UNIVAC I, was to operate on 2.25