### COURSE NUMBER: MATH 460
COURSE TITLE: Cryptography
NAME OF INSTRUCTOR: Dr. Amy Feaver
CREDIT WEIGHT AND WEEKLY TIME DISTRIBUTION: credits 3(hrs lect 3 - hrs sem 0 - hrs lab 3)
COURSE DESCRIPTION: This course introduces the mathematical algorithms that are used in cryptography. This includes historic cryptography such as the Caesar and Vigenere ciphers, and the German enigma machine. The majority of the course will focus on modern, public key cryptography: the Diffie-Hellman key exchange, RSA, and elliptic curve cryptography. Students will also learn the mathematics used in these algorithms, which includes modular arithmetic, Euler's phi function, introductory information on elliptic curves, and the definitions of groups, rings and fields. The lab component explores prime detection and factorization algorithms, and the implementation of ciphers.

Same as CMPT 460.

Prerequisites: CMPT 275, CMPT/MATH 360
REQUIRED TEXTS: Singh, Simon (2000), The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography
MARK DISTRIBUTION IN PERCENT:
 Assignments, Quizzes, Projects and Labs 65% Three-Quarter Term Exam 35% 100%
COURSE OUTLINE: This course is intended to teach students the basics of cryptography. At the end of this course students should know and understand:
• the history of cryptography before computers
• the RSA algorithm
• Diffie-Helman key exchange
• the El Gamal cryptosystem
• protocols used in cryptography
• how computers find “random” numbers
• how one-way functions work, and the differences in computational complexity between computing the functions and recovering the input from the results
• the basics of public key and private key cryptography
Labs will consist of programming assignments, done individually and in groups, which will reinforce the concepts learned in class through coding in Python 3. Students enrolled in MATH 460 who do not have all of the programming prerequisites will sometimes have the option to do a project in place of a programming lab. However, MATH 460 students should expect to learn some amount of programing in this course.

Required texts, assignments, and grade distributions may vary from one offering of this course to the next. Please consult the course instructor for up to date details.