ABSTRACT

An algorithm is simply a list of instructions for completing a task. Algorithms form the core of computer science and are used regularly in all kinds of discrete mathematics. They even function as a proof technique-an algorithm can give a constructive proof of existence! The primary examples we will use in exploring algorithms are simple ciphers. Ciphers are ways to encode messages so that they are not easily read by people other than the intended recipient(s). In particular, we will investigate the shift cipher, atbash, and the Vigene`re cipher. The shift and atbash ciphers can be broken by hand, and the Vigene`re with not much more work, but they are essentially the only ciphers that are understandable with the level of mathematics presented in this text. (We will mention other interesting ciphers and how to learn about them in Section 5.6.) All of these ciphers use modular arithmetic, so our goals in this chapter are to learn some modular arithmetic, figure out how it is used in the shift and Vigene`re ciphers, and understand what algorithms are used to encipher and decipher messages using these ciphers.