Error-correcting codes play a hidden but central role in modern society, ensuring the accuracy of information stored in DVDs, hard drives and flash drives, and sent over cell phone, the internet and satellites among other digital technologies. A central problem in coding theory is devising a means to transmit information as correctly and efficiently as possible given the expected interference in channels such as wired and wireless networks. The modern-day discipline of coding theory began in 1948 when Claude Shannon proved, in a no constructive way, that there exist optimal codes that maximize both transmission rates and error-correction capabilities. Since then, theoretical mathematicians have been engaged in constructing and researching optimal codes. Topics in this pure math course include Shannon's Theorem on the existence of optimal codes, linear codes, double-error-correcting BCH codes, cyclic codes and Reed-Muller codes.