Courses

Spring 2018 Developers Decal

About

Blockchain is a transformative technology with massive potential, and despite the huge demand from nearly all types of companies, there is a distinct shortage of developers – see this article about how blockchain developers are being offered salaries of 250k. Blockchain at Berkeley offers this course with the aim of fulfilling this demand and giving students with minimal blockchain knowledge a chance to prepare themselves for the industry.

This course is offered concurrently with Blockchain Fundamentals, another Blockchain at Berkeley course offering which focuses on being comprehensive and theoretical and requires no computer science prerequisites. Although this course and Blockchain Fundamentals can be taken independently, with little overlapping content and co-dependencies, concurrent enrollment is strongly encouraged.

If you’re interested in working together in some way, please reach out to Akash on twitter or send an email to him. We strive to be mostly platform agnostic, but academically interesting projects are welcome to contribute. We also do speaking engagements for those interested in special topics or a tailored workshop.

Goal

We aim to deliver a holistic experience for different types of blockchain development. The course will emphasize the ins and outs of Bitcoin and Ethereum from a developer perspective along with smart contract security and best practices. Our spring 2018 offering focused mostly on Ethereum, but we have plans to offer more Bitcoin related material in order to provide a proper survey of engineering in the Blockchain space.

Logistics

Units: 2
Day and Times:
Location: HP Auditorium
Instructors: Akash Khosla, Nicolas Zoghb
Teaching Assistants: Luke Strgar, Nataliya Urakhchina, Nicholas Truong, Gary Li
Prerequisites: CS61A minimum, CS61B recommended, Fundamental CS Concepts needed
Class Format: This course is primarily taught through hands-on homework and projects, with occasional readings. There will be one class of one hour per week with supplemental office hours. Lectures will be used to introduce the topics at hand. Students will be expected to put in 6-12 hours a week on coursework, which accounts for in-class time and office hours.
Communication: All of the necessary communication for this course will be done through email. Weekly homework assignments will be distributed after class, along with the lecture slides. We will also have an optional Facebook group to allow for further questions and discussion.
Class Entry Policy: After applying, the facilitators will update you with your enrollment status (accepted or waitlist) as soon as it changes. Entering our class is dependent on obtaining a course entry code. If you are accepted, we will email you your code and you must enroll in the class within three days or the code will be considered invalid. We will also be enforcing a mandatory attendance policy for the first two classes—you will be dropped if you miss either of these two classes. Additionally, because the first two weeks of lecture are instrumental in building a concrete understanding of cryptocurrency, waitlisted students that have attended the first two weeks of classes will be strongly preferred.

Grading

Policy: P/NP. You must get at least a 70% to pass the class. Grading will be based on Homework and Projects (40%), Attendance (15%), a Final Deliverable (30%) and Participation (15%). If you have any questions regarding our grading, feel free to bring it up in class.

Homework & Projects (40%): There will be homeworks and projects dispersed throughout the course. These are intended to help get you familiar with all kinds of blockchain development. Homework will be released following class and will be due the following week at the start of class. There will be two projects during the span of this course and will be completed in groups of 4-5 people. Homework will be graded on completion and projects on a grading rubric.
Homework: Each homework will be in the form of a programming assignment. These will be weekly assignments.
Projects: Projects will be in the form of deliverables, encompassing the material covered in the recent lectures.

Attendance (15%): We will take attendance at the beginning of every class. You are allowed to miss one lecture without having it affect your grade. If you are expecting an academic conflict such as a midterm, please let your facilitator know at least 24 hours in advance, and we will work out an alternative assignment with you. Other emergencies can be excused if instructors are informed far enough in advance. Having 3 unexcused absences will result in automatic failure of the course (10% deducted from overall score per absence).

Final Deliverable (30%): All students will be required to present a final deliverable (10 minutes) on a topic related to Ethereum. This deliverable should incorporate concepts learned in class. All topics must be pre-approved at least 2 weeks before the presentation date.

Participation (15%): In blockchain development, you can only learn by doing. At the end of the semester, we will conduct comprehensive peer reviews, and a large part of your grade will be based off of that.

Resources

Textbooks: You are free to read from these books, which are both freely distributed and available online. Please do NOT go out and buy them. Some readings may be pulled from these books during the course.

Bitcoin and Cryptocurrency Technologies (Princeton textbook) by Arvind Narayanan, Joseph Bonneau, Edward Felten, Andrew Miller, and Steven Goldfeder:
https://d28rh4a8wq0iu5.cloudfront.net/bitcointech/readings/princeton_bitcoin_book.pdf

(Optional/Additional) Mastering Bitcoin by Andreas Antonopoulos:
PDF: https://drive.google.com/file/d/0B8lgcDXI8hEfbXFYcTh6aXNqRkk/view?usp=sharing
Source: https://github.com/bitcoinbook/bitcoinbook

WeekLectureLabAssignmentReadings
0NoneBlockchain For Developers Intro

Video Slides
NoneNone
1Blockchain and Ethereum Mechanics

Video Slides
Solidity, A Smart Contract Language

Video Slides
NoneWhat 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”?
2Ethereum Deep Dive

Video Slides
Truffle and Smart Contract Development

Video Slides
Lab02: Solidity In DepthEthereum 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)
3Smart Contract Security

Video Slides
Defending Your Distributed Application

Video Slides
Lab03: Defending Your DAppSmart 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
4Testing and Tokens

Video Slides
Launching an ICO

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

Video Slides
Building a Multi-Signature Wallet

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

Video Slides
Protocol Development

Video Slides
Lab06Eclipse 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)
7State Storage & Mining

Slides
Merkle Trees & Patricia Tries

Video Slides
Lab07The 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
8The EVM

Video Slides
Inline Assembly

Slides
Lab08Diving Into The Ethereum VM
Notes on the EVM
Mastering Ethereum: EVM
9Scaling Blockchains

Video Slides
Lightning Network

Slides
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
10zk-SNARKs

Slides
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
11Interoperability & Cosmos

Video Slides
Making Proofs Easier
Video
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