The authoritative reference for every historical claim in this course. Unit materials cite this page rather than restating history in their own words, so that a correction here propagates instead of leaving stale copies behind.
Each claim carries a verification status: established, contested, or unsourced, the three buckets Unit 16 teaches; supported marks a claim that rests on one secondary source, and withdrawn a claim this course once made and no longer does. The labels are defined in References and source policy. Reference labels in square brackets — [P2], [S1] — resolve there.
A warning that is also the lesson: this is the part of the course where confident, fluent, wrong text is easiest to produce and hardest to notice. That applies to AI-generated drafts of this page, and it applied to the nineteenth-century printers too.
1. The people and the machine
Established. Charles Babbage designed the Analytical Engine, a general-purpose mechanical computing machine, from the 1830s onwards. It was never completed in his lifetime. Its architecture separated a "store" (memory) from a "mill" (processing), and it was to be programmed with punched cards adapted from the Jacquard loom. [S1], [S4], [S12], [S7, sec. 2], [P2, pp. 676-681], [P3, pp. 117-118]
Established. In 1840 Babbage presented the Engine at meetings in Turin. Luigi Federico Menabrea wrote up an account in French, published in 1842. [P1], [P3, pp. 129-130]
Established. Augusta Ada King, Countess of Lovelace, translated Menabrea's article into English and appended seven Notes, A to G, of her own. The translation with Notes appeared in 1843 in Taylor's Scientific Memoirs, volume 3. [P2, pp. 666-731] Babbage later wrote that her Notes "extend to about three times the length of the original memoir" [P3, p. 136]; in the 1843 printing they take 41 pages (691 to 731) to the memoir's 25 (666 to 690) [P2, pp. 666-731].
Established. Note G contains a table setting out, operation by operation, how the Engine would compute a Bernoulli number. [P2, pp. 722-731]
2. "The first program"
Contested — and the contest is the teaching point.
The claim "Note G contains the first computer program" is useful shorthand and a poor historical statement. What is actually disputed, and by whom:
- What Note G contains is not in dispute: an explicit, ordered, operation-by- operation specification of a computation, including working variables and a repeated group of operations, intended for a general-purpose machine. [P2, pp. 722-731]
- Whether that constitutes "the first program" depends on a definition nobody agreed in advance. Babbage had written sequences of operations for the Engine earlier, in unpublished notebooks. [S1], [S4]
- How much of the Notes was Lovelace's own work is genuinely disputed [S10, "Changing perceptions of Lovelace"], [S11, sec. 1]. Stein [S2] judged her command of mathematics limited, and later authors concluded her contribution was slight; Toole [S3] presents her as a synthesiser and a visionary (both as summarised in [S10, "Changing perceptions of Lovelace"]); Hollings, Martin and Rice re-read the surviving mathematical correspondence [S11], and work through the archives in a book [S5]. Babbage's own account [P3, p. 136] is a primary source written by an interested party decades later.
How the course handles this. Unit 2 states only the checkable core: Note G was published in 1843 and contains an ordered operation table intended for the Analytical Engine. It reports “first program” as a common, contested retrospective description rather than claiming priority. It does not adjudicate the authorship question or pretend the question is settled in either direction.
A claim being contested does not make it unknowable or make all positions equal. It means the honest statement is "sources disagree, here is the disagreement", which is a different skill from repeating whichever version you met first.
3. The indexing convention in Note G
Established, and verified computationally.
Lovelace numbers only the Bernoulli numbers that are not zero, starting from the modern B2 and labelling them with the odd numbers. The odd-index Bernoulli numbers above the first are all zero, and in her scheme they simply do not receive labels. Her label numbers are therefore one smaller than the modern indices — her Bk is the modern Bk+1, for odd k:
| Lovelace's label | modern index | value |
|---|---|---|
| B₁ | B₂ | 1/6 |
| B₃ | B₄ | -1/30 |
| B₅ | B₆ | 1/42 |
| B₇ | B₈ | -1/30 |
Note G's worked example computes her B₇, which is the modern B₈ = -1/30.
This mapping is implemented and tested in
course/lab/reference_bernoulli.py (ada_to_modern_index,
ADA_NOTE_G_INDEX_MAP) and covered by tests/test_reference_bernoulli.py.
Why the course makes so much of this. It is a specification hazard of exactly
the kind that still causes defects: two systems, the same symbol, different
meanings, and no error message when they meet. A learner who asks an AI to
"reproduce Ada's Bernoulli calculation" and compares the result against a modern
table will see a mismatch that is nobody's arithmetic error. The checker reports
it as ada-indexing.
4. The error in the published table
Established: the table printed in Note G contains an error in operation 4.
Established (facsimile [P2a], accessed 2026-07-23): operation 4 acts on the variables
²V₅ and ²V₄, in that order, and its stated result is (2n−1)/(2n+1). Since
V₄ holds 2n−1 and V₅ holds 2n+1, producing that result requires dividing
V₄ by V₅. The table prints the operands the other way round. See the facsimile
recorded at [P2a]; the diagram is headed "Diagram for the computation by the
Engine of the Numbers of Bernoulli. See Note G (page 722 et seq.)", which is
also the source for the page number now given in [P2].
Established (facsimile plus correction of record): the correct ordering is
V₄ ÷ V₅; the published V₅ ÷ V₄ inverts the division. The location and the
inversion are established by the facsimile [P2a], and corroborated by [S7, sec. 5.2], a
detailed independent reconstruction, self-published, which cites [S8] as the
fullest correction of record; this course has not consulted [S8] itself. Correcting operation 4 is not enough on its own: with the
earlier values supplied, the table computes -1/30 -- Ada's B7, the modern B8 --
only when operation 24 (below) is repaired as well. Correcting operation 4 alone
gives 1/30 (see the table below).
Supported: operation 4 is not the only printed fault. The printed row of operation 24 has been read in the facsimile [P2a]; interpreting its missing sign inversion as a fault follows Glaschick's reconstruction [S7] section 5.2 alone. Glaschick's errata list for the same table also records operation 24: "In line 24 the negative value of V₁₃ must be transferred to V₂₄, i.e. V₂₄ − V₁₃ must be calculated. Also, in the 6th column it must read = − B₇". As printed, according to [S7], operation 24 transfers the value without that sign inversion. Operation 21 carries further printed defects of the same kind, also on [S7]'s authority. So "the table as printed" is not one faulty object with one result.
Established (recomputed in this course): the result depends on which question is
asked, and there are at least five. course/lab/noteg.py reconstructs the 25
operations and runs them with exact arithmetic. The run that repairs both faults
reproduces the documented −1/30, which is what earns trust in the
reconstruction. The others then answer different questions:
| What is executed | Operation 4 | Operation 24 | Earlier B values | Result |
|---|---|---|---|---|
| The intended computation | repaired | repaired | supplied | −1/30 |
| One printed fault, in operation 4 | as printed | repaired | supplied | 139/630 |
| The literal single table | as printed | as printed | supplied | −139/630 |
| One printed fault, in operation 24 | repaired | as printed | supplied | 1/30 |
| The faulty routine run from the start | as printed | repaired | generated by itself | −25621/630 |
The table lists the readings that published accounts use, not every combination.
Run from the start with both printed faults kept, the routine gives −181271/630
(noteg.run_recursively(negate_op24=False)).
Withdrawn: an earlier version of this course stated that "the as-printed table
computes 139/630" and that the widely repeated −25621/630 "does not survive
recomputation". Both statements were wrong, in the same way and for the same
reason: they did not say which object was being executed. The 139/630 run
repairs operation 24 without saying so, and −25621/630 reproduces exactly under
the reading where operation 4 is as printed, operation 24 is repaired, and the
routine generates the earlier Bernoulli numbers it then consumes — a reading Note G's operation 25 invites, since it increments n
so the Engine can go round again. Those accounts do not state their
interpretation; neither did this course. The error is retained here rather than
quietly repaired, because it is the course's own instance of the failure it
teaches.
Still contested: how it got there. The common description is a typesetting error rather than a mistake in the procedure Lovelace devised — Babbage's 1864 memoir records that she caught an error for him (H22), and this one is often read as introduced in printing. But that attribution is an inference, not something the table itself can settle, and whether Babbage prepared or checked the table bears on the unsettled authorship question in section 2. Do not state the printer, or any individual, as the cause.
A caveat that is itself the lesson. The facsimile first consulted was a single
compressed web image [P2a]. From it, the operand order (V₅ before V₄) and the
location (operation 4) were legible and matched the secondary account; the
division operator was small enough at that resolution to be easy to misread —
on a first pass it could look like a plus sign. The copy now used is a processed
image of the printed plate (straightened and sharpened, Wikimedia Commons
[P2a]), in which the operator reads plainly as a division sign. The value chain has now been recomputed from the
operation sequence (course/lab/noteg.py), so each result rests on the course's
own tested code rather than on repetition; a higher-resolution facsimile or the
physical page in Scientific Memoirs vol. 3 would still settle the fine typography
beyond doubt. The printed row of operation 24 has been read; that it is a fault
remains Glaschick's reading. What is settled now is the location of the operation-4
inversion, the operand order, and — by computation, under stated interpretations —
what each reading of the table produces.
Why this restraint is the lesson, not a limitation. Unit 16's teaching point is not "here is an amusing bug in a famous document". It is that a published, respected, widely-cited table was printed with errors, that nothing in this course shows anyone checked it against a derivation before the facsimile check here, and that the specific story now attached to that error has itself propagated by repetition. A fluent AI system will produce a confident, detailed account of the Note G error on request. So will many websites. Being able to say "that is the common claim, here is what is actually established, here is what would settle it" is the transferable skill — and it is one this course has to model rather than only describe, which section 4 records it failing to do and then repairing.
5. The "originate any thing" passage
Established that the passage appears in Note G [P2, p. 722]. Lovelace writes that the Analytical Engine "has no pretensions whatever to originate any thing", and that it can do "whatever we know how to order it to perform".
Contested what it implies for modern systems. Unit 17 asks learners to compare the claim with what a language model does, and is written to leave the question open rather than resolve it. It sets out two easy readings -- that she settled the question for language models, and that the remark is obsolete -- and argues that both are wrong.
The honest position is that Lovelace was writing about a specific machine she understood in detail, that the passage is being applied well outside its original context, and that the argument turns on what "originate" means — which is a philosophical question the course does not settle. Present it as a live question. Quote briefly; the source is public domain, so the limit is pedagogical rather than legal.
6. Claim register
Every claim the course makes about Babbage, Lovelace and Note G should appear here, with its status split into the three things "established" used to run together: how well it is supported, whether anyone disagrees, and whether this course has actually read the source. Those are independent — a claim can be well supported and disputed, or uncontested and known only through somebody else's citation — and collapsing them is how "established" came to mean both "we checked it" and "nobody argues with it".
scripts/check_claims.py validates this table: ids unique, every status drawn
from the closed vocabulary below, and every source key resolving to
References and source policy.
There is no "cited but not read" status, and that is deliberate. A source is
either checked or the claim does not go in. Naming a source you have not opened
tells a reader that the claim rests on something, while leaving unexamined the
only question that matters about it — and it is the same move as a generated
citation that points at a real work saying something else. The vocabulary
therefore records which kind of source was checked, primary or secondary, and
none for a claim with no source at all. none is honest; it means unknown.
This rule governs this register. Elsewhere in the course a work may be cited
through a report of it, and its entry in References and source policy says so.
| dimension | values |
|---|---|
| support | verified (checked against the source, or recomputed here) · supported (a source states it) · inferred (follows from the sources without being stated by them) · unverified (no check yet) · refuted |
| disagreement | uncontested · disputed (sources disagree) · unresolved (the record cannot settle it) |
| source | primary-checked (the original examined) · secondary-checked (a later work reporting it, read and located) · none (no source; the claim is unknown) |
| id | claim | support | disagreement | source | sources |
|---|---|---|---|---|---|
| H1 | Babbage designed the Analytical Engine; never completed in his lifetime | supported | uncontested | secondary-checked | [S1], [S4], [S12], [S7, sec. 2] |
| H2 | Store and mill architecture, punched-card input | supported | uncontested | primary-checked | [S1], [P2, pp. 676-681], [P3, pp. 117-118] |
| H3 | Menabrea published a French account in 1842 | supported | uncontested | primary-checked | [P1] |
| H4 | Lovelace translated it and added Notes A to G, published 1843 | supported | uncontested | primary-checked | [P2, pp. 666-731] |
| H5 | Babbage described the Notes as about three times the length of the memoir; in print they take 41 pages to its 25 | verified | uncontested | primary-checked | [P2, pp. 666-731], [P3, p. 136] |
| H6 | Note G contains an operation-by-operation Bernoulli computation | verified | uncontested | primary-checked | [P2, pp. 722-731] |
| H7 | Note G's example computes Ada's B7 = modern B8 = -1/30 | verified | uncontested | primary-checked | [P2, pp. 726-727] |
| H8 | Ada's B1, B3, B5, B7 are the modern B2, B4, B6, B8 | verified | uncontested | primary-checked | [P2, pp. 725-727] |
| H9 | "The first program ever written" | inferred | disputed | secondary-checked | [S2], [S3], [S5], [S10, abstract], [S11, sec. 1] |
| H10 | Extent of Lovelace's own contribution to the Notes | unverified | disputed | secondary-checked | [S2], [S3], [S5], [S10, "Changing perceptions of Lovelace"], [S11, sec. 1] |
| H11 | The published table contains an error, in operation 4 | verified | uncontested | primary-checked | [P2a] |
| H12 | The error is an inverted division, V5 divided by V4 where V4 divided by V5 is correct (operand order and division operator read from the facsimile, a processed image of the plate) | verified | uncontested | primary-checked | [P2a], [S7, sec. 5.2] |
| H13 | Operation 24 is also printed in a form the intended computation does not use (as printed: "+ 4V13 + 0V24 -> 1V24, = B7", read from the facsimile; that this is a fault is [S7]'s reading) | supported | uncontested | secondary-checked | [P2a], [S7, sec. 5.2] |
| H14 | With operation 4 as printed, operation 24 repaired and earlier values supplied, the table computes 139/630 | verified | uncontested | primary-checked | [P2a], [S7, sec. 3.3] |
| H15 | Taking both printed faults literally gives -139/630; repairing only operation 4 gives 1/30 | verified | uncontested | primary-checked | [P2a], [S7, sec. 3.3] |
| H16 | The repeated -25621/630 reproduces when the routine, with operation 4 as printed and operation 24 repaired, generates its own earlier values | verified | uncontested | primary-checked | [P2a], [S7, sec. 3.3] |
| H17 | Which of those readings a given published account means | unverified | unresolved | none | |
| H18 | The error was a typesetting slip rather than authorial | inferred | disputed | secondary-checked | [S7, sec. 5.2] |
| H19 | "No pretensions whatever to originate any thing" appears in Note G | verified | uncontested | primary-checked | [P2, p. 722] |
| H20 | What that passage implies about language models | unverified | disputed | none | |
| H21 | Operation 21 also carries printed defects | supported | uncontested | secondary-checked | [S7, sec. 5.2] |
| H22 | Babbage's 1864 memoir says Lovelace sent back his working of the Bernoulli numbers "having detected a grave mistake which I had made in the process" | verified | uncontested | primary-checked | [P3, p. 136] |
| H23 | When the operation-4 error was first remarked in print | unverified | unresolved | none | |
| H24 | Who first published a correction of the table | unverified | unresolved | none | |
| H25 | What manuscript or proof material of Note G survives, and where it is held | unverified | unresolved | none | |
| H26 | The Bernoulli numbers appear in Jacob Bernoulli's Ars Conjectandi (1713), before Note G | supported | uncontested | secondary-checked | [S9] |
H14, H15 and H16 are recomputed by course/lab/noteg.py, whose tests assert each
value; [S7] is cited for the operation sequence they run, and the arithmetic is
this course's own. They are conditional: each states what one reading computes,
which running it verifies. Whether operation 24 is printed that way is H13. For
H14 to H16 the primary check covers operation 4 only, read from the facsimile
[P2a]; the rest of the operation sequence, operation 24 included, rests on [S7],
a secondary source.
H23 to H25 are the open questions Unit 16 marks unsourced. The earliest correction known to this course is [S8] (1989), and only through [S7], so H24 asks whether an earlier one exists. Each would be settled by a dated published source that names it. For H13 the printed row has now been read in the facsimile [P2a]: an addition of 4V13 and 0V24 into 1V24, stated as "= B7", with no change of sign, which agrees with [S7]'s account of what is printed. That the intended computation needs a different form there remains [S7]'s reading.