In digital communications, all messages are sequences are zeroes and ones, but because of physics (for examples, radio waves from a cell tower bouncing off the Flatirons), sometimes a 0 gets interpreted as a 1, and vice versa. To combat errors, engineers build redundancy into transmitted messages. For example, sending 101 as 1111111111 000000000 1111111111 allow a few errors in reception, while still allowing a message to be faithfully decoded. Indeed if we received that transmission as 1101110111 0011000001 1111001101 we can use “majority decoding” to correctly determine that the original message was indeed 101. The problem is that with TOO much redundancy transmission becomes slow and wastes power.
This is where the MATH comes in: how do you add enough redundancy to code words, so that the message can be recovered despite a few errors, but not SO much that the process is inefficient?
These possible transmitted message are called {\it codewords} and sets of the them are called {\it codes}. We’ll discuss properties of codes like the Hamming distance, which measures the number of places in which two codewords differ, and a “weight enumerator” of the code that records how many codewords have a given distance from the 0 vector.
The freaky thing is that if we define the “dual code” $C}^{\perp$ to $C$ as all the code words that have a trivial dot product (mod 2) with all the codewords of $C$, then the weight enumerator is $C}^{\perp$ can easily be read off from the weight enumerator of $C$, by an amazing theorem of Jessie MacWilliams. We will present her famous theorem and provide as many details of the proof as we can.