In Boston, Hamilton initially intended to enroll in graduate study in
abstract mathematics at
Brandeis University. However, in mid-1959, Hamilton began working for
Edward Norton Lorenz, in the
meteorology department at
Massachusetts Institute of Technology (MIT). Her work contributed to Lorenz's future publications on
chaos theory, as acknowledged by Lorenz himself.
SAGE Project From 1961 to 1963, Hamilton worked on the
Semi-Automatic Ground Environment (SAGE) Project at
the MIT Lincoln Lab, She also wrote software for a satellite tracking project at the
Air Force Cambridge Research Laboratories. Hamilton learned of the Apollo project in 1965 and wanted to get involved due to it being "very exciting" as a Moon program. She joined the
MIT Instrumentation Laboratory, which developed the
Apollo Guidance Computer for the
Apollo lunar exploration program. Hamilton was the first programmer hired for the Apollo project at MIT and the first female programmer in the project, and later became Director of the Software Engineering Division. She was responsible for the team writing and testing all onboard in-flight software for the
Apollo spacecraft's
Command and
Lunar Module and for the subsequent
Skylab space station. Another part of her team designed and developed the systems software. She worked to gain hands-on experience during a time when computer science courses were uncommon and software engineering courses did not exist. These techniques are intended to make code more reliable because they help programmers identify and fix errors sooner in the development process.
Apollo 11 landing 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. According to software engineer Robert Wills,
Buzz Aldrin entered the codes to request that the computer display altitude and other data on the computer's screen. The system was designed to support seven simultaneous programs running, but Aldrin's request was the eighth. This action was something he requested many times while working in the simulator. The result was a series of unexpected error codes during the live descent. 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: By some accounts, the astronauts had inadvertently left the rendezvous radar switch on, causing these alarms to be triggered (the claim that the radar was left on inadvertently by the astronauts is disputed by Robert Wills with
the National Museum of Computing). The computer was overloaded with interrupts caused by incorrectly
phased power supplied to the lander's rendezvous radar. The asynchronous executive designed by
J. Halcombe Laning was used by Hamilton's team to develop asynchronous flight software: 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, a senior technologist who nominated Hamilton for a NASA Space Act Award, called Hamilton's work "the foundation for ultra-reliable software design". 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 == Legacy ==