Go to Diversity in HPC home page

Faces of HPC: Margaret Hamilton

Margaret Hamilton was a NASA software engineer who worked on programming code for most of the Apollo missions' software. During the landing procedure for the Apollo 11 mission, it was her code that allowed the on-board computer to process which tasks were of greatest importance, saving the moon landing.


Margaret Hamilton was a pioneering figure in software engineering. Entirely self-taught, she rose to Director of the Software Engineering Division, working on NASA’s various Apollo missions. As well as coining the term ‘software engineer,’ she is known for writing code that allowed for the priority scheduling that saved the landing operations of the Apollo 11 moon landing. She has since become the CEO of Hamilton Technologies Inc., which aims to develop the Universal Systems Language so as to create ultra-reliable software.


Margaret attended Earlham College, earning her BA in Mathematics in 1958. Despite intending to continue with a PhD in abstract maths, Margaret took the opportunity to work at MIT on software development for weather predictions. Not yet a formal field, writing software was a skill learned simply through practice on the job, and here, Margaret taught herself how to programme.

She was offered a job working on the Apollo space missions at MIT’s Charles Stark Draper Laboratory. Because of her experience with software design, she quickly rose to become the Director of the Software Engineering Division, programming for the NASA Apollo and Skylab missions, and overseeing the manned, and a few unmanned, missions to the moon.

She and her team worked on the Apollo Guidance Computer, through which her coding controlled the spacecraft and its navigational assistance. This first embedded computer would be essential to the evolution of the integrated circuit.

Margaret is perhaps best known for her software that ‘saved’ the Apollo 11 moon landing. Minutes before the scheduled landing, the astronauts received error messages 1201 and 1202. The computer system in the module was overloaded with commands from the rendezvous radar. This radar, to be used when making return contact, had accidentally been switched on, and was using up more memory than available, threatening to obstruct the processing required for the intricate landing functions. Margaret and her team, having anticipated this kind of error, had programmed a feature that allowed the computer to assess the tasks it was given, and shed the lower priority ones. With this function in place, the overloaded computer managed to prioritize the landing functions, and commanded a successful moon landing, allowing Neil Armstrong his ‘one giant leap’.

At these early stages, weight and size were incredibly tight. The shuttle was governed by one of the first chip-based computers – although much smaller and lighter, chips were unreliable at the time and vey expensive. Nevertheless, the shuttle was allowed only 64KB of memory in a compact space. Coding was stored in ‘core rope memory,’ where code was represented in binary by the way a wire was hand-woven around a small metal core. Wire through the core represented a ‘one,’ and passing around the core represented a ‘zero’. Margaret is credited not only for her and her team’s vital software, but for compacting it as well. She is also known for developing the concept of asynchronous software, priority scheduling, and human-in-the-loop designs. She even coined the term ‘software engineering’ to describe her role and allow it the credibility in engineering it was due.

For her work on the Apollo systems, she was awarded the Ada Lovelace Award in 1986 by the Association of Women in Computing, and the NASA Exceptional Space Act Award in 2003.

Margaret is currently the CEO of Hamilton Technologies Inc., founded in 1986. She noticed, while running tests for the Apollo missions, that the majority of errors were interface errors. Inspired by these preventable human errors, her company works on developing a Universal Systems Language, producing preventative and ultra-reliable software.

Last updated: 01 Dec 2015 at 16:30