In 1947 Richard Hamming, the man at Bell Labs who showed colleagues how to use computers, came in expecting results from a large relay machine that had run unattended over the weekend. It had failed early, and there was nothing to hand over. He asked the question that started it: if a machine can find out there is an error, why can't it locate where it is and fix it?

The machines he worked with used a parity check that could detect an error but not correct it, so any single flipped bit meant the job stopped and had to be redone. Hamming added overlapping parity bits so each data bit is covered by several checks, making a flipped bit produce a distinctive pattern that points to its own location.

That let the computer correct a single error and even detect two errors and correct one, without stopping. The method reached print in his 1950 paper in the Bell System Technical Journal and became the family of codes that bear his name, used in computers, telephone switching and later in everything from space probe telemetry to audio discs.

Add bits that locate the error, not just that flag it

Overlapping checks make each bit's failure pattern unique, so the error can be located.

A machine that self-corrects avoids stopping and rerunning a long job.

Redundancy overhead falls as the data block grows, so the fix gets cheaper.

It turned error protection from a detection tool into a correction tool.

Detecting an error is cheap but correcting it is what removes the waste; structuring the check bits to pinpoint the culprit buys the fix for free.

Hamming codes became the start of coding theory and the model for later, more powerful codes that now protect RAM, magnetic and optical storage, and data lines. Hamming received the IEEE Computer Society Pioneer Award in 1980, and the IEEE named its medal for information sciences after him.

FOLLOW THE EVIDENCE

The sources

  1. Richard Wesley Hamming — Computer Pioneers IEEE Computer Society · history.computer.org
  2. Algebraic Coding Theory / Error Detection and Correction University of Puget Sound · math.pugetsound.edu