Schedule & Requirements
Requirements
The goal of the final project is for you to build a complete system that accomplishes a realistic task using applied cryptography. Final projects will be completed in groups of 1-3. Each group member should do work roughly equivalent to 1 homework assignment (i.e. the final project should not take you significantly longer than a single weekly homework assignment). The deliverables for the project will be as follows:
- A project proposal of 1 paragraph, describing:
- Who is in your group
- What problem you’re trying to solve
- A brief description of the approach you plan to use (e.g. what protocols or approaches)
- A project writeup (README) of 1-2 pages, containing:
- A problem statement
- A technical description of your solution, with emphasis on anything that makes your solution unique; your description should be sufficient to enable the reader to reproduce your implementation
- A description of the results - if you’ve evaluated your implementation on real data, describe how well it works
- A project presentation video of about 5 minutes
- Your presentation should include slides or a demo
- All group members should present some part of the project
- Your presentation should cover the same material as your writeup, and be understandable to anyone who has taken this class (i.e. related work that was not covered in class should be explained in your presentation)
- Your implementation, in whatever form you choose
- You can use any language or libraries you prefer, but a Python notebook will make grading easier
Schedule & Grading
The final project is worth 10% of your final grade. The schedule for final project deliverables, and the contribution of each one to the grade you receive for the final project, are as follows:
| Deliverable |
Due Date |
Grade Percent |
Turn In |
| Project Proposal |
4/18/26 by 11:59pm |
10% |
Brightspace |
| Project Presentation Video |
5/4/26 by 11:59pm |
30% |
Brightspace |
| Implementation |
5/4/26 at 11:59pm |
40% |
Brightspace |
| Project Writeup |
5/4/26 at 11:59pm |
20% |
Brightspace |
Graduate Students
Graduate students (and undergraduates taking the course for graduate credit) will be expected to develop a more ambitious final project (e.g. a more sophisticated algorithm or approach or a larger or more challenging dataset).
Project Ideas
You’re welcome to work on any project interesting to you, as long as it’s related to the concepts we have covered in class. My suggestion would be to implement one of the techniques we discussed in class, but did not implement in an exercise or homework assignment. Some examples include:
- MPC-based projects
- Fixed-point arithmetic with multiplication and reciprocal using binary MPC (GMW or multiplication triples)
- General-purpose encrypted database or secret-shared Pandas-style dataframes with queries using MPC
- Secret-shared matrices (e.g. Numpy arrays) with matrix operations using MPC
- Simple machine learning with MPC: e.g. linear or logistic regression inference, tree-based model inference, or gradient descent
- Implementation of Yao’s garbled circuits protocol
- FHE-based projects
- Robust implementation of FV with large
q and realistic parameters
- Implementation of another scheme (BGV, CKKS)
- Applications of FHE (e.g. drawn from the MPC section)
- Bootstrapping circuit for FHE (very challenging)
- Zero-knowledge proof projects
- Implementation of non-interactive ZK protocol for graph coloring
- Implementation of MPC-in-the-head for ZK proofs about circuits
- Circuits to check validity of electronic votes (e.g. the voting protocol from our homework)
- Blockchain-based projects
- Cryptocurrency implementation (validation of blockchain; validation of transactions; coin-based transactions)
- Simulation of distributed cryptocurrency system (broadcasting transactions; mining; broadcasting new blocks)