top of page
Big light.png
ZK graphics.png

Zero Knowledge Bootcamp

Conquer the fearsome math and code zk algorithms from scratch

Next Cohort:

15th Mar 2024

8:00AM EDT

“I expect ZK-SNARKs to be a significant revolution as they permeate the mainstream world over the next 10-20 years.”

Vitalik Buterin

Ethereum’s inventor

Zero knowledge proofs (ZK proofs) have two incredible properties: 

  • They allow privacy preservation in ways that were previously impossible, and 

  • They allow the computation to be verified faster than the original computation. 

This allows for the Ethereum blockchain to scale up because validators don’t have to re-run all the transactions to ensure they are valid — they just need to check the proofs.


Unfortunately, like all new technologies, learning zero knowledge is not easy. But that’s what this Zero knowledge course is for!

This course is not simply about writing applications in zero knowledge programming languages, but acquiring such a comprehensive understanding of the subject that you can write a zero knowledge proof algorithm from scratch.

We will cover applied zero knowledge programming, of course, but the real value of this course is deeply understanding the foundations that have stumped learners for years.

Next Cohort:

15th Mar 2024

8:00AM EDT

What makes this course different

Zero knowledge proofs are an extremely easy subject to learn — if you have the right mathematics background. If you do not have the right mathematical training, zero knowledge proofs are nightmarishly hard.

Where many zero knowledge courses go astray is they do not make strong assumptions about the mathematical background of the learner and introduce the prerequisite math as they go. We believe this gets in the way of the student understanding the bigger picture, and it makes the algorithms seem like a long sequence of arbitrary steps.

Our course takes the opposite approach. We lean heavily on a small subset of abstract algebra and linear algebra and make sure the student understands those fields sufficiently well before we begin. Armed with these powerful abstractions, you will cut through zero knowledge proofs like a hot knife through butter.

Throughout the course, we are careful to stay within the prerequisites that we set at the beginning and not wander into other fields of mathematics, no matter how interesting they may be.

Throughout this course, we will speak in the language of abstract algebra. Despite the scary name, abstract algebra behaves like a wrapper API that hides a lot of complexity and motivates the relationship between seemingly unrelated concepts. Abstract algebra gives us the special ability to jump between universes with ease and unites the seemingly bizarre collection of mathematical theorems that zk proofs rely on.

Rather than try to avoid mathematics, we pick the most useful subset, stay within that subset, and lean heavily into it. Counterintuitively, this makes the subject of zero knowledge proofs very easy.

Although we expect you to be comfortable with math, we don’t expect you to already know abstract algebra. We’ll teach you the parts you need to know well.

Throughout the course, we are careful to stay within the prerequisites that we set at the beginning and not wander into other fields of mathematics, no matter how interesting they may be.

Our wax-on wax-off approach will serve you well through the rest of your programming career as what you learn in this course is generalizable evergreen knowledge — useful beyond zkp.


Isn’t abstract algebra hard to learn?

We don’t think so. If you have a STEM major or taught yourself how to code, you’ll be able to learn the parts you need. Abstract algebra isn’t useful because of its complexity (it’s not complex), but because of its generalizability. We will only cover elementary abstract algebra, equivalent to two or three chapters in a lightweight textbook.

Don't zk proofs require moon math?

No, only bilinear pairings can rightfully be considered moon math. The rest requires math every 1st year undergraduate STEM major knows (or can easily learn). But armed with abstract algebra, you’ll be able to literally abstract away the complexity and focus on the practical aspects.


You should be familiar with the following before starting

Python and numpy. Basic experience with Jupyter Notebooks is highly recommended.

You need to have taken a course on linear algebra before. It’s okay if you’ve forgotten it, we will give you some refresher materials, but to really appreciate abstract algebra, you need to have seen at least two fields of “traditional” algebra. We will also take it for granted that you know how matrix multiplication and the dot product works.

You should know what Z.K.-S.N.A.R.K. stands for and what each term means. We will not waste time explaining to you why zk-snarks are important, hopefully, you know that already.

Being familiar with Solidity, yul assembly, and ABI encoding will be helpful for completing the assignments. If you do not come from a smart contract programming background, we have a separate set of assignments for you to enforce the concepts as a replacement for the Solidity ones. The course is taught from the perspective of a Solidity developer, but blockchain developers from other chains like Solana can benefit too, even those from a non-web3 technical background such as machine learning engineers.

Zero Knowlegde Proof Curriculum

Last Updated: December 2023

9 Weeks

1. Set Theory and Abstract

Topics: sets, groups, cyclic groups, rings, fields, finite fields, binary operators, bijective, injective, and surjective functions, isomorphisms, homomorphisms, dot product, linear combinations

2. Eliptic curves and ECDSA

Topics:  Homomorphic addition, elliptic curve addition, elliptic curve digital signature algorithm

3. Eliptic curves and Solidity

Topics:  EIP 196, Homomorphic encryption with elliptic curve points

4. Bilinear Pairings

Topics:  EIP 197, bn128, symmetric and asymmetric pairings

5. Arithmetization and Rank 1 Constraint Systems

Topics: sets, groups, cyclic groups, rings, fields, finite fields, binary operators, bijective, injective, and surjective functions, isomorphisms, homomorphisms, dot product, linear combinations

6. Quadratic Arithmetic Programs (Part 1)

Topics:  Ring homomorphisms, lagrange interpolation, schwartz-zippel lemma, polynomial commitments, interactive proofs, column vectors

7. Quadratic Arithmetic Programs (Part 2)

Topics:  Evaluation of Polynomials over elliptic curves, trusted setups

8. Groth 16

Topics:  Groth16, end-to-end ZK-SNARKS

By the end of this week, you will have built a fully functional prover and verifier in Python and Solidity using the Groth16 algorithm.

9. Circom

Topics:  Circom and Circomlib

You will write circom circuits with a full understanding of what is going on from the powers of tau ceremony to completing the Solidity verifier. You’ll understand why for loops in zero knowledge are strange and why implementing comparison operators (<=, >=) are surprisingly hard.

The RareSkills Advantage: 
Quality, Efficiency, and Support

Our training philosophy optimizes the balance between self-study and institutional education, ensuring you learn more in five months than most professional Solidity developers do in a year.

Advanced Curriculum

Benefit from our most up-to-date and comprehensive curriculum, which has been refined multiple times to ensure you stay ahead of the curve in the Solidity landscape.

Cohort of 10

Experience a close-knit learning environment with just five students per cohort, fostering better relationships with instructors and more personalized attention.

Weekly Live Classes

Attend interactive, real-time classes with our expert instructors, providing valuable insights and guidance throughout your learning journey.

1:1 Code Reviews

 Receive 1-on-1 feedback on your work, helping you identify and address knowledge gaps while improving your coding skills.

Success Stories from Our Alumni

Our students, from web3 technical founders to lead solidity developers, have seen tremendous success after completing our bootcamps. With over 8 figures of funding collectively raised by our alumni for their technical web3 startups, their achievements stand testament to the quality of our programs.

"Despite having five years of experience in Blockchain, I learned a great deal from it."

We identified and addressed security issues that could potentially occur in smart contracts, making the program all the more practical and relevant.

Adam Boudjemaa
Lead Blockchain Developer | Co-Authored ERC-3643 Standard | Built & Deployed 300+ Smart Contracts 

Onboarding Process

Submit an Application



Access to Calendar events, Slack & Course material

Day 1 of class




(or two payments of $1150)

9 x Weekly lectures

Tailored homework

Community Access



(or two payments of $1150)

9 x Weekly 1-on-1 with

the Instructor

Everything in basic


Starter Tier


Or | $1,150 per month x 2

9 x Weekly lectures

Tailored homework

Community Access


Your topics section has a lot of scary math terminology, are you sure this doesn’t require moon math?

Although mathematicians often use unnecessarily complex vocabulary to describe simple concepts, we opt to use their lingo because it will help you study the literature on your own later. You’ll get used to it pretty quickly.

I want to get started right now. What should I do?

Please read our article Elementary Set Theory and Abstract Algebra for Programmers and do the exercises in it.

Is this course self-paced?

No. If you are just looking to casually understand the subject, check out our blog topics tagged zero knowledge proof. This course is intended for serious learners who are not satisfied with going halfway.

What is the course structure?

If you purchase the basic plan, you get access to weekly live lectures (eight total), study materials, and the RareSkills community. If you purchase the premium plan, you also get a weekly one-on-one meeting (8 in total) with one of the instructors to review your code and make sure you really understand the material. The hard commitments are 1 hour per week, plus an optional 30-minute meeting.

How many hours per week?

This will strongly depend on your background. If you’ve already taken an abstract algebra course, you might be able to do the course in as little as 6 hours a week. If you’re newer to the fields of math we’ve listed above, you should set aside 20 hours to be on the safe side, as it will take more time for the concepts to sink in and complete the homework satisfactorily.

I don’t care how zero knowledge works, I just want to use it

This isn’t advisable because without a deeper understanding, you won’t be able to design applications, and you’ll have a harder time understanding vulnerabilities. Additionally, there seem to be far more jobs in the infrastructure layer than the application layer. That said, our zero knowledge puzzles (in Circom) and Noir puzzles are open-sourced, so check them out to start writing code right away.

How good do I need to be at Python?

Beginner is good enough. We use Python as it has some handy math libraries that we will explicitly teach. You are free to use another language, but you’ll need to find the equivalent libraries on your own. If you prefer to use math software like Matlab, you can do that also, but we won’t offer support for other languages. That said, you need to be proficient at coding in general. If you are completely new to Python, we will provide some pre-course study materials for you to go over.

Is this in person or online?

100% online. Everything will be done through Google meets.

bottom of page