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.