Living in the early decades of the information age, we find ourselves depending more and more on codes that protect messages against either noise or eavesdropping. We begin this course by studying the history of this subject, including, for example, the story of the Enigma code from World War II. We then examine some of the most important codes currently being used to protect information, including linear codes, which in addition to being mathematically elegant are the most practical codes for error correction, and the RSA public key cryptographic scheme, popular nowadays for internet applications. Looking ahead by a decade or more, we show how a "quantum computer" could crack any RSA code in short order, and how quantum cryptographic devices will achieve security through the Heisenberg uncertainty principle. Evaluation will be based on homework sets and exams. Prerequisites: Mathematics 211 or Mathematics 210 or Physics 210 or permission of the instructors.