Course Summary (4 units): Cryptography is the science of designing algorithms and protocols for enabling parties to communicate and compute securely in an untrusted environment (e.g. secure communication, digital signature and etc.) Over the last four decades, cryptography has transformed from an ad hoc collection of mysterious tricks into a rigorous science. This course will introduce students to the basic paradigms and principles of this rigorous science.

Prerequisites: The only formal prerequisite is a course on discrete mathematics (CS70). Specifically, we will assume familiarity with basic (discrete) probability and modular arithmetic. Students enrolled are also expected to have had some exposure to algorithms, mainly to be comfortable reading pseudocode and to be familiar with big-O notation. Please see here for more details.