ELEC_ENG/COMP_ENG 334: Fundamentals of Blockchains and Decentralization

Quarter Offered

Winter : MW 2:00-3:20 ; Guo


COMP_SCI 212 or ELEC_ENG 302 or equivalent or graduate standing


ELEC_ENG/COMP_ENG 334 Fundamentals of Blockchains and Decentralization

Course Coordinator: Prof. Dongning Guo

This course is partly an introduction to the fundamentals of blockchains and decentralized
applications and partly a springboard toward deeper understanding and further exploration. The
course explains how blockchains work; teaches the underlying fundamentals of distributed
consensus; touches upon economic and policy issues; and also provides hands-on experience
through computer assignments.

1. COMP_SCI 212 or ELEC_ENG 302 or equivalent or graduate standing.
2. Basic programming skills.

A. Narayanan, J. Bonneau, E. Felten, A. Miller, and S. Goldfeder, Bitcoin and Cryptocurrency
Technologies: A Comprehensive Introduction, Princeton University Press, 2016.
A. M. Antonopoulos, Mastering Bitcoin: Programming the Open Blockchain, 2nd ed., O'Reilly
Media, Inc., 2017.

40% Problem sets. Some of the problems require good understanding of basic probabilities.
30% Midterm project. This project consists of several assignments. An initial assignment will
introduce you to the Rust programming language. You will eventually implement a primitive
Bitcoin client in Rust and test it out internally.
30% Final project. You have a choice between to study some blockchain properties via computer
simulation and to work on a mathematical analysis of some blockchain properties.

1. How Bitcoin works:
Cryptography, blockchain data structures, Nakamoto consensus;
Mathematical model and analysis of blockchain safety and liveness.
2. Scaling blockchain:
Scaling throughput, latency, and storage;
Proof of stake.
3. Other distributed consensus protocols:
Byzantine fault tolerance;
Streamlet, Hotstuff, Algorand.
4. Decentralization technologies:
Smart contracts, decentralized finance.