CS 251: Cryptocurrencies and Blockchain Technologies

Cryptocurrencies, blockchains, and smart contracts

Autumn 2019

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

Administrative

Course syllabus (and readings)
Course overview (grading, textbooks, coursework, exams)
CS251 Lectures: Monday, Wednesday:   15:00-16:20,   Gates B01
Sections: Friday:   14:30-15:20,   Thornton 102.
CA mailing list: cs251ta@cs.stanford.edu

Final Exam

Students may take the final at either one of the following two dates:

  • Option 1: (scheduled)   Tue., Dec. 10,  9:00-11:00am, 420-040.
  • Option 2: (alternate)   Mon., Dec. 9,  9:00-11:00am, 420-040.

Previous final exams:   [2018]    [2016]    [2015].

For remote SCPD students: Please email the TAs with your email address, the email address of your SCPD monitor if you have one, and which day you would like to take the exam. We will email a pdf to you which you should print, complete, and email back to us. Hold on to your completed exam until you receive confirmation. Note that if you are local to the bay area, you must come to one of the two exam slots, unless you contact us in advance.

Homework

--
Homework #1:    [pdf]
Due: Monday, Oct. 7 2019, via Gradescope (code: MG7EP3)
--
Homework #2:    [pdf]
Due: Monday, Oct. 21 2019, via Gradescope
--
Homework #3:    [pdf]
Due: Wednesday, Dec. 4 2019, via Gradescope

Projects

--
Project #1: Perform Bitcoin transactions using python-bitcoinlib
Assignment:    [instructions]   [starter code]
Due: Monday, Oct. 14 2019
--
Project #2: Ethereum de-centralized app (Dapp)
Assignment:    [instructions]   [starter code]
Due: Monday, Oct. 28, 2019
--
Project #3: State channel battleship
Assignment:    [instructions]   [starter code]
Due: Thursday, Nov. 14, 2019
--
Project #4: Using SNARKs
Assignment:    [instructions]   [starter code]
Due: Friday, Nov. 22, 2019

Course calendar