CS 6222: Introduction to Cryptography

University of Virginia – Spring 2021


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.

Meeting Time and Place

Location: Online via Zoom
Time: Tuesday, Thursday, 11:00am - 12:15pm


Piazza: We will use Piazza for sending out course announcements.

Gradescope: Homework submissions will be handled via Gradescope. Use course code D55GP5 to sign up.

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 (e.g., APMA 3100/3110) and modular arithmetic will also be helpful. This course is intended for advanced undergraduates and graduate students.

Course enrollment for undergraduate students: Undergraduate students interested in cryptography and who have completed the above prerequisites (or equivalent) are encouraged to enroll in the course. Please send an email to the instructor along with a course action form to enroll in the course.

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.