Supporting Technical Materials

For Ch. 2: Structuring ENIAC

We have redrawn two crucial diagrams from ENIAC’s first main progress report, dated December 31, 1943. Designated PX-1-81 and PX-1-82 they summarize early work to design a “set up” for ENIAC to calculate the trajectory of shells by performing numerical integration with Heun’s Method. This was the application ENIAC was built to carry out, and these detailed planning documents played an important role in determining its final design. Their date was particularly exciting to us, as earlier discussion of ENIAC programming has implied that work was done on this problem only from mid-1945 onward when ENIAC’s first cohort of operators was hired. We describe the creation of these diagrams on pages 37-43.

  • PX-1-81,  “Setup of exterior ballistic equations” from vol. 2. of December 31, 1943 ENIAC progress report. Redrawn by Mark Priestley.
  • PX-1-82, “Panel Diagram,”  from vol 2 of December 31, 1943 ENIAC progress report. Redrawn by Mark Priestley.

For Ch. 7: Converting ENIAC

Work planned from 1947 and initially implemented in March  and April of 1948 turned ENIAC into the first computer able to run a program written in what we call the “modern code paradigm” — i.e. one expressed as a series of instruction codes and arguments and executed from a random access memory to permit jumps. The earliest surviving plan for this conversion was written up by Adele Goldstine in 1947 and is available in a retyped version below. We also transcribed the first published version of the code as actually implemented, from 1949, together with an errata appendix capturing its evolution in use over the next two years.

For Ch. 8: ENIAC Goes to Monte Carlo

In this chapter we discuss the process of flow diagramming and analysis by which a team including John von Neumann, Klara von Neumann and Nicholas Metropolis took the first computerized Monte Carlo computations from an initial computation plan to a fully worked through flow diagram.  However there is a rather severe limit on how far one can go in such discussion without exceeding the patience of even the most accommodating press and the most committed reader. The technical report below takes a systematic approach to documenting the development for the planned computation from the initial outline through the second major revision of the code. The most complete archival version of this diagram was far too large to reproduce in total within the book, so we are placing it online.

  • Mark Priestley & Thomas Haigh, Monte Carlo Computation Analysis (version 1.0, January 2016):  A technical report describing the evolution of planning for the Monte Carlo calculations from an initial plan of computation in 1947 through various revisions to the second major version of the program code.
  • Monte Carlo Flow Diagram, December 9, 1947, in John von Neumann Papers, Library of Congress Manuscripts Division box 12, folder 6. Reproduced with permission of Marina von Neumann Whitman.

For Ch. 9: ENIAC Tries Its Luck

This chapter discusses the running of a series of ENIAC Monte Carlo computations for nuclear researchers at Los Alamos and Argonne, from the “First Run” in March and April of 1948 to the calculations in the summer of 1950 that finally persuaded Edward Teller that his “Super” design for a hydrogen bomb was unworkable.

We were exceptionally lucky to discover that the full program code for the “Second Run” revision of the Los Alamos code, run in the fall of 1948, was preserved among John von Neumann’s papers at the Library of Congress. This is a version of the first modern program ever executed on a computer, and its more complex and better preserved than any other 1940s code of which we are aware. Materials supporting this chapter include a scan of the archival copy,  a report compiled by Klara von Neumann discussing the program used for the first and second “runs,” an annotated and corrected version explaining the functioning of each part of the code, and a redrawn flow diagram for the second run code.

For Ch. 11: ENIAC and Its Contemporaries Meet the “Stored Program Concept”

This chapter dives into some rather technical areas of historiography, to explore ENIAC’s relationship to the “stored program concept.” The question of whether ENIAC, after its 1948 conversion, was truly a “stored program computer,” and hence whether it should be awarded a figurative prize as the first such machine, has been debated since the 1980s. Our conclusion is that the term “stored program computer” has been too overloaded with different meanings to be useful here, and we instead favor separating it into three more precise paradigms derived from the 1945 “First Draft” design for EDVAC: the EDVAC hardware paradigm, the von Neumann architecture, and the modern code paradigm. We appeal for analysts to focus more on the actual capabilities of historic computers as used, and less on the theoretical limitations of their architectures if given unlimited time and memory capacity.

However we were not able to entirely resist the temptation to play this traditional game by exploring the theoretical limits of ENIAC’s  post-April 1948 instruction set . We succumb on pages 254-257, concluding that its computational power was equivalent to von Neumann’s 1945 design for EDVAC. This depends in part on the assertion that “accumulator memory could have been made addressable by writing parameterized storage subroutines.” In case anyone is interested in a demonstration of the technique required we produced the short technical report below.

Making and Remaking the Modern Computer