Jewish scribes invented error checking over a thousand years before computers
Between the seventh and tenth centuries, Jewish scribes counted every word and letter of the Hebrew Bible, even marking each book's middle verse, so copies could be checked. A single wrong letter made a Torah scroll unacceptable. The Dead Sea Scrolls later showed how well the system had preserved the text.
Error detection and correction covers the techniques that let digital data arrive intact over imperfect channels. Noise can flip bits between sender and receiver; detection spots the damage, and correction goes further by rebuilding the original. The ancient roots lie in scribal practice. Copyists were paid by the line of verse, so for prose books they counted letters to estimate their work, which also helped catch mistakes. The system later formalised as the Numerical Masorah recorded word counts for lines, sections and books along with word statistics.
The modern field began with Richard Hamming in 1947. His code was described in Claude Shannon's A Mathematical Theory of Communication and soon generalised by Marcel Golay. Every scheme works by adding redundancy. In a systematic code the sender transmits the original bits plus check bits computed from them; the receiver recomputes the checks and compares. Non-systematic codes instead transform the whole message into a longer encoded form.
Choosing a method depends on the channel. Some channels scatter errors randomly, others produce bursts, and codes are designed for one pattern, the other or both. Where conditions are unknown or changeable, as on the Internet, systems use automatic repeat request: the receiver acknowledges good data, and anything unacknowledged before a timeout is sent again. This needs a return channel and can add delay and strain congested networks. Forward error correction avoids retransmission by sending enough redundancy to repair errors directly, which is why it appears in mobile networks, fibre-optic links and Wi-Fi. Hybrid schemes combine the two.
Correcting codes come in two broad families. Convolutional codes work bit by bit and suit hardware, with the Viterbi decoder giving optimal results. Block codes work in chunks: early examples include repetition and Hamming codes, Reed–Solomon codes are now especially widespread, and turbo and low-density parity-check codes approach the theoretical best. That best is set by Shannon's theorem, which proves error rates can be made arbitrarily small below a channel's capacity but does not say how to build practical codes that get there.
Source: Error detection and correction