June 10, 2014

Cryptography I

Tags: Coursera, MOOC, Technical

Cryptography is a very important part of the modern world, especially for anyone active on the Internet. For some time, I have wanted to do a course on the maths behind modern cryptography. So I promptly signed up after discovering Stanford’s Cryptography I on Coursera.

This 6 week course is the first half of a larger course comprising a complete introduction to the subject (Cryptography II runs separately). The course consists of 12 well produced, information-packed lectures presented at a rate of 2/week by the lecturer Dan Boneh as a series of slideshows with annotations added as the narration progresses. The lectures run for around an hour and a half each, so that is 3 hours/week just for the lessons - if you only need to watch them once! There are also 2 assignments per week: a standard Coursera multiple choice quiz; and, an optional programming assignment (although distinctions are only available for those that do both). The course notes suggest 5-7 hours are required per week to complete the course, but I never took less than 10 hours/week (normally just over that figure), although that includes time on the programming assignments.

The course is heavily maths based. It starts with an introduction to discrete probability, before going through various encryption systems. Block ciphers (like AES), message integrity (using system like CBC_MAC), authenticated encryption (eg. TLS), basic key exchange (RSA) before an introduction to computational number theory and public key encryption. All the maths content required for understanding course is presented during the course, but students still need to be very comfortable with maths as it forms the basis of every lecture. I found this course hard, I had to watch many lectures twice, and the assignments took me some time to get right. Unlike other courses, it did not get easier as it progressed - the difficulty level remained constant.

This is one for those with a theoretical interest in cryptography as the practical side can be summed up as “use a modern industry standard encryption system, never write your own!” A challenging, but interesting course.