Week Lecture Lab Assignment Readings
0 None
Blockchain For Developers Intro

Video Slides
None None
Blockchain and Ethereum Mechanics

Video Slides
Solidity, A Smart Contract Language

Video Slides
None What Is Geth’s “Fast” Sync?
Block Hashing Algorithm
How Bitcion Works (25 Minutes, Recommended)
How Does Blockchain Work
What Do We Mean By “Blockchains Are Trustless”?
Ethereum Deep Dive

Video Slides
Truffle and Smart Contract Development

Video Slides
Lab02: Solidity In Depth Ethereum Whitepaper
Formalizing and Securing Relationships On Public Networks
How Does Ethereum Work Anyways?
What Is Gas?
Ethereum - Gas, Fuel, Fees Solidity Docs, Style Guide
Explaining How Proof of Stake, Proof of Work, Hashing, and Blockchain Work Together (Optional)
Ethereum 101 (Optional)
Smart Contract Security

Video Slides
Defending Your Distributed Application

Video Slides
Lab03: Defending Your DApp Smart Contract Security Best Practices
Solidity Idiosyncrasies
Does Delete Really Free Up Memory?
Difference Between Memory and Storage Keywords
More On Fallback Functions
When To Use Revert, Assert, and Require
Strings and 2D Arrays
Testing and Tokens

Video Slides
Launching an ICO

Video Slides
Lab04: Midterm ICO Protocol Funding and Tokenomics
Protocol Tokens
Ethereum Token Standards
ERC-20 Anatomy
ERC-223 Token Standard
ERC-721 Anatomy (Optional)
Designing a Stablecoin (Optional)
Web3: Interacting With Ethereum

Video Slides
Building a Multi-Signature Wallet

Video Slides
Lab05: Multi-Signature Wallet Proof of Authority Spec EIP
Web3Js Documentation
Building DApps On Ethereum
Metamask Integration
Logging and Watching Solidity Events
Creating Raw Transactions In Ethereum
Intro to Distributed Systems & Ethereum P2P Networking

Video Slides
Protocol Development

Video Slides
Lab06 Eclipse Attacks vs. Sybil Attacks
Eclipse Flaws in Ethereum
A Brief Tour of FLP Impossibility
Distributed Systems Cheat Sheet
Failure Modes in Distributed Systems
Peer to Peer Protocols Explained
Kademlia Explained
Time, Clocks, and Ordering of Events in Distributed Systems
The Gnutella Protocol (Optional)
State Storage & Mining

Merkle Trees & Patricia Tries

Video Slides
Lab07 The Beige Paper
The Yellow Paper (read after Beige Paper)
Merkle Trees vs. Blockchains vs. Hashgraphs
Ethereum Glossary
Ethereum’s Memory Hardness Explained
Ethash Design Rationale
On Settlement Finality
SPVs and Bloom Filters

Video Slides
Inline Assembly

Lab08 Diving Into The Ethereum VM
Notes on the EVM
Mastering Ethereum: EVM
Scaling Blockchains

Video Slides
Lightning Network

On Scaling Decentralized Blockchains
Making Sense of Ethereum’s Layer 2 Scaling Solutions
Bridges, Plasma, and UTXO Tokens
Plasma Cash (Different than MVP)
Lightning In Depth - State Channels
Lightning In Depth - HTLCs

Intro To zk-SNARKs
zk-SNARKs Under the Hood
zk-SNARKs In a Nutshell
Introduction to zk-SNARKs With Examples
Snarky - OCaml DSL for SNARKs
ZoKrates - zk-SNARKs for Ethereum
ZCash Parameter Generation Ceremony
Interoperability & Cosmos

Video Slides
Making Proofs Easier

Understanding the Value Proposition of Cosmos
Cosmos IBC Specification
Tendermint Light Clients
Hubs in Cosmos
Polkadot Parachains
Peg Zones (Optional)
Cosmos Whitepaper
Why Application Specific Blockchains Make Sense