Here is an outline of a graduate course on cryptology. Some of the C courses could be taught by people from mathematics who have a bit of background---esp. if no one else can be found who will teach them!

(The course is roughly based on Koblitz GTM book).

Each lecture of 1+1/2 hours duration. Total course time 60 Hours. The M courses are essentially mathematics courses while the C courses are computer science courses.

- Algorithmic Elementary Number Theory: (3 Lectures M)

Finite fields; bit operations; complexity of computations over finite fields, integers and floats (crude estimates).

- Introduction to arithmetic problems of computation interest: (3 Lectures M)

Primality, Factorisation, discrete logarithm. Some elementary algorithms.

- Introductory notions of cryptology/cryptanalysis: (4 Lectures C)

Definition of the problem, notions of messages, ciphers and keys. Symmetric and asymmetric cryptography. Classical techniques and statistical analysis. Division into problems of protocol/management vs. problems of algorithms.

- Symmetric encryption techniques: (5 Lectures C)

Vignere and block ciphers. DES and AES. Compression and Shannon theory.

- Asymmetric systems: (5 Lectures C)

RSA, Diffie-Hellman, El Gamal. One-way functions and compexity classes. Hashes/MD5.

- Elliptic and Hyper-elliptic curves: (5 Lectures M)

Elementary algorithms to compute using elliptic curves. (Detailed theory of curves not required).

- Protocols: (5 Lectures C)

Key exchange. Encryption. Authentication. Time-stamping.

- Cryptanalysis: (5 Lectures M+C)

Regression analysis. Factorisation techniques. Prime generation and "weak" choices. Pseudo-random/non-predictable sequence generation.

- Implementations: (5 Lab sessions C)

Examining the code in PGP, GnuPG, SSL implementations.