Neil Armstrong might not have taken his moon walk on July 20, 1969 were it not for a former high school teacher named Margaret Hamilton.
Three minutes before the Apollo 11 lunar lander Eagle reached the surface of the moon, computer alarms went off. The landing would have been aborted had Margaret Hamilton not anticipated the problem and created software to solve it.
Thirty-four years after Armstrong walked on the moon, NASA administrator Sean O’Keefe acknowledged that the concepts Margaret Hamilton and her team created became the building blocks for modern software engineering.
Margaret Hamilton was born Aug. 17, 1936 in Paoli, Ind., to Kenneth and Ruth Heafield. She earned a B.A. in Mathematics from Earlham College, then married and taught high school math and French while her husband finished college. In 1958, she moved to Boston, intending to study abstract mathematics at Brandeis University. She got a job, though, at MIT, to develop software for predicting the weather.
It was at MIT that Margaret Hamilton taught herself to program computers.
Margaret Hamilton coined the phrase 'software engineering' to gain legitimacy for her work.
In an interview, she said,
When I first started using this phrase, it was considered to be quite amusing. It was an ongoing joke for a long time. They liked to kid me about my radical ideas. Software eventually and necessarily gained the same respect as any other discipline.
Margaret Hamilton became director of the Software Engineering Division of the MIT Instrumentation Laboratory, which developed software for the NASA Apollo programs. Then in her early 30s, she supervised a team of 100 engineers, mathematicians, programmers and technical writers.
The team developed the code for the Apollo Guidance Computer.
It was one of the first chip-based computers, and had only 64 kilobytes of memory. A typical cellphone has 31,000 times that memory.
For the Apollo 11 moon mission, the guidance computer had to process input from Mission Control, from the spacecraft's instruments and from the astronauts.
Margaret Hamilton understood the computer could be overloaded. She and her team wrote a program that established the order in which the computer would do the different things it was asked to do all at the same time.
The team created a feature crucial to the moon landing: the ‘asynchronous executive.’ That meant the computer would recognize when it was in danger of overloading and drop low-priority tasks.
When Neil Armstrong and Buzz Aldrin were about to land on the moon, something went wrong. Their checklist had a mistake in it: It told the astronauts to activate the radar system that would be used for taking off from the moon, which was unnecessary for landing. The radar started sending the computer massive amounts of information based on electrical noise, threatening to overload it. Had the guidance computer been overloaded, the mission would have to be aborted.
The asynchronous executive saved the landing. It told the computer to ignore the information from the rendezvous radar. The computer automatically rebooted, and the Eagle landed.
"If the software had not functioned, the moon landing might not have happened," wrote space journalist A.J.S. Rayl. "Instead, Neil Armstrong took that 'giant leap' for all humankind."
It wasn’t until 2003 that Margaret Hamilton’s contribution to the moon landing – and to computer science – were recognized by NASA. She was honored with the NASA Exceptional Space Act Award. The scientist who nominated her, Paul Curto, said,
"I was surprised to discover she was never formally recognized for her groundbreaking work. Her concepts of asynchronous software, priority scheduling, end-to-end testing, and man-in-the-loop decision capability, such as priority displays, became the foundation for ultra-reliable software design."
This story was updated in 2017.