CS 251: Blockchain Technologies

Fall 2025

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 familiarity with computer programming. CS107 (Computer Organization) or equivalent is required. CS111 (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 required; we will introduce concepts from cryptography as needed during class.

Textbook and Readings

We will list external reading sources on the course syllabus page. These readings will often serve to expand on what we will discuss in class. They are not a replacement for the lectures. They are also not necessary to be read before coming to lecture, but pre-reading can help in following the lectures.

Sections

There is will be a weekly section (see the main course page). Sections will be recorded. They are optional, but highly recommended. They will often expand on the material in the lecture, and introduce the programming projects.

Homework Assignments

Exams

There will be a remote final exam that will take place during the last week of the quarter at the assigned final exam slot for the course. If a special circumstance arises, please reach out to the TAs to take the exam remotely.

Grading

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

0.25 H + 0.5 P + 0.25 F