Cryptography is as old as human communication itself, but has
undergone a revolution in the last few decades. It is now about
much more than “secret writing” and includes seemingly paradoxical
notions such as communicating securely without a shared secret, and
computing on encrypted data. In this challenging but rewarding
course we will start from the basics of private and public key
cryptography and go all the way up to advanced notions such as
fully homomorphic encryption and indistinguishability obfuscation.

Mathematical background: This is a proof-based course that will be best appreciated by mathematically mature students, see the FAQ. I highly recommend you go over my CS 121 lectures on mathematical background and probability before the course starts.
I will also publish about a week before the first lecture a homework zero that students are highly encouraged to complete before the course begins.

The graduate version of this course, CS-227, will involve an extra project.

Recommended books:

This course has lecture notes but no official textbook.
However, the following books can be helpful:

Foundations of Cryptography / Goldreich. This two volume book is the “canonical text” of the theory of cryptography. It does not contain all the topics we’ll talk about (and covers many topics we won’t) but the topics covered are done so in great depth.