CS 251: Bitcoin and Cryptocurrencies

Overview

Autumn 2019

Description

The potential applications for blockchains and cryptocurrencies are enormous. The course will cover the technical aspects of cryptocurrencies, blockchain technologies, and distributed consensus. Students will learn how these systems work and how to engineer secure software that interacts with a blockchain system like Bitcoin and Ethereum. This course is intended for advanced undergraduates and graduate students.

Prerequisites and programming languages

The course assumes a basic familiarity with computer programming. CS110 (Principles of Computer Systems) or equivalent is strongly recommended. To the extent possible, the projects will be done in Python and Solidity.

CS255 (Introduction to Cryptography) is helpful but not necessary; we will introduce concepts from cryptography as needed during class but students with no background in cryptography may wish to do extra reading.

Textbook and Readings

We will list external reading sources on the course syllabus page. These readings will often serve to expand on what we'll talk about in the lectures and sometimes present the material in a different way. They are not a replacement for the lectures. They are also not necessary to be read before coming to lecture. The lectures will be self-contained so the readings can be read afterwards to help reinforce the concepts presented in the lectures. They can equivalently be read before lecture to help the lectures make sense, depending on your learning style.

We will be using the textbook Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction by Narayanan, Bonneau, Felten, Miller and Goldfeder (referred to as NBFMG in the syllabus). The textbook is available online as well as at the Stanford bookstore. If you don't wish to purchase the textbook, you may use the author's preprint edition which is available for free online.

Course readings will also include several other freely available online sources listed in the syllabus page.

Sections

  • There will occasionally be a section on Friday 2:30-3:20pm in Thornton 102.
  • Attendance at the sections is optional, but highly recommended.

Homework Assignments

  • There will be three written homework assignments and four programming projects.
  • You may collaborate when solving the written assignments, however when writing up the solutions you must do so on your own. If you collaborate, please list the names of your collaborators on your assignment.
  • Programming projects may be done in pairs or alone.
  • You must submit all homeworks and projects electronically. Submission instructions will be provided.
  • Extensions:  Each student has a total of 72 extension hours throughout the quarter. This automatic extension can be spent in units of 24 hours on any of the assignments and projects. Please mark the submission time for any late assignment.
  • Homework and projects will be due at 11:59pm on the specified deadline.

Exams

There will be a final exam in the regularly scheduled time slot during final exam week. We will also provide an alternate final for those who cannot make the scheduled time. There will not be a midterm exam.

Grading

Final placement in the class will be determined by the following formula:

0.25 H + 0.5 P + 0.25 F

  • H is your average score on the three written homework assignments.
  • P is the weighted average grade on the four programming projects.
  • F is your final exam score.