Succinct non-interactive proof systems, also called SNARKs, have emerged as an extremely versatile tool that is used in many areas of computing, including blockchains, data provenance, and machine learning. This course provides an in-depth coverage of how SNARKs work and how to use them in practice. We will cover the beautiful ideas used to construct SNARKs, along with a programming project that will teach students how to use the latest SNARK tools.
Prerequisites: The course assumes no prior knowledge of zero-knowledge proof systems, but does require an understanding of the basics of cryptography, as covered in CS255 or equivalent. The course will include one programming project and assumes a familiarity with computer programming. CS107 (Computer Organization) or equivalent is required.
Textbook and readings: We will list optional reading sources on the course syllabus page. These readings will often serve to expand on what is discussed in class. They are not a replacement for the lectures. They are not required to be read before coming to lecture, but the readings can help in following the lectures.
Sections: There is will be a weekly section (see the main course page). They are optional, but highly recommended. They will often expand on the material in the lecture, and help with the programming project.
Exams: There will be no final exam.
Grading: Final placement in the class will be determined based on the assignments.