Software archaeology - Learning from the landing on the moon! by Tobias Voss

Discover how the Apollo Guidance Computer pioneered modern software concepts & what we can learn from its development. From error handling to testing - moonshot lessons for today.

Key takeaways
  • The Apollo Guidance Computer (AGC) was one of the first embedded computers, extremely lightweight (32kg) and compact for its time while running on only 55 watts

  • Hardware limitations were severe: 4KB RAM, 72KB ROM, 16-bit architecture, and only 2MHz clock speed - yet achieved 9 digits of decimal precision for critical calculations

  • The AGC pioneered several key software concepts:

    • Real-time operating system with priority-based task scheduling
    • Virtual machine architecture with an interpreter
    • Hardware error checking through parity bits
    • Cooperative multitasking
    • Memory virtualization
  • The software development team led by Margaret Hamilton:

    • Coined the term “software engineering”
    • Prioritized robust error handling and fault tolerance
    • Conducted extensive simulation testing
    • Implemented iterative design improvements across missions
  • The AGC interface (DSKY) used a verb-noun input system allowing astronauts to:

    • Monitor critical flight data
    • Input commands and override automated systems
    • Respond to program alarms
    • Switch between different navigation modes
  • Famous 1202/1201 program alarms during Apollo 11 landing demonstrated the computer’s ability to handle errors gracefully by discarding low-priority tasks

  • The project’s success was enabled by:

    • Clear mission goals
    • High level of funding (4% of US budget)
    • Extensive testing and simulation
    • Focus on reliability and fault tolerance
    • Skilled engineering teams
  • Many concepts pioneered in the AGC development are still relevant:

    • The importance of robust error handling
    • Value of abstraction and virtualization
    • Need for thorough testing
    • Significance of human oversight of automated systems