JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
Back to the library
Computer Science 1945

First Draft of a Report on the EDVAC

John von Neumann

Keep a computer's orders in the same memory as its numbers — the design every machine still uses.

Choose your version
In depth · the introduction

The blueprint that let a computer change its own instructions — by keeping them in the same memory as its data.

The idea, unpacked

Early electronic machines like ENIAC were programmed by physically rewiring them — setting switches and replugging cables, which could take days for a new problem. Von Neumann's report proposed something different: write the program as numbers and store it in the machine's memory, right next to the data it works on.

That single decision is the stored-program idea. Because the instructions are just numbers sitting in memory, the machine can read them, follow them one by one, and even change them — so the same physical computer can run any program you load, with no rewiring at all. Loading new software, rather than rebuilding hardware, is how every computer has worked ever since.

Where it came from

In the spring of 1945, von Neumann was consulting on the EDVAC, the planned successor to ENIAC at the University of Pennsylvania. He gathered the team's discussions into a handwritten draft; Herman Goldstine had it typed and mailed to about two dozen people on 30 June 1945, with von Neumann's name on the front. It was only a ‘first draft,’ unfinished and without diagrams — yet it stated the logical design so clearly that it escaped the project and set the template for the entire field.

The draft also carried a sting that is still felt. The engineers J. Presper Eckert and John Mauchly, who had built ENIAC, considered the ideas a group effort and were dismayed to see a single name on the front page — a dispute over who deserves the credit that historians still argue about today.

Why it mattered

Before this, a ‘computer’ was a special-purpose machine: to tackle a new kind of problem, you rebuilt it. After it, the machine became general — you changed what it did simply by changing the numbers in its memory. That is the whole difference between a calculator and a computer, and it is why one laptop can be a typewriter, a darkroom, a cinema and a games console, depending only on which program happens to be loaded.

An analogy

Think of a player piano. The old kind reads its tune from a punched paper roll: the music and the machine are separate, and to play a new song you feed in a new roll. A von Neumann machine instead keeps the song sheet inside the very same drawer as its scratch paper, written in the same shorthand — so it can not only play the tune but rewrite it mid-performance. The instructions and the data share one drawer. Try the tiny machine below.

A row of eight memory cells: cells 0–3 hold the orders LOAD 6, ADD 7, STORE 5, HALT, and cells 5–7 hold numbers. A clock-step slider fetches and runs one order at a time, highlighting the order and the data cell it uses, while the program counter and accumulator update; an operand slider changes the number in cell 6 so the stored result in cell 5 changes.

Where it sits

It is the engineering twin of two other ideas in this Library. Alan Turing had shown in 1936 that a single ‘universal machine’ could imitate any other by reading a description of it — von Neumann's report is how you actually build one. And Claude Shannon's 1948 work measured information in bits, the very stuff von Neumann's memory stores. Turing's theory, Shannon's bit, and von Neumann's architecture are the three pillars under every computer.

The original document
Original source text
John von Neumann · Moore School of Electrical Engineering, University of Pennsylvania · distributed June 30, 1945 by Herman H. Goldstine · 101-page typescript
1. The aim
The considerations which follow deal with the structure of a very high speed automatic digital computing system, and in particular with its logical control.
From the first line the report sets out to describe a logical structure, not a wiring diagram. Von Neumann idealizes the components as two-state, all-or-none elements — borrowing the formal neuron of McCulloch and Pitts — so the argument is about organization, not vacuum tubes.
2. The organs of the machine
The device is divided into parts: a central arithmetical unit (CA) for the elementary operations; a central control (CC) that sequences the work by interpreting coded orders; a memory (M); and the input (I), output (O), and an outside recording medium (R).
The three specific parts CA, CC (together C) and M correspond to the associative neurons in the human nervous system. It remains to discuss the equivalents of the sensory or afferent and the motor or efferent neurons. These are the input and the output organs of the device.
3. One memory for numbers and for orders
The instructions which govern a complicated problem may constitute considerable material, particularly so, if the code is circumstantial (which it is in most arrangements). This material must be remembered.
While it appeared that various parts of this memory have to perform functions which differ somewhat in their nature and considerably in their purpose, it is nevertheless tempting to treat the entire memory as one organ, and to have its parts even as interchangeable as possible for the various functions enumerated above.
So the orders that govern a problem are kept in the same memory M as the numbers they act on, in the same form and addressed the same way. This is the stored-program principle — the single idea for which the report is remembered.
[ … ]
The document is explicitly a “First Draft”: it breaks off before the detailed circuit engineering, carries no references, and names only von Neumann, though it distilled discussions of the whole EDVAC team. The full text — definitions, the binary arithmetic of CA, the coding of orders — is at the source below.
Moore School, University of Pennsylvania · June 1945