← Module hub · Self-check · Your local record · PDF Handbook · Toggle theme

Historical Notes

DEVELOPMENT REVIEW DEPLOYMENT - NOT READY FOR RELEASE

The authoritative reference for every historical claim in this module. 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 labels are defined in course/references.md. Reference labels in square brackets — [P2], [S1] — resolve there.

A warning that is also the lesson: this is the part of the module 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]

Established. In 1840 Babbage lectured on the Engine in Turin. Luigi Federico Menabrea wrote up an account in French, published in 1842. [P1]

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. Her Notes run to roughly three times the length of the article she was translating (a commonly repeated characterisation of the 1843 text, not a figure the text itself states). [P2]

Established. Note G contains a table setting out, operation by operation, how the Engine would compute a Bernoulli number. [P2]


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:

How the module handles this. Unit 1 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. 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:

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 module 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, and it is 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 the archival correction of record [S8], and corroborated by [S7], a detailed independent reconstruction, self-published. The corrected table computes −1/30 — Ada's B₇, the modern B₈.

Established (recomputed in this module): what the as-printed table actually computes is 139/630, not the −25621/630 that encyclopaedia and blog accounts [S6] repeat. The module reconstructed Note G's 25 operations and ran them with exact arithmetic (course/lab/noteg.py): the corrected run reproduces the documented −1/30, which is what earns trust in the reconstruction, and the as-printed run then yields 139/630. The misprint corrupts only the A₀ term (operation 9 overwrites the affected variable before the multiplicative loop), so it cannot produce a value as large as −25621/630 ≈ −40.7. The much-repeated −25621/630 appears in no scholarly source and does not survive recomputation — which is exactly the lesson of this unit, now demonstrated on the unit's own example.

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, 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 consulted is a single compressed web image [P2a]. From it, the operand order (V₅ before V₄) and the location (operation 4) are legible and match the secondary account; the division operator is small enough at that resolution to be easy to misread — on a first pass it can look like a plus sign. The value chain has now been recomputed from the operation sequence (course/lab/noteg.py), so the 139/630 result rests on the module'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. What is settled now is the location, the operand inversion, and — by computation — the value the faulty table produces.

Why this restraint is the lesson, not a limitation. Unit 7's teaching point is not "here is an amusing bug in a famous document". It is that a published, respected, widely-cited table carried an error for a long time because readers trusted it instead of checking it, 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 a module that modelled the opposite behaviour while teaching it would be worthless.


5. The "originate anything" passage

Established that the passage appears in Note G [P2]. Lovelace writes that the Analytical Engine "has no pretensions whatever to originate anything", and that it can do "whatever we know how to order it to perform".

Contested what it implies for modern systems. Unit 8 asks learners to compare the claim with what a language model does, and is written to leave the question open rather than resolve it. Both of the easy readings are available and neither is obviously right:

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 module 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

The quick-reference summary. Anything a unit asserts about history should appear here.

claim status source
Babbage designed the Analytical Engine; never completed in his lifetime established [S1], [S4]
Store/mill architecture, punched-card input established [S1]
Menabrea published a French account in 1842 established [P1]
Lovelace translated it and added Notes A–G, published 1843 established [P2]
The Notes are about three times the length of the article secondary characterisation, consistent with the page counts in [P2] but not stated by it [P2]
Note G contains an operation-by-operation Bernoulli computation established [P2]
Note G's example computes Ada's B₇ = modern B₈ = -1/30 established [P2], verified in lab
Ada's B₁/B₃/B₅/B₇ = modern B₂/B₄/B₆/B₈ established verified in lab
"The first program ever written" contested see section 2
Extent of Lovelace's own contribution to the Notes contested [S2], [S3], [S5]
The published table contains an error, in operation 4 established facsimile [P2a], section 4
The error is an inverted division, V₅ ÷ V₄ for V₄ ÷ V₅ established facsimile [P2a], [S8]; corroborated by [S7] (self-published reconstruction)
The as-printed table computes 139/630 (not the repeated −25621/630) established (recomputed) course/lab/noteg.py; [S7]
The error was a typesetting slip, not authorial contested see section 4
"No pretensions whatever to originate anything" appears in Note G established [P2]
What that passage implies about language models contested see section 5