CS 6501: Advanced Topics in Cryptography

University of Virginia – Spring 2019


This is an advanced cryptography course that will cover the foundations of modern cryptography, zero-knowledge proof systems, multiparty computation protocols, post-quantum cryptography, and other topics as time permits. More details are available in the course syllabus.

Meeting Time and Place

Location: Rice 032
Time: Monday, Wednesday, Friday, 10:00am - 10:50am


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

Problem sets: Please see the Course Organization and Policies page for details on how to format and submit your problem sets as well as the honor policy and collaboration policy for the course.

Contacting us: The Course Staff page has information about how to contact us. To submit anonymous feedback to us at any point during the semester, you may use this form.


Familiarity with basic cryptographic concepts such as those covered in an introductory cryptography course will be helpful but not strictly necessary. We will try to keep the course self-contained.

This is a theory-heavy 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). Note that these are not strictly required as long as you are willing to learn the relevant concepts for this course.

Throughout the course, we will periodically post additional reference material here:


The structure of this course is based on the Spring 2018 iteration of Stanford’s CS 355 course.