This series of lectures is designed to introduce the reader to the ideas of error correcting codes, such as the codes that make our communications with satillites work. There are no real formal prerequisites for understanding these lectures other than some patience and logical reasoning ability.

The idea is that you should work through the material, asnswering the questions as you go, and making sure that you understand the questions and their solutions (at the end of each lecture some hints are provided for some of the questions in case you get stuck) before moving along to the next idea.

The first lecture starts with the idea of encoding messages with only two symbols. The second lecture discusses the difference between erasures and erros and gives two very simple examples of error correcting codes. The third lecture develops the idea of Hamming distance and its meaning in order to measure the effectiveness of codes at detecting and correcting errors. The fourth lecture discusses the goal of transmitting as little data as possible and evaluates the codes we have already discussed from this point of view. The fourth lecture also intorduces one new code, the partiy check. The fifth and final lecture introduces the Hamming code, an improved version of the parity check code that not only detects but corrects errors in transmission.

This work was made possible through a grant from the National Science Foundation.