Margaret Elaine Heafield was born August 17, 1936, in Paoli, Indiana, to Kenneth Heafield and Ruth Esther Heafield (née Partington); she has two younger siblings: David and Kathryn. The family later moved to Michigan, where Margaret graduated from Hancock High School in 1954. She studied mathematics at the University of Michigan in 1955 before transferring to Earlham College where her mother was a student; she earned a BA in mathematics with a minor in philosophy in 1958. She cites Florence Long, the head of the math department at Earlham, as helping with her desire to pursue abstract mathematics and become a mathematics professor. She had other inspirations including her father (a philosopher and poet), and her grandfather (a school headmaster and Quaker minister). She says these men inspired her to include a minor in philosophy in her studies.
While at Earlham, Hamilton met her first husband, James Cox Hamilton, a senior majoring in chemistry. They were married on June 15, 1958, the summer after she graduated from Earlham. She briefly taught high school mathematics and French at a public school in Boston, Indiana, while her husband completed his undergraduate degree at Earlham. The couple then moved to Boston, Massachusetts, where James would later earn his master's degree in chemistry from Brandeis University; they had a daughter, Lauren, born on November 10, 1959. James later graduated from Harvard Law School in 1963; he founded a law firm in Boston and also later served on the board of the American Civil Liberties Union. The couple divorced in 1967 and Margaret married Dan Lickly two years later.
What they used to do when you came into this organization as a beginner, was to assign you this program which nobody was able to ever figure out or get to run. When I was the beginner they gave it to me as well. And what had happened was it was tricky programming, and the person who wrote it took delight in the fact that all of his comments were in Greek and Latin. So I was assigned this program and I actually got it to work. It even printed out its answers in Latin and Chinese. I was the first one to get it to work.
It was her efforts on this project that made her a candidate for the position at NASA as the lead developer for Apollo flight software.
Hamilton in 1969, standing next to listings of the software she and her MIT team produced for the Apollo project
Hamilton during her time as lead Apollo flight software designer
Hamilton then joined the Charles Stark Draper Laboratory at MIT, which worked on the Apollo space mission. Hamilton was initially hired as a programmer for this process but moved on into system designs. Eventually, she was in charge of all Command Module software, which was all the software for navigation and lunar landing guidance. She eventually led a team cred with developing the software for Apollo and Skylab. Hamilton's team was responsible for developing in-flight software, which included algorithms designed by various senior scientists for the Apollo command module, lunar lander and the subsequent Skylab. Another part of her team designed and developed the systems software. This included error detection and recovery software such as restarts and the Display Interface Routines (also known as the Priority Displays), which Hamilton designed and developed. She worked to gain hands-on experience during a time when computer science courses were uncommon and software engineering courses did not exist. Hamilton also served as Director of the Software Engineering Division.
In one of the critical moments of the Apollo 11 mission, the Apollo Guidance Computer together with the on-board flight software averted an abort of the landing on the Moon. Three minutes before the lunar lander reached the Moon's surface, several computer alarms were triggered. The on-board flight software captured these alarms with the "never supposed to happen displays" interrupting the astronauts with priority alarm displays.
Hamilton had prepared for just this situation years before:
There was one other failsafe that Hamilton likes to remember. Her "priority display" innovation had created a knock-on risk that astronaut and computer would slip out of synch just when it mattered most. As the alarms went off and priority displays replaced normal ones, the actual switchover to new programmes behind the screens was happening "a step slower" than it would today.
Hamilton had thought long and hard about this. It meant that if Aldrin, say, hit a button on the priority display too quickly, he might still get a "normal" response. Her solution: when you see a priority display, first count to
The astronauts had inadvertently left the rendezvous radar switch on, causing these alarms to be triggered. The computer was overloaded with interrupts caused by incorrectly phased power supplied to the lander's rendezvous radar. The program alarms indicated "executive overflows", meaning the guidance computer could not complete all of its tasks in real time and had to postpone some of them. The asynchronous executive designed by J. Halcombe Laning was used by Hamilton's team to develop asynchronous flight software:
Because of the flight software's system-software's error detection and recovery techniques that included its system-wide "kill and recompute" from a "safe place" restart approach to its snapshot and rollback techniques, the Display Interface Routines (AKA the priority displays) together with its man-in-the-loop capabilities were able to be created in order to have the capability to interrupt the astronauts' normal mission displays with priority displays of critical alarms in case of an emergency. This depended on our assigning a unique priority to every process in the software in order to ensure that all of its events would take place in the correct order and at the right time relative to everything else that was going on.
Hamilton's priority alarm displays interrupted the astronauts' normal displays to warn them that there was an emergency "giving the astronauts a go/no go decision (to land or not to land)".Jack Garman, a NASA computer engineer in mission control, recognized the meaning of the errors that were presented to the astronauts by the priority displays and shouted, "Go, go!" and they continued. Paul Curto, senior technologist who nominated Hamilton for a NASA Space Act Award, called Hamilton's work "the foundation for ultra-reliable software design".
Hamilton later wrote of the incident:
The computer (or rather the software in it) was smart enough to recognize that it was being asked to perform more tasks than it should be performing. It then sent out an alarm, which meant to the astronaut, 'I'm overloaded with more tasks than I should be doing at this time and I'm going to keep only the more important tasks'; i.e., the ones needed for landing ... Actually, the computer was programmed to do more than recognize error conditions. A complete set of recovery programs was incorporated into the software. The software's action, in this case, was to eliminate lower priority tasks and re-establish the more important ones ... If the computer hadn't recognized this problem and taken recovery action, I doubt if Apollo 11 would have been the successful moon landing it was.
— Letter from Margaret H. Hamilton, Director of Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, titled "Computer Got Loaded", published in Datamation, March 1, 1971
In 1976, Hamilton co-founded with Saydean Zeldin a company called Higher Order Software (HOS) to further develop ideas about error prevention and fault tolerance emerging from their experience at MIT working on the Apollo program. They created a product called USE.IT, based on the HOS methodology they developed at MIT. It was successfully used in numerous government programs including a project to formalize and implement C-IDEF, an automated version of IDEF, a modeling language developed by the U.S. Air Force in the Integrated Computer-Aided Manufacturing (ICAM) project. In 1980, British-Israeli computer scientist David Harel published a proposal for a structured programming language derived from HOS from the viewpoint of and/or subgoals. Others have used HOS to formalize the semantics of linguistic quantifiers, and to formalize the design of reliable real-time embedded systems.
Hamilton was the CEO of HOS through 1984 and left the company in 1985. In March 1986, she founded Hamilton Technologies, Inc. in Cambridge, Massachusetts. The company was developed around the Universal Systems Language (USL) and its associated automated environment, the 001 Tool Suite, based on her paradigm of Development Before The Fact for systems design and software development.
When I first came up with the term, no one had heard of it before, at least in our world. It was an ongoing joke for a long time. They liked to kid me about my radical ideas. It was a memorable day when one of the most respected hardware gurus explained to everyone in a meeting that he agreed with me that the process of building software should also be considered an engineering discipline, just like with hardware. Not because of his acceptance of the new 'term' per se, but because we had earned his and the acceptance of the others in the room as being in an engineering field in its own right.
When Hamilton started using the term "software engineering" during the early Apollo missions, software development was not taken seriously compared to other engineering, nor was it regarded as a science. Hamilton was concerned with legitimizing software development as an engineering discipline. Over time the term "software engineering" gained the same respect as any other technical discipline. The IEEE Software September/October 2018 issue celebrates the 50th anniversary of software engineering. Hamilton talks about "Errors" and how they influenced her work related to software engineering and how her language, USL, could be used to prevent the majority of "Errors" in a system. Writing in Wired, Robert McMillan noted: "At MIT she assisted in the creation of the core principles in computer programming as she worked with her colleagues in writing code for the world's first portable computer". Hamilton's innovations go beyond the feats of playing an important role in getting humans to the moon. According to Wired's Karen Tegan Padir: "She, along with that other early programming pioneer, CoBOL [sic] inventor Grace Hopper, also deserve tremendous cr for helping to open the door for more women to enter and succeed in STEM fields like software."
In 2019, to celebrate 50 years to the Apollo landing, Google decided to make a tribute to Hamilton. The mirrors at the Ivanpah plant were configured to create a picture of Hamilton and the Apollo 11 by moonlight.
In 2003, she was given the NASA Exceptional Space Act Award for scientific and technical contributions. The award included $37,200, the largest amount awarded to any individual in NASA's history.
In 2019, she was awarded the Intrepid Lifetime Achievement Award.
Hamilton, M.; Zeldin, S. (March 1976). "Higher Order Software—A Methodology for Defining Software". IEEE Transactions on Software Engineering. SE-2 (1): 9–32. doi:10.1109/TSE.1976.233798. S2CID7799553.
Hamilton, M.; Zeldin, S. (January 1, 1979). "The relationship between design and verification". Journal of Systems and Software. 1: 29–56. doi:10.1016/0164-1212(79)90004-9.
Hamilton, M.; Hackler, W. R. (2004). "Deeply Integrated Guidance Navigation Unit (DI-GNU) Common Software Architecture Principles". (Revised December 29, 2004). DAAAE30-02-D-1020 and DAAB07-98-D-H502/0180, Picatinny Arsenal, NJ, 2003–2004.
^Hamilton, Margaret; Zeldin, Saydean (1974). Robinet, B. (ed.). "Higher order software techniques applied to a space shuttle prototype program". Programming Symposium. Lecture Notes in Computer Science. Springer Berlin Heidelberg. 19: 17–32. doi:10.1007/3-540-06859-7_121. ISBN978-3-540-37819-8.
^Holland, Michael (June 1, 1997). A Constrained Interface Refinement Method for Embedded System Design (Report). Department of Computing, Macquarie University. CiteSeerX10.1.1.37.7895.
^Krut, Robert W. (July 1993). "Overview of Hamilton Technologies, Inc. (HTI) 001"(PDF). Integrating 001 Tool Support in Feature-Oriented Domain Analysis Methodology. Software Engineering Institute of Carnegie Mellon University. pp. 13–15. Archived(PDF) from the original on July 5, 2019. Retrieved May 26, 2019 – via Defense Technical Information Center.
^Ouyang, Meng; Golay, Michael W. (September 1995). An Integrated Formal Approach for Developing High Quality Software for Safety-Critical Systems (Report). Massachusetts Institute of Technology. hdl:1721.1/67642. MIT-ANP-TR-035.
^"NASA Honors Apollo Engineer". NASA News (Press release). September 3, 2003. Archived from the original on December 26, 2017. 'The Apollo flight software Ms. Hamilton and her team developed was truly a pioneering effort,' said NASA Administrator Sean O'Keefe. 'The concepts she and her team created became the building blocks for modern "software engineering." It's an honor to recognize Ms. Hamilton for her extraordinary contributions to NASA,' he said.