← Module hub · Self-check · Your local record

Unit 1: Ada's ordered procedure

Draft Item 1: Ada's Ordered Procedure Item 4: Ask AI To Generate The Routine 25 min
DEVELOPMENT REVIEW DEPLOYMENT - NOT READY FOR RELEASE

Video

Media Pending: Unit Video

Intended content: Full narrated video presentation, including visual assets, caption file, and transcript.

Learning purpose: Makes ordered execution and explicit state changes visible before

Planned form & duration: Video, ~6 minutes.

Production state: Draft (awaiting final audio/video assembly and YouTube upload).

Accessible text alternative: Ordered procedures explicitly name memory locations, operations, and state transitions. The written material below covers the same complete learning path.

Reading time: about 7 minutes. Activity: about 12 minutes.

The document

In 1843 an English scientific journal published a translation of a French-language account of Charles Babbage's Analytical Engine. The account had been written by the Italian engineer Luigi Menabrea; the translator was Ada Lovelace, who signed her work with her initials. She appended seven notes of her own, labelled A to G, and they run substantially longer than the memoir they accompany.

Note G — the last of them — sets out how the engine could be made to compute a sequence called the Bernoulli numbers. Unit 3 explains what those numbers are and makes you work one out by hand. This unit is about the form of what Lovelace wrote, because that form is one half of the comparison the whole module rests on.

The full bibliographic citation for the memoir, the translation and the notes is held in course/references.md. This page cites it as (Lovelace 1843, Note G).

What Note G actually is

It is a table.

Not a description of a method, and not an argument that a method would work in principle. A table, laid out in order: one line per operation, running from the first thing the machine does to the last. Each line identifies the operation to be performed, the storage columns it takes its inputs from, and the column that receives the result (Lovelace 1843, Note G).

Babbage's design kept two functions physically separate: a store, holding numbers in columns, and a mill, performing arithmetic on numbers brought to it from the store. Memory in one place, operations in another, and a written procedure saying which values move between them and in what order.

The engine was never built. Nothing in Note G was ever executed on the machine it was written for. That is worth sitting with: the procedure had to be exact without the safety net of being run, which is the opposite of how most of us write instructions.

Three properties worth naming

These three words come back in every later unit, so it is worth being precise about them now.

Determinism

Given the same starting values and the same sequence of operations, the procedure produces the same result. Every time. Not usually, not with high probability — every time.

This is a strong property and it is easy to underrate because it feels obvious. Its practical consequence is that a disagreement between two runs is not variation, it is a fault. Something is broken and can be found. That is a completely different world from one in which two runs are simply expected to differ, which is where Unit 2 takes you.

Explicit state

The state of the machine is the collection of values currently held in its storage columns. Every value in that state got there because some earlier line put it there.

There is no quantity that is merely understood to be available. If a value is needed, you can point at the line that produced it. When you write a procedure by hand, this is the property that fails first: human instructions are full of objects and quantities that were never introduced, and we do not notice because we supply them ourselves as we read.

Control flow

The order of the lines is part of the meaning. Swap two of them and you have a different procedure, not the same procedure written differently.

The order is also not always a straight run from top to bottom. Note G's diagram marks a group of operations to be repeated, with the number of repetitions depending on which Bernoulli number is wanted (Lovelace 1843, Note G). The teaching point needed here is visible in the table itself: a procedure with a controlled repetition computes a whole family of answers, not one answer. That is the difference between a recipe and an algorithm.

"The first program"

You will have met the claim that Note G is the first computer program and that Ada Lovelace was the first programmer. The claim is useful — it points at something real, and it is why this module starts here. It is also more complicated than a slogan, and the module would be a poor advertisement for verification if it repeated a contested claim without saying so.

What is on firm ground. The notes were published in 1843 with the translation, signed with her initials. Note G contains an ordered table of operations for computing Bernoulli numbers [P2]. Those facts do not by themselves establish a priority claim.

What is genuinely contested.

One more established fact, handled carefully. The published table in Note G contains an error. Where it is — operation 4, an inverted division — is established from a facsimile; only who introduced it stays contested. This module does not work through the detail here; Unit 7 treats the whole episode as its case study in historical honesty. See course/historical-notes.md for what the sources support.

If that feels unsatisfying, notice what it is modelling. "I know this much, this much is disputed, and here is where you can check" is a stronger position than a confident sentence, and it is exactly the position you will need to take about your own AI-assisted work in Unit 8.

The sentence that sets up the module

Writing about the limits of what the engine could do, Lovelace put it this way:

The Analytical Engine has no pretensions whatever to originate anything.

— (Lovelace 1843, Note G)

Read in context, this is a claim about following orders: the machine can carry out a procedure, and carrying out a procedure is not the same as producing something new. Whether the sentence still applies to the systems we have now is a genuine question that Unit 8 returns to, with the comparison made carefully rather than rhetorically.

For now, notice what the sentence takes for granted. It assumes you can say precisely what the machine was ordered to do, and then check whether it did that. Note G is fully checkable in this sense: every line is written down, and any line can be found to be wrong. Somebody did find one.

That is the property Unit 2 removes.

Why this module looks the way it does

This is background rather than argument, and nothing in the unit depends on it.

Ada Lovelace was the daughter of the poet Lord Byron, who left England in 1816, when she was a few months old, and never saw her again [S5] (keys resolve in ../references.md) [G1]. In the summer of that year Byron presided over a gathering at the Villa Diodati on Lake Geneva, with Percy Shelley, Mary Godwin — later Mary Shelley — and Byron's physician John Polidori; out of it came Frankenstein; or, The Modern Prometheus (1818) and Polidori's The Vampyre (1819) [G2] [G3] [G4]; Frankenstein is the book usually credited with bringing the anxiety about a made thing that reasons into English literature. A module about a machine that produces plausible speech, and about whether it originates anything, is therefore working in a register it inherited rather than one it borrowed, which is why the module's visual design leans dark, with a single red accent, instead of the usual palette of an introductory course. What Lovelace herself made of any of that, and whether it touched her mathematical work at all, is not something this module claims. The connection is a visual motif, not a historical inference.

Summary

Now do activity.md, then take checkpoint cp01-ordered-steps.

Work through it

Timings: video 6 min, reading 7 min, activity 12 min.

Check yourself

This unit has one checkpoint. Both routes ask the same questions and accept the same answers — use whichever suits you.

In a terminal, from course/lab/:

python3 selfcheck.py run --unit 1

Your local record

Local progress is available in a supported browser.

Before this unit