CS 6222: Introduction to Cryptography

University of Virginia – Spring 2020


This course will provide an introduction to modern cryptography and its applications to computer security. This course will cover the fundamentals of symmetric cryptography (i.e., encryption and message authentication) and public-key cryptography (i.e., key-exchange and signatures) as well as cryptographic protocols like zero-knowledge proof systems. More details are available in the course syllabus.

Meeting Time and Place

Location: Rice 340
Time: Monday, Tuesday, 11:00am - 12:15pm


Piazza: We will use Piazza for sending out course announcements. Please sign up for the course Piazza using this link.

Homework: Please see the Course Organization and Policies page for details on how to format and submit your homeworks as well as the collaboration policy for the course.


This is a theory-based course and we will assume that you are comfortable with mathematical proofs. We recommend that you have taken a discrete math course (e.g., CS 2102), an introductory theory of computation course (e.g., CS 3102), and an introductory algorithms course (e.g., CS 4102). A basic understanding of probability theory and modular arithmetic will also be helpful. This course is intended for advanced undergraduates and graduate students.

Reference Material

Throughout the semester, we will post additional reference material here:


The structure of this course is inspired by Stanford's CS 255 course.