CS 251: Cryptocurrencies and Blockchain Technologies

Cryptocurrencies, blockchains, and smart contracts

Fall 2022

The course covers all aspects of blockchains and cryptocurrencies, including distributed consensus, smart contracts, economics, scalability, and applications. We will focus on Bitcoin and Ethereum as case studies.

Administrative

Course syllabus (and readings)
Course overview (grading, textbooks, coursework, exams)
CS251 Lectures: Monday, Wednesday:   1:30-2:50pm,   Gates B01
Sections: Friday:   2:30-3:20pm,   Building 200-30.
CA mailing list: cs251ta@cs.stanford.edu or use Ed Discussions.

Homeworks and Projects

--
Project #1: Merkle trees in Python
Assignment:    [instructions]   [starter code]
Due: Monday, Oct. 3, 2022, via Gradescope (code: DJ66V3)
--
Homework #1:    [pdf]
Due: Tuesday, Oct. 11, 2022, via Gradescope
--
Project #2: Perform Bitcoin transactions using python-bitcoinlib
Assignment:    not out yet
Due: Tuesday, Oct. 18, 2022, via Gradescope
--
Homework #2:    not out yet
Due: Tuesday, Oct. 25, 2022, via Gradescope
--
Project #3: An Ethereum payment app
Assignment:    not out yet
Due: Tuesday, Nov. 1, 2022, via Gradescope
--
Homework #3:    not out yet
Due: Tuesday, Nov. 8, 2022, via Gradescope
--
Project #4: Building a decentralized exchange (DEX)
Assignment:    not out yet
Due: Wednesday, Nov. 16, 2022, via Gradescope
--
Homework #4: Using SNARKs
Assignment:    not out yet
Due: Tuesday, Nov. 29, 2022, via Gradescope

Course calendar

Lecture recordings

Video cameras located in the back of the room will capture the instructor presentations in this course. For your convenience, you can access these recordings by logging into the course Canvas site. These recordings might be reused in other Stanford courses, viewed by other Stanford students, faculty, or staff, or used for other education and research purposes. Note that while the cameras are positioned with the intention of recording only the instructor, occasionally a part of your image or voice might be incidentally captured. If you have questions, please contact a member of the teaching team.