Crypto for Data Science
Fall 2026
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 first half of the course investigates cryptocurrencies, the blockchain technology underpinning them, and the incentives for each participant. The second half of the course focuses on privacy and anonymity using advanced tools from cryptography.
This course follows Boston University’s academic conduct code and policies on plagiarism, generative AI use, absence for religious observance, and accommodations.
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.
Unit 1 – Protecting Data Integrity (authenticity without trust)
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 | Session | Details |
|---|---|---|
| Wed 9/2 | Lecture 1: Course overview | Notes • Video |
| Fri 9/4 | Lab 1: Bytestrings in Python | |
| 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: Commitments and (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 (communication without censorship)
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 | Session | Details |
|---|---|---|
| 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 (messaging without meeting)
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 | Session | Details |
|---|---|---|
| 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 (analyzing without sharing)
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 | Session | Details |
|---|---|---|
| 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) |