Suppose you send a string of bits where a bit might have been flipped during the transmission. You can add an extra parity bit at the end that can be used to detect errors. What if you wanted to correct the error? Richard Hamming developed an error-correcting code (now called the Hamming code) that encodes 4 bits into 16 codewords of 7 bits each such that every two codewords differ in at least three bits (which we now call the Hamming distance).
0000000 1101001 0101010 1000011 1001100 0100101 1100110 0001111 1110000 0011001 1011010 0110011 0111100 1010101 0010110 1111111
If there is a single error then there is a unique codeword within one bit of the damaged string. By having an error-correcting code you can continue a process instead of just halting when you detect a bad code.
The Hamming code is a linear code, the bitwise sum mod 2 of any two codewords is another codeword. This linear idea led to many more sophisticated codes which have had many applications in computer science, practical and theoretical.