The purpose of this page is to provide some useful information and resources for college/university instructors who are teaching out of this book or are thinking about adopting it for a course.
How this book came to be:
I have been including applications to cryptography in teaching an assortment of mathematics classes to different sorts of students over many years. Such applications always seemed to get particularly good receptions from my students. Another benefit is that cryptographic applications can give excellent concrete illustrations of some important and/or difficult mathematical concepts. I began teaching cryptography as a special topics course around 2006, and developed notes and good exercises in the process. The course eventually became permanent at my university and it is offered in an alternating sequence with our standard number theory. It covers a sufficient amount of number theory so that our students can take either one, but it is sufficiently different so interested students can take both courses for credit. Unlike our number theory course which attracts only math majors, our cryptography class also attracts students in computer science and to a lesser extent students in other majors such as physics, biochemisty, and biology.
Some possible course outlines that can be taught out of this book:
There is more than enough material in the book for two semester courses in cryptography. We give here some possible course outlines for either a single semester introductory course in cryptography, or a course in modern number theory that emphasises applications to crytography and some interesting and practical number theoretic algorithms. Depending on the number theory background of the students and the degree of technology that an instructor wishes to use, there is a lot of flexibility. The computer implementation exercises are separated from the regular exercises.
Here are three possible technology implementations:
1. (traditional approach) Skip the computer implemtations, just use a scientific calculator to help with computations.
2. (midway approach) Selective use of some of the Java applets or MATLAB programs from the book's main webpage. This approach would require that students/instructor have access to computers (for homework, at least, but perhaps also during exams). To use the MATLAB programs the software (or its free clone FreeMat) would need to be installed on the computers.
3. (higher level computer implementations approach) The computer implementation exercises for each chapter covered could be incorporated in the course. They could be done in any programming language (the C family, python, java, MATLAB, SAGE, Mathematica, Maple, etc.).
An intermeditate approach between 2. and 3. would be to use the MATLAB programs in conjunction with some basic programming such as array implementation, for loops and if branches (to perform brute-force searches, for example).
Two possible course outlines:
1. A one-semester course in Cryptography
An Overview of the Subject (Chap. 1), Divisibility and Modular Arithmetic (Chap. 2), Pre-Computer Era Cryptosystems (Chap. 3), Different Bases (but not their arithmetic) and fast modular exponentiation (Chap. 6), DES (Chap. 7), More Number Theory (Chap. 8), Public Key Cryptography (Chap. 9). If time permits, additional topics from the following might be covered: Some Codebreaking Milestones (Chap. 5), Elliptic Curve Cryptography (Chap. 12).
If the students have already had number theory, then Chap. 2 could be reviewed quickly (perhaps only by a homework assignment), but at least a couple of lectures should be spent on the number theory in Chapter 8 (more time if probabilistic primality tests are covered). In this case, there should be some time to cover some of the additional topics. Some of the longer (number theory) proofs and theoretical exercises could be skipped.
2. A one-semester course in modern number theory with applications to cryptography
Divisibility and Modular Arithmetic (Chap. 2), Affine Ciphers (a nice application of modular arithmetic) (part of Chap. 3), Modular Matrices with an application to the Hill Cipher (Chap. 4), Different Bases (and their arithmetic) and fast modular exponentiation (Chap. 6), More Number Theory (Chap. 8), Public Key Cryptography (skip the material on the knapsack cryptosystems (Chap. 9). If time permits, additional topics about Elliptic curves and their Cryptography (Chap. 12) can be included.
More time and exercises can be spent on proofs, theoretical exercises, and other non-cryptography applications exercises of modular arithmetic.
How to get an examination copy:
Faculty who are seriously interested in using this book as a text can contact me (firstname.lastname@example.org) to request that a review copy be sent from Taylor & Francis/CRC Press.
The book contains answers or solutions to most odd numbered exercises that appear at the end of each chapter, as well as complete solutions to the "Exercises for the Reader" that appear regularly within the chapters. There is a separate Instructor's solutions manual that contains solutions to all even numberd exercises. Instructors may also request this item.
Other instructor resources:
I have created some additional instructor resources. If you are an instructor who has adopted the book to teach a course out of, I would be happy to share with you any of the following supplements. These supplements are only for instructors who are teaching a course out of the book; they will not be sent to students or self-learners.
1. Interactive power point presentations for the following chapters:
Chapter 1: An Overview of the Subject
Chapter 2: Divisibility and Modular Arithmetic
Chapter 3: The Evolution of Codemaking Until the Computer Era
Chapter 4: Matrices and the Hill Cryptosystem
Chapter 6: Representation and Arithmetic of Integers in Different Bases
Chapter 7: Block Cryptosystems and the Data Encryption Standard (DES)
Chapter 8: Some Number Theory and Algorithms
Chapter 9: Public Key Cryptography
2. Additional MATLAB programs for some of the longer algorithms that show results of intermediate steps rather than just the final answer. These include programs for the following algorithms:
The Euclidean Algorithm and the Chinese Remainder Theorem Algorithm (Chap. 2)
The Algorithm for the Small Enigma machine (Chap. 3)
Algorithms for Base b Arithmetic Operations and Fast Modular Exponentiation (Chap. 6)
Algorthithms for the Feistel System of Example 7.1, and several programs for the scaled-down DES algorithm (encryption, decryption, round key creation, and round key function) (Chap. 7)
Some Algorithms for Probabilistic Primality Checking and Pollards p - 1 factoring Algorithm (Chap. 8)
Several Ring Operations in Polynomial Quotient Rings including GF(256) multiplication (Chap. 10)
Several programs for the scaled-down AES algorithm (encryption, decryption, round key creation, and round key function) (Chap. 11)
Several programs for arithmetic operations on elliptic curves (Chap. 12)
NOTE: Creation of these supplements is an ongoing project. Updates will be posted as they come available. I will be happy to receive any related supplements that instructors and/or their students create and are willing to share and allow me to post on this webpage. For example, cryptographic programs for any of the book's algorithms that are created in other programming languages would be most welcome.