← Module hub · Unit 7 · Self-check

Unit 7 activity: The historical bug and historical honesty

DEVELOPMENT REVIEW DEPLOYMENT - NOT READY FOR RELEASE

Time: about 12 minutes. Checkpoint: cp07-note-g (optional). You will need: the index mapping from Unit 3, and either the table you built in Unit 3 or the lab oracle from Unit 5. Either is sufficient.

Optional unit, outside the core time budget. Nothing here gates anything, and the module is complete without it.

Two tasks. The first takes about four minutes and is the checkpoint. The second takes about eight and is the one worth protecting if you are short of time.


Task 1 — establish the value independently, then compare

Note G's worked example computes the number Lovelace labels B7 (Menabrea 1843). Your job is to state what that number should be without looking at the historical table, and only then to look.

The order matters. A reference value you obtained after seeing the thing you are checking is not a reference value.

Route A — table-based verification

Equal status with Route B. Use it if you are not running Python, or if you would rather do the reasoning on paper.

  1. Take Lovelace's label B7 and convert it to a modern index using the mapping from Unit 3. Write the modern index down before going on.
  2. Look that modern index up in the Bernoulli table you built in Unit 3, or in the table in course/historical-notes.md.
  3. Write the exact value as a fraction. Not a decimal — the whole argument of this module rests on exactness.

Route B — automated verification

Equal status with Route A.

python3 selfcheck.py explore

Then, at the explore> prompt:

map
ada 7

map prints the index mapping; ada 7 converts Lovelace's label and returns the oracle's exact value at the corresponding modern index.

Then answer these, in writing, in your evidence pack

Two or three sentences each is plenty.

  1. What did the comparison actually catch? Be specific about the kind of discrepancy a value-by-value comparison can detect.
  2. What would it not have caught? Name at least one class of error in a printed procedure that comparing final values leaves completely invisible.
  3. What did you have to know before the comparison meant anything? There is more than one thing here, and one of them is not about Bernoulli numbers at all.

Now run the checkpoint

python3 selfcheck.py run cp07-note-g     # or use the browser self-check

Both routes ask the same question, accept the same forms of the answer, and give the same diagnostics. Pick whichever you have to hand.


Task 2 — sort one claim, and say what would move it

This is the harder task and the one that transfers furthest.

Below are seven statements about Note G, all of which circulate. Pick one — or work through several if you have time — and do three things with it.

  1. Sort it into established, contested, or unsourced, as those buckets are defined on the student page.
  2. Say why you put it there, in one sentence. "It sounds right" is not a reason; "I have not seen a source, only assertions" is.
  3. Say what would move it. Name a specific piece of evidence that would let you reclassify it — something a person could actually go and consult, not "more research".

Do not look up the answers first. The sorting is the exercise; getting the "right" bucket matters less than being able to defend the placement.

The statements

A. Note G appeared in 1843, as part of Lovelace's translation of Menabrea's memoir on the Analytical Engine, with her Notes appended.

B. The table published in Note G contains at least one error.

C. The error is an inversion — a divisor and a dividend the wrong way round in one operation of the table.

D. Lovelace introduced the error, and Babbage did not catch it before publication.

E. The error was introduced by the printer when the type was set, not by either author.

F. The error stood uncorrected for more than a century.

G. The as-printed table computes −25621/630.

Write it up like this

Statement:      <letter>
Bucket:         established | contested | unsourced
Why:            <one sentence>
What would move it: <a specific, consultable piece of evidence>

Keep this. It is worth adding to the evidence pack you assemble in Unit 8 — that pack does not require it, but this is the clearest short demonstration you will produce that you can tell "I checked this" from "I have read this a lot".


Optional extension — the same test on generated text

Optional. Not required, and it does not gate anything.

Ask an AI system for a short account of the error in Note G. Then apply Task 2's three questions to every factual assertion in what comes back.

You are not looking for it to be wrong. It may well not be. You are looking at something more specific: whether the register changes between the parts that are well established and the parts that are contested or unsupported. Does the confidence of the prose track the strength of the evidence?

Record what you find in your evidence pack in one sentence. It is a useful thing to have observed once, first-hand, rather than to have been told.


Before you move on

You should be leaving this unit with:

All four are worth adding to the evidence pack you assemble in Unit 8, as an appendix marked optional. Unit 8 does not require them.

Marking guidance — open this once you have done the activity, to check your own work

For learners checking their own work after attempting the activity, and for instructors marking or discussing it.

This key does not restate the value asked for at cp07-note-g. Deriving it is the learning objective, and the checkpoint gives targeted diagnostics if you go astray. Checkpoint answers live in course/lab/checkpoints.py and nowhere else, by design.

Citation shorthand. (Menabrea 1843) = Menabrea, "Sketch of the Analytical Engine invented by Charles Babbage", trans. with Notes A–G by Ada Lovelace, in Taylor (ed.), Scientific Memoirs, vol. 3, 1843. Full entry in course/references.md.


Task 1 — the three written questions

1. What did the comparison actually catch?

A value-by-value comparison against a reference you obtained independently catches exactly one class of thing: a disagreement in a final value at a named index. That covers a wrong number, a wrong sign, an inexact number where an exact one was required, and — if you are comparing index against index rather than scanning for familiar-looking values — a value that is itself correct but filed under the wrong label.

That last case is worth dwelling on, because it is the one you met at cp05-diagnose. Every individual value can be a genuine Bernoulli number while the output as a whole is still wrong.

A good answer names the class of error, not just the outcome. "It caught that the numbers differ" is thin. "It caught a disagreement at a specific index, which is the only thing comparing final values can catch" is the answer.

2. What would it not have caught?

Several things, and any one of them earns the mark:

That last point is the hinge of the whole unit. The value comparison supports the claim that the published table contains an error — a claim about final values. It cannot, on its own, underwrite the claim about where the error is. That location claim — operation 4, operands inverted — took a different kind of check: reading the facsimile of the 1843 printing [P2a] and recomputing the table's operations in noteg.py (see course/historical-notes.md §4). Each kind of claim needs its own kind of check, and the location claim moved to established only when that check was done. If a learner connects those two things without prompting, they have understood the unit.

3. What did you have to know before the comparison meant anything?

At least three things, and the third is the one the question is fishing for.

Reading a historical source requires knowing its conventions, and the conventions are usually not stated in the source, because at the time they did not need to be. Exactly the same is true of a specification handed to a generating system: the requirement most likely to be violated is the one so obvious to you that you did not write it down.


Task 2 — the seven statements

The bucket assignments below are this module's positions, stated as positions. A learner who places a statement differently but gives a defensible reason and a concrete "what would move it" has done the exercise correctly. The reasoning is the assessable part, not the label.

A. Note G appeared in 1843, with Lovelace's Notes appended

Established. Covered directly by the primary source (Menabrea 1843), and recorded in course/references.md.

What would move it: essentially nothing short of a bibliographic error in the volume itself. This is about as settled as a historical claim gets, and it is useful in the exercise precisely as a calibration point — the bucket is not empty.

B. The published table contains at least one error

Established. This module states it, and course/historical-notes.md gives the fuller detail.

Note how narrow the statement is. It asserts existence and nothing else — no location, no kind, no author. A learner who marks this "contested" has confused it with statement C, which is the confusion the whole unit is built around. That is a productive mistake and worth discussing rather than simply correcting.

What would move it: a careful published analysis of the original printing concluding that the table is in fact correct as printed.

C. The error is an inverted divisor and dividend in one operation

Established — and it is worth knowing that it only recently was.

For most of this module's development the right answer here was contested: the description is the one you meet most often, and wide circulation is not evidence, because many retellings may descend from a single earlier account rather than from the printing itself.

Then the check happened. The "what would move it" for this claim was always specific — a facsimile of the 1843 printing, read directly, with a trace of the operations against a correct computation — and it was carried out. The facsimile [P2a] shows the error in operation 4, acting on V₅ and V₄ in that order, where producing the stated (2n−1)/(2n+1) needs V₄ ÷ V₅. The operands are inverted. See course/historical-notes.md §4 and the unit reading, section 3.

So this claim moved buckets — not because it was repeated more, but because the consultable thing got consulted. A learner who marks this "contested" is giving the answer that was correct on the older evidence, and should notice from section 3 that the evidence changed. Reward the reasoning either way; the tell for full marks is whether they cite the facsimile check rather than the claim's popularity. What stays contested is who introduced it — items D and E — because no facsimile can show that.

D. Lovelace introduced the error; Babbage did not catch it

Contested. An attribution, and one of several in circulation. Attribution is a strictly harder claim than existence: it requires evidence about the process of production, not just about the printed result.

What would move it: surviving manuscript drafts, proof sheets, or correspondence from the period showing the value at different stages (unsourced; what manuscript material exists, and where it is held, is recorded as an open question in course/historical-notes.md).

E. The error was introduced by the printer

Contested, and for the same reason as D. It is a competing attribution, and the same evidence would bear on both.

If a learner notices that D and E cannot both be right, and that this alone is enough to place both in "contested" without knowing anything else, that is a genuinely good observation. Mutual incompatibility among widely repeated accounts is a cheap and reliable contestedness detector. It costs nothing to apply and it works on generated text.

F. The error stood uncorrected for more than a century

Unsourced. This module has not verified when the error was first remarked on in print, or by whom (unsourced; recorded as an open question in course/historical-notes.md).

"Unsourced" rather than "contested" is the right call here because the module is not aware of competing accounts — it is simply aware of no checked account at all. Accepting "contested" from a learner is reasonable; what is not reasonable is "established", and the tell is that the statement is quantitative ("more than a century") while nothing supporting the number has been produced.

What would move it: a dated published correction, or a survey of the literature identifying the earliest one.

G. The as-printed table computes −25621/630

Unsourced or contested before checking — and refuted once the check was done.

Before any check, this is a textbook bucket-two-or-three claim: the figure is everywhere online, and cited to no scholarly source. Repetition is not corroboration. But this claim, unlike D and E, is checkable from your desk, and the module checked it: the recomputation in course/lab/noteg.py traces the as-printed operations — operation 4 inverted, exactly as the facsimile shows — and the as-printed table gives 139/630, not −25621/630. See course/historical-notes.md §4.

A learner who places this in "established" because the number is so widely repeated has made exactly the misfiling the unit warns about. The recomputation refutes the claim; wide circulation never supported it.

What would move it: nothing now moves it back — a claim refuted by a recomputation you can rerun is settled — but a published derivation showing a different reading of the as-printed operations would reopen the question.


Common ways this activity goes wrong

Treating "contested" as a polite way of saying "false". It is not. It is a statement about the strength of the evidence available, not about the truth of the claim. Statement C may well turn out to be an accurate description; the module's position is that it has not established this, not that it doubts it.

Sorting by plausibility instead of by provenance. The buckets are about where a claim came from, not about how likely it sounds. A highly plausible claim with no source is unsourced. This is the single most common error in the task.

Producing a vague "what would move it". "More research" and "checking the sources" are not answers. The test is whether you have named something a person could actually go and consult. If you cannot, you have not yet worked out what the claim depends on.

Looking it up before sorting it. Understandable, and it destroys the exercise. The skill being trained is what you do with a claim before you have resolved it, because in practice most claims are never resolved — they are used, or not used, in whatever state you found them.


For instructors

Your private activity record

Browser storage is not a permanent copy

Progress is kept only in this browser, profile and device. Private browsing, clearing site data, removing the profile, a browser reset, storage eviction or device loss can erase it. Keep important answers and contributions separately.

These notes stay in this browser unless you download a backup or activity log.