Welcome to CS1951L - Blockchains and Cryptocurrencies!

This course is an introduction to modern blockchain-based systems. Topics covered include consensus and distributed computing, example cryptocurrencies, programming smart contracts, privacy and secrecy, transfer networks, atomic swaps and transactions, non-currency applications of blockchains, and legal and social implications.

Students will find the course easier if they know GoLang, object oriented programming, concurrency (multi-threaded programming), socket programming, and public/private key cryptography. However, all of this will be covered in the course. If students have the time, they are higly encouraged to preview these topics before the course starts. Please see the resources section.



Course Materials


Gear Ups

Gear ups will be 1-2 hour lectures with a question period going over stencil code for projects, as well as the project handout. Here, you will get the chance to learn exactly what you need to implement, as well as what code you will be relying on.

# Project Date TA


5/19 7pm ET (join colbya on zoom)

Colby Anderson

Course YouTube Channel

You can access our course youtube here. The contents are suplemental with the purpose to help with the projects.



Projects are due at 11:59 p.m. on the day they are marked as In. Note: Start on SimpleCoin early and please attend all labs/sections/gearups to ensure the project is managable. The first project will be the hardest because of the learning curve!

Project Out In
BrunoCoin 5/16 6/5


6/20 7/14
Redwood 7/19 8/5


Homeworks are due at 11:59 p.m. on the day they are marked as In.

Homework Out In

HW 1 - Bitcoin (Lightning Network [Summary] [Paper])

5/13 5/26

HW 2 - Review on BrunoCoin

6/5 6/12
HW 3 7/9 7/17
HW 4 7/30 8/9


# Lecture Date Slides Helpful Resources
1 Intro to Blockchains 5/13/21 Link
2 Intro to Bitcoin 5/18/121 Lecture Bitcoin Whitepaper
3 Bitcoin Mining 5/20/21 Lecture What is Bitcoin Mining?
4 Bitcoin Data Structures 5/25/21 Lecture
5 Ethereum Virtual Machine 5/27/21 Lecture EVM Explained
6 Data Structures in Ethereum 6/1/21 Lecture
7 Intro to Solidity 6/3/21 Lecture
8 Solidity Pitfalls and Hazards Part One 6/8/21 Lecture
9 Solidity Pitfalls and Hazards Part Two 6/10/21 Lecture
10 Solidity Pitfalls and Hazards Part Three 6/15/21 Lecture
11 Solidity Pitfalls and Hazards Part Four 6/17/21 Lecture
12 Concurrency in Smart Contracts 6/22/21 Lecture
13 Atomicity in Blockchain 6/24/21 Lecture
14 Off-Chain Payment Channels 6/29/121/td> Lecture
15 Wallets & Custody 7/1/21 Lecture
16 Privacy and Anonymity 7/6/21 Lecture
17 Privacy and Anonymity 7/8/21 Lecture
18 ZeroCoin 7/13/21 Lecture
19 Byzantine Concensus 7/25/21 Lecture
20 Ethereum Scalability 4/25/19 Lecture

Course Calendar



Maurice Herilhy


Office hours: by appointment

CIT 341


Colby Anderson - cander23 - Sophomore

I love distributed systems for their scalability and for the design component. I love designing something that deals with many edge cases in elegant ways, while being extremely optimized. I also like systems security and computer science's applicability to finance. Besides this, I enjoy calisthenics and rock climbing



Champ Chairattana-Apirom - rchairat - junior


I'm a junior in CS. My main interests are cryptography which is somewhat related to this course topic.


Parker Ljung - pljung - Junior

I’m interested in the blockchain and crypto because people won’t shut up about it. While there’s some truth to that, I’m mostly interested in how blockchain technology might make digital voting a reality. In my free time I like to draw sneakers, play soccer, and stay hyped for Taco Tuesdays.



Steven Long - slong16 - Freshman

Hi! I'm Steven, coming from the great white north: Vancouver, Canada. I'm studying Comp Biology and Classics, but I can be found being bad at shooters, being less bad at strategy games, or wondering why I'm forcing myself to retain a humanities major. I'm super interested in Defi, smart contracts, and anything that's new in the crypto space.



Kotone Ninagawa