Crypto for Data Science
Course description
Crypto for Data Science (BU CDS 453/653) investigates techniques for performing trustworthy data analyses without a trusted party, and for conducting data science without data sharing. The course contains four units that explore protecting data integrity, availability, and confidentiality in turn, and a capstone unit on protecting data science.
This course follows Boston University’s academic conduct code and policies on absence for religious reasons, accommodations, plagiarism, and generative AI use. See the syllabus for more details. Students are responsible for adhering to course policies at all times!
This class also uses the Piazza and Gradescope websites.
Course info
Lectures are on Mon/Wed at 10:10-11:55am in EPC 205. Labs are on Fridays at 10:10-11:00am and 11:15am-12:05pm in PSY B53. Office hours are posted on Piazza.
- Professor: Mayank Varia
- Teaching Fellows: Julia Guskind, Julie Ha
- Course Assistant: Sean Chan
Prerequisites for this course are: mathematical maturity with linear algebra and probability, solid understanding of programming in Python, and familiarity with basic concepts in algorithms such as asymptotic complexity.
Textbooks
- Narayanan, Bonneau, Felten, Miller, and Goldfeder: Bitcoin and Cryptocurrency Technologies
- Paar, Pelzl, and Güneysu: Understanding Cryptography
- Elaine Shi: Foundations of Distributed Consensus and Blockchains
- Mike Rosulek: Joy of Cryptography
- Decentralized Thoughts blog
- Evans, Kolesnikov, and Rosulek: A Pragmatic Introduction to Secure Multi-Party Computation
- Boneh and Shoup: A Graduate Course in Applied Cryptography
Calendar
This schedule includes the learning objectives that students are expected to learn by the end of each unit of the course, along with the weekly lesson plan and links to lecture videos, textbook reading, lab worksheets, and homework assignments. The schedule will be updated throughout the semester. The password to watch the recorded videos is available here.
Unit 1: Protecting data integrity
Learning Objectives: Describe the properties of hash functions, and explain how to use them in protecting passwords and message commitments. Define the security requirements of MACs and digital signatures, and explain their role in authenticating people and data.
| Date | Class | Links |
|---|---|---|
| Wed 9/2 | Lecture 1: Course overview | Notes • Video |
| Fri 9/4 | Lab 1 | |
| Wed 9/9 | Lecture 2: Cryptographic hash functions | Notes • Video |
| Fri 9/11 | Lab 2 on Reading NBFMG section 1.1, pages 23–31 | Worksheet |
| Mon 9/14 | Lecture 3: Password hashing | Notes • Video |
| Wed 9/16 | Lecture 4: (Pseudo)randomness | Notes • Video |
| HW 1 due | Download • Submit | |
| Fri 9/18 | Lab 3 on Reading PPG sections 13.1–13.2, pages 466–472 | Worksheet |
| Mon 9/21 | Lecture 5: Message authentication codes | Notes • Video |
| Wed 9/23 | Lecture 6: Digital signatures | Notes • Video |
| HW 2 due | Download • Submit | |
| Fri 9/25 | Lab 4 on Reading NBFMG sections 1.3–1.4, pages 37–42 | Worksheet |
| Mon 9/28 | Lecture 7: Key exchange | Notes • Video |
| Wed 9/30 | HW 3 due | Download • Submit |
Unit 2: Protecting data availability
Learning Objectives: Explain the components of a cryptocurrency including transactions, mining algorithms, and the blockchain data structure. Describe the goal of decentralization and distributed consensus abstractly, in any scenario needing data liveness and safety.
| Date | Class | Links |
|---|---|---|
| Wed 9/30 | Lecture 8: Bitcoin overview | Notes • Video |
| Fri 10/2 | Lab 5 on Reading NBFMG sections 2.1–2.3, pages 51–61 | Worksheet |
| Mon 10/5 | Exam 1 on Unit 1 | |
| Wed 10/7 | Lecture 9: Proof of work mining | Notes • Video |
| Fri 10/9 | Lab 6 on Reading NBFMG sections 2.4–3.1 and 3.4–3.5, pages 56–78 and 88–95 | Worksheet |
| Mon 10/12 | No lecture | |
| Tue 10/13 | Lecture 10: Bitcoin security | Notes • Video |
| Wed 10/14 | Lecture 11: Byzantine broadcast | Notes • Video |
| HW 4 due | Download • Submit | |
| Fri 10/16 | Lab 7 on Reading Shi sections 5–6, pages 27–38 | Worksheet |
| Mon 10/19 | Lecture 12: Synchronous blockchains | Notes • Video |
| Wed 10/21 | HW 5 due | Download • Submit |
Unit 3: Protecting data confidentiality
Learning Objectives: Explain how encryption protects data on the Internet, and the role of one-time pads and (pseudo)randomness within authenticated encryption. Describe how secure messaging applications provide end-to-end encryption, as well as pre- and post-compromise security.
| Date | Class | Links |
|---|---|---|
| Wed 10/21 | Lecture 13: Secret splitting and one-time pads | Notes • Video |
| Fri 10/23 | Lab 8 on Reading Rosulek section 1, pages 10–17 | Worksheet |
| Mon 10/26 | Exam 2 on Unit 2 | |
| Wed 10/28 | Lecture 14: Authenticated encryption | Notes • Video |
| HW 6 due | Download • Submit | |
| Fri 10/30 | Lab 9 on Reading Aumasson, pages 7–12 | Worksheet |
| Mon 11/2 | Lecture 15: Disk encryption | Notes • Video |
| Wed 11/4 | Lecture 16: Signal’s double ratchet | Notes • Video |
| HW 7 due | Download • Submit | |
| Fri 11/6 | Lab 10 on Reading Signal’s double ratchet algorithm | Worksheet |
| Mon 11/9 | Lecture 17: Transport Layer Security | Notes • Video |
| Wed 11/11 | HW 8 due | Download • Submit |
Unit 4: Protecting data science
Learning Objectives: Describe how multi-party computation enables people to perform data science together, without data sharing. Explain how zero knowledge proofs allow people to participate in the digital economy while preserving their privacy. Engage with ethical, regulatory, and policy questions about the role of crypto toward addressing social challenges.
| Date | Class | Links |
|---|---|---|
| Wed 11/11 | Lecture 18: Secure multi-party computation | Notes • Video |
| Fri 11/13 | Lab 11 on Reading EKR sections 1.2–1.3, pages 7–14 | Worksheet |
| Mon 11/16 | Exam 3 on Unit 3 | |
| Wed 11/18 | Lecture 19: Verifiable MPC | Notes • Video |
| Fri 11/20 | Lab 12 on Reading Lindell-Pinkas section 2.1, pages 4–9 | Worksheet |
| Mon 11/23 | Lecture 20: Zero knowledge proofs | Notes • Video |
| HW 9 due | Download • Submit | |
| Wed 11/25 | No lecture | |
| Fri 11/27 | No lab | |
| Mon 11/30 | Lecture 21: Faster & smaller ZK proofs | Notes • Video |
| Wed 12/2 | Lecture 22: Private cryptocurrencies | Notes • Video |
| Fri 12/4 | Lab 13 on Reading Blogs on ZK and succinct ZK | Worksheet |
| Mon 12/7 | Lecture 23: Crypto and elections | Notes • Video |
| HW 10 due | Download • Submit | |
| Wed 12/9 | Lecture 24: Crypto and the law | Notes • Video |
| Fri 12/11 | No lab, optional Reading MIT Media Lab blog post | |
| Wed 12/16 | Final Exam at 9–11am (per the BU Final Exam Schedule) |