On this page
On 6 May 1949 a machine in Cambridge computed a table of the squares of the numbers from 0 to 99. It was a modest job, but EDSAC was running it from a program held in its own memory, and within a year it was doing calculations for scientists across the university. Maurice Wilkes led the team that built it. Our post on John von Neumann covers the 1945 report that described the stored-program idea; this one is about the engineer who turned it into a working service, and the programming habits his laboratory invented.
Who was Maurice Wilkes?
The ACM's Turing Award biography, written by historian Martin Campbell-Kelly, records that Maurice Vincent Wilkes was born on 26 June 1913 in Dudley, England. As a teenager he built crystal radio sets and gained an amateur radio licence. He entered St John's College, Cambridge, in 1931 to read mathematics, and later researched long radio waves at the Cavendish Laboratory. During the war he worked on radar and operations research. The University of Cambridge Computer Laboratory records that he was Head of Department from 1946 until 1980 and died on 29 November 2010, aged 97.
How did EDSAC begin?
In May 1946 Wilkes was shown a copy of von Neumann's First Draft of a Report on the EDVAC. The ACM biography says he stayed up late into the night reading it and recognised it at once as "the real thing". He crossed the Atlantic for a summer school on computer design at the Moore School in Philadelphia, arrived after more than half of it was over, and began designing his own machine on the voyage home. He called it the Electronic Delay Storage Automatic Calculator, EDSAC, a name chosen as a tribute to EDVAC.
The Computer Laboratory's history of the department dates the start of work to October 1946. In 1947 the food company J. Lyons and Company gave a research grant of 3,000 pounds with no conditions attached. EDSAC's memory was a mercury delay line, the ACM biography notes: numbers were kept as pulses travelling through tubes of mercury.
Why does EDSAC matter?
The Cambridge history describes the program of 6 May 1949 as the first logged program on "the first complete and fully operational regular electronic digital stored program computer". It also notes that Manchester's experimental machine ran first, in 1948, built to test a new kind of memory. By 1950 the laboratory offered a regular computing service, and in 1951 Lyons began operating LEO, a business computer based on EDSAC.
Once a machine worked, the hard part moved. Wilkes decided the laboratory would specialise in programming, and the ACM biography calls him perhaps the first person to see that what we now call software would be a worthwhile academic subject.
What did Wilkes's team invent for programming?
Initial Orders. A small loading program, designed by research student David Wheeler and wired into rotary telephone switches. The Cambridge history calls it a primitive assembler.
Closed subroutines and a library. Wheeler's closed subroutines could be called from anywhere in a program, and the laboratory built up a shared library of them.
The first programming textbook. In 1951 Wilkes, Wheeler and Stanley Gill published *The Preparation of Programs for an Electronic Digital Computer*, which the Cambridge history calls the first book on programming to be published.
Microprogramming. Wilkes's 1951 paper "On the best way to design an automatic calculating machine" introduced microprogramming, in which each machine instruction is carried out as a short sequence of simpler internal steps. The ACM biography calls it his most important scientific contribution.
He received the ACM Turing Award in 1967 and was knighted in 2000.
Worked example: squares using only addition
EDSAC's first program produced squares. Here is a classic way a simple machine can compute squares with nothing but addition. It is an illustration of the idea, not a copy of the 1949 program.
Each square is the previous one plus an odd number, because (n + 1)² = n² + 2n + 1.
Start with square = 0 and odd = 1.
Add: square = 0 + 1 = 1. That is 1².
Increase odd by 2 to get 3. Add: square = 1 + 3 = 4. That is 2².
odd = 5 gives square = 9; odd = 7 gives square = 16.
Repeat. After 99 additions you reach 99² = 9,801.
Check the last step: 98² = 9,604, the odd number added is 2 × 98 + 1 = 197, and 9,604 + 197 = 9,801.
What mistakes do students make with loops like this?
Off-by-one errors. Start a counter at the wrong value and every square shifts by one place. Trace the first three steps by hand.
Updating in the wrong order. If you add 2 to odd before adding it to square, you skip 1 and get 3, 8, 15 instead of 1, 4, 9.
Not checking the end. Test the final value against the formula, as above.
Tracing a loop line by line is the same skill CBSE asks for in Python output-tracing questions. When the logic will not come clear, Fermi's AI tutor can work out what you already know and build a plan for the session, so you start from the step that confuses you.
What can a student learn from how Wilkes worked?
Wilkes read a report, saw what it meant, and moved fast to build something that worked. Once it worked, he turned his laboratory to the next real problem, writing programs reliably, and shared the methods in a book anyone could use. Building a simple version that runs, then fixing the parts that cause the most trouble, is a good way to approach any project.
Try it now: write the steps for computing cubes using only addition, starting from (n + 1)³ = n³ + 3n² + 3n + 1.



