dark mode light mode Search Menu
Search

Margaret Hamilton

NASA

Today we take for granted software works well and solves a wide range of problems. But software didn’t always work this way. Or need to work this way. The Apollo moon landing needed a guidance system that could handle errors, prioritize tasks, execute tasks at different times, and more. Many of these demands were new to computing. Margaret Hamilton led the team that developed this new software.

If you have ever flown on an airplane, you probably know some of the flight was managed by computers. You also may have heard Airbus recently acknowledged the crash of a Spanish A400 plane was caused by faulty software configuration of the engines.

Now imagine in the mid to late 1960s designing computer hardware and software to land human beings on the moon, almost fifty years ago. Ideas about fault tolerance in real life computer systems were new. And the tight space limitations of the lunar lander required using another new technology, microchips on computer boards. Today we take both fault tolerance and microchips for granted. It’s rare when one or both cause a crash and loss of human life.

That wasn’t the case for the Apollo moon landing missions.

Margaret Hamilton, a self taught programmer with advanced math degrees, managed a team at the MIT Instrumentation Lab that won the NASA contract to write guidance software to land the first human beings on the moon. Their software had to accept inputs from a number of sensors which tracked speed, location, and other details then manage the data to answer questions from the astronauts in real time and signal as problems happened.

There were no code bases or earlier software projects to learn from. The software and programming techniques had to be created from scratch.

One big problem they solved is how to manage the priority of data fed into the computer. As it happened, their solution saved the first lunar landing. Three mintues before landing, the onboard computer was flooded with useless data when one of the astronauts accidentally switched on a radar system while following a script. The computer set off alarms, to indicate it had to deal with useless data, but ignored the lower priority radar data and focussed, instead, on data needed to put the lander in position for the astronauts to fly the final short distance to land on the moon based on what they saw out their windows.

Imagine if the software created by Hamilton’s team had handled all data equally. The useless data would have overwhelmed the processing power of the computer and likely crashed the lunar lander or led to the landing and mission being aborted.

While the design and code were tweaked for future missions, the initial designs and solutions from Hamilton and her group were kept intact. And the team went on to build software for Skylab, the first space station, in the 1970s. Many of their ideas and solutions became the building blocks of software development, for example, end to end testing, asynchronous software, and
priority scheduling.

Hamilton learned computer programming while working on weather forecasting projects at MIT then projects for the Air Force. At that time, software development and computer science were not separate disciplines. You learned programming on the job while solving problems.

Perhaps one of the more amazing details about Hamilton and her work? She was only in her early 30s when she led the MIT team and made significant critical contributions to the NASA Apollo moon landing program. She went on to start a business and continue to contribute ideas that advanced software design and development. She’s also credited with coining the term, “software engineering.”

Learn More

Margaret Hamilton

http://en.wikipedia.org/wiki/Margaret_Hamilton_%28scientist%29
http://klabs.org/home_page/hamilton.htm
http://history.nasa.gov/alsj/a11/a11Hamilton.html

Software — and a Woman — at the Heart of Lunar Triumph

http://www.wired.com/2014/08/software-woman-heart-lunar-triumph/

Apollo Guidance Computer (AGC)

http://en.wikipedia.org/wiki/Apollo_Guidance_Computer
http://en.wikipedia.org/wiki/Apollo_Guidance_Computer#Software

Airbus Confirms Software Configuration Error Caused Plane Crash

http://arstechnica.com/information-technology/2015/06/airbus-confirms-software-configuration-error-caused-plane-crash/

How the Apollo 11 Moon Landing Worked (Infographic)

http://www.space.com/17411-apollo-11-moon-landing-explained-infographic.html