The goals of this course are to:

  • Understand the mathematical underpinnings of coding theory and cryptography
  • Be able to encipher, decipher, cryptanalyse and use cryptography securely
  • Be able to code and decode
  • Learn some elementary number theory
  • Program a computer (at an introductory level)
  • Improve your LaTeX skills
  • Improve your ability to communicate mathematics and write proofs
  • Improve your ability to think mathematically
  • Have fun


New plan of Modules (6 total; 15% each):

  • Classical Cryptosystems
  • Modular Arithmetic and Discrete Log Problem
  • Euclidean algorithm, RSA, primality testing and factoring
  • Finite fields and elliptic curve cryptography, as well a post-quantum cryptography proposals (including lattice-based cryptography and isogeny-based cryptography)
  • Coding Theory
  • Quantum Aspects


Original plan of 9 Modules (4-6 lecture days each):

Classical Cryptosystems

  • Shift, affine, Vigenere, substitution ciphers, engima machine, etc., and classical cryptanalysis, such as frequency analysis; general concepts of cryptosystems; also modular arithmetic, introduction to Sage and LaTeX

Modular Arithmetic

  • modular arithmetic in more depth, additive and multiplicative dynamics, discrete logarithms, Fermat/Euler theorems, primitive roots, efficient exponentiation

Discrete Log Cryptography

  • Diffie-Hellman key exchange and El Gamal Encryption, public key cryptography, Discrete Logarithm Problem, Birthday attack, baby-step giant step, Pollard’s rho, index calculus, notions of security

The Euclidean Algorithm & primality testing

  • greatest common divisor, Euclidean algorithm, inverses modulo n, Chinese remainder theorem, euler phi function, primality testing (Fermat, Miller-Rabin)

RSA & Factoring

  • RSA cryptosystem, square roots mod n, p-1 factoring, quadratic sieve, timing attacks, other attacks, pohlig-hellman algorithm

Finite fields and elliptic curve cryptography

  • finite fields and their computations, elliptic curve cryptography, discrete logarithm in finite fields

Coding Theory

  • error correcting codes, bounds, linear and hamming codes, decoding, coding-based cryptography

Lattice-Based Cryptography

  • hard lattice problems, NTRU, Ring-LWE

Quantum Aspects

  • quantum key exchange, quantum computing, Shor’s algorithm