For the Winter 2016 edition of the class, please see here.
Autumn 2015
The course is a 1-unit lab component of cs251.
The class meets for one hour on Monday at 4:30pm in Gates 505.
Lab projects will be done in class and no other work will be
assigned. The course is C/NC.
Background
Bitcoin sits at the intersection of cryptography, finance, distributed computing, game theory, semiconductors, and more fields besides. Created by a pseudonymous engineer, Bitcoin solved an unsolved problem in computer science - the Byzantine Generals problem - and thereby enabled decentralization of a large class of problems previously thought to require centralized architectures. The technology has attracted close to a billion dollars in venture capital, has given birth to hundreds of startups and millions of lines of newspaper copy, and has been a topic of discussion for virtually every government in the world. It is thus both a theoretical breakthrough in computer science and an inherently applied subject.
While CS251 will give you a strong grounding in the technology underlying Bitcoin, in this complementary course (CS251P) we will tackle the applied side of Bitcoin with a focus on practical projects. Specifically, we will go through a series of Bitcoin-based labs, each of which is focused on a single practical problem that you'd encounter while trying to use Bitcoin. Over the course of going through these labs, you'll learn how to use Bitcoin mining chips in conjunction with Bitcoin-based software to build micropayments-based applications that work with any internet-connected device. By the end of this class, you will have gained the practical knowledge required to build fairly sophisticated hardware and software applications that require intimate knowledge of the Bitcoin protocol.
Schedule
Date | Lab | Questions |
---|---|---|
Sep. 21 | No Lab: Brief Introduction in CS251 | Application form |
Sep. 28 | Lab 0: Overview Lecture (Syllabus and State of Bitcoin - 2015) | - |
Oct. 5 | Lab 1: Hashes, Signatures, Hashcash, and Bitcoind. | Lab 1 - Questions |
Oct. 12 | Lab 2: Merkle Trees, Mining, and the Genesis Block. | Lab 2 - Questions |
Oct. 19 | Lab 3: ASIC Mining, Bitcoin Consensus, and Hard Forks. | Lab 3 - Questions |
Oct. 26 | Lab 4: Parsing Bitcoin Data Structures. | Lab 4 - Questions |
Nov. 2 | Lab 5: Script, Opcodes, and Blockchain Data. | Lab 5 - Questions |
Nov. 9 | Lab 6: Create a Bitcoin-payable server to sell digital goods. | Lab 6 - Optional Demo Signup |
Nov. 16 | Lab 7: Create a digital supply chain. | Lab 7 - Feedback |
Nov. 23 | Thanksgiving | |
Nov. 30 | Lab 8: The 21 Bitcoin Library | Lab 8 - Feedback |
Dec. 7 | Finals week (CS251 final; no final for CS251P) |