CS294/194-238 Zero Knowledge Proofs


Dawn Song Shafi Goldwasser Arka Rai Choudhuri
Dawn Song Shafi Goldwasser Arka Rai Choudhuri
(Guest Instructor)
UC Berkeley UC Berkeley NTT Research

Course Staff

Class Time


This is a variable-unit course. The requirements for each number of units are listed below:

If you need a permission code to join the course, please fill out this form and we’ll get back to you as soon as possible.

Course Syllabus

Date Topic
01/17 Introduction and History of ZKP | Lecture | Playlist | Quiz | Slides | Notes

Readings Other Helpful Resources
01/24 Overview of Modern SNARK Constructions | Lecture | Playlist | Quiz | Slides | Notes

01/31 Libraries and Compilers to build ZKP | Lecture | Playlist | Quiz | Slides

2. Efficient Constructions of ZKP
2.1. Polynomial IOPs
02/07 Interactive Proofs (IP) | Lecture | Playlist | Quiz | Slides

Readings Other Helpful Resources
  • Spartan
  • Hyrax
  • <a href="https://faculty.cc.gatech.edu/~genkin/papers/vsql.pdf style="font-size:24px">vSQL</a>
  • Libra
02/14 Plonk Interactive Oracle Proofs (IOP) | Lecture | Playlist | Quiz | Slides

2.2. Polynomial Commitments
02/21 Discrete-log-based Polynomial Commitments | Lecture | Playlist | Quiz | Slides

02/28 ZKP based on Error-Correcting Codes | Lecture | Playlist | Quiz | Slides

03/07 Transparent ZKP | Lecture | Playlist | Quiz | Slides

2.3. Linear PCP
03/14 Linear Probabilistically Checkable Proofs (PCP) | Lecture | Playlist | Quiz | Slides

2.4. Recursive SNARKs
03/21 Recursive SNARKs, Aggregation and Accumulation | Lecture | Playlist | Quiz | Slides

Spring Break (03/27 - 03/31)
3. Applications and Advanced Topics in ZKP
04/04 Theoretical Foundations & Recent Theoretical Advancements | Lecture | Playlist | Quiz | Slides
04/11 Overview of ZKP Applications & zkRollup and zkEVM | Lecture | Playlist | Slides
Building opcode compatible zk EVMs | Lecture | Slides
04/18 Privacy-preserving Architectures | Lecture | Slides
04/25 ZKP Applications & zkBridge, Trustless Bridge made Practical | Lecture | Slides
More ZKP Applications | Lecture | Slides
05/02 Formal Verification of ZKP | Lecture | Playlist | Slides
05/09 Hardware Acceleration of ZKP | Lecture


1 unit

2 units

3 units

Project Proposal5%
… Milestone10%
… Presentation10%
… Report10%
… Implementation15%
4 units

Project Proposal5%
… Milestone10%
… Presentation10%
… Report15%
… Implementation20%


All quizzes are released in parallel with (or shortly after) the corresponding lecture and will be due midnight the following Tuesday. Please remember to complete the quiz each week. Although it’s graded on completion , we encourage you to do your best. The questions are all multiple-choice.

Group project

Students will be completing an open-ended research project culminating in a presentation and a workshop-style paper submitted at the end of the semester. You will choose an area of research in ZKP that you wish to explore and are encouraged to read related papers in that area. You will then identify an area that you believe needs improvement or merits further research and build systems and/or conduct experiments to further the state of the art within your chosen field. Students are welcome to choose their own topics, but we’ll also provide a list of topic suggestions that you can take inspiration from if you wish. More details TBD.


More on this to be announced on Ed.

Students taking 1 unit should also write an article (at least 2 pages) about the relevant topic covered in this course or your experience of the course posted online, and optionally tweet about the article. The article should be finished by May 5th. For example a blog post on:

The article’s marking criteria can be found below:

Assignment Timeline

Assignment Released Deadline
Group formation 01/23 02/06
Project proposal 02/07 02/27 03/03
Lab 02/28 03/13
Project milestone 03/21 03/26
HW (Solutions) 04/04 04/17
Project presentation - 04/25 (In Class)
Project final report 05/02 05/12

Course Description

This class aims to bring together students and experts in academia and industry to explore Zero-Knowledge Proofs (ZKP). ZKP is a classical cryptographic primitive that ensures the validity of data and computations without sacrificing their confidentiality. It was proposed in the seminal paper by Goldwasser-Micali-Rackoff in 1985. Long considered wildly impractical, ZKPs have seen enormous efficiency improvements over the last decade. This has unlocked entirely new paradigms in the design of distributed and trustless systems, making ZKP one of the most important technologies to the future of blockchains. ZKPs are already being used to build privacy-preserving cryptocurrencies and to improve scalability via zkRollups and zkEVMs, and they stand poised to transform society’s mechanisms for establishing trust and privacy in the coming years and decades.

Our goal is to provide a platform for students to learn the cutting-edge technology of ZKP. Through the exposure to research in academia, and technology in industry, the students will be able to quickly gain the knowledge of ZKP and to develop ZKP systems for various applications.

This course covers fundamental techniques to build ZKP protocols, tools to implement ZKP for different computations, and different applications of ZKP in blockchain and other areas. Topics in the course include: