Course Notes [PDF] (I am very grateful to Daniel Winter for producing these notes, with additional help from Wolfgang Baltes)
Unit 1:
dectobin.py
onetimepad.py
Unit 1 Homework:
bits.py
otp.py
testcrypto.py
Unit 2 Homework:
cbc_clean.py
Unit 3:
code.py
generator.py
Unit 3 Homework:
hw3_2_util.py
hw3_2_primitive_roots_supplied.py
hw3_2_primitive_roots_solution.py
hw3_4_Rabin_Miller_supplied.py
hw3_4_Rabin_Miller_solution.py
hw3_5_constant_modular_exp_supplied.py
hw3_5_constant_modular_exp_solution.py
Unit 4:
code.py
badkeys.py
Unit 4 Homework:
rsa.py
signatures.py
Unit 5 Homework:
beast_client.py
beast_attack.py
Unit 6:
code.py
Unit 6 Homework:
unit6_util.py
cut_and_choose.py
cut_and_choose_signed.py
orsim.py
Unit 7:
generator.py
ot.py
final.py
Dan Boneh has two excellent on-line cryptography courses: Cryptography I and Cryptography II. They cover many of the same topics as my course, but with more theoretical depth.
Bryan Pendleton wrote a comparison, Comparing the Coursera and Udacity Cryptography classes, which I think is fair and helpful (and positive about both courses).
If you've already taking my course and want to go in more depth and gain a more formal understanding of cryptography, I highly recommend taking Dan Boneh's course next.
Other cryptography courses I've taught: