Fall 2017 Developers Decal


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 Decal which focuses on being comprehensive, interesting, and theoretical and requires no computer science prerequisites. Although Blockchain for Developers and Blockchain Fundamentals can be taken independently, with little overlapping content and co-dependencies, concurrent enrollment is strongly encouraged.


We aim to deliver a holistic experience for different types of blockchain development. The course will emphasize the ins and outs of Ethereum, smart contract security and best practices, integrating with different platforms (IPFS, Oraclize.it, Infura), Bitcoin Script and Lightning Network.

By the end of the course, developers will be well versed in Solidity, from setting up the development environment to writing and deploying smart contracts, the workhorse of blockchain applications. Developers will also gain experience integrating cryptocurrency micropayments into web apps, in addition to being introduced to low-level protocol development.

Units: 2
Day and Time: Fri 11am-12pm
Location: 101 Wurster Hall
Course Staff: Akash Khosla and Nicolas Zoghb
Course Administrator: Rustie Lin
Prerequisites: CS61A is required as a base for understanding concepts in Solidity and Bitcoin script. We also recommend taking Blockchain Fundamentals in parallel or at least going through the first few lectures.
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.
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.

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:

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

9/8Intro to Blockchain and Ethereum Mechanics

(25 minutes, Recommended) How Bitcoin Works
(Optional) Explaining How Proof of Stake, Proof of Work, Hashing and Blockchain Work Together
(Required) Ethereum Whitepaper
(Optional) Ethereum 101 - Easy Intro
Quiz 1
Homework 1
9/15Getting Started with Smart Contracts

What is gas?
Ethereum - Gas, Fuel and Fees
Solidity Docs - Style Guide
Homework 2
9/22Solidity in Depth

Does delete really free up memory?
Difference between memory and storage keywords
More on fallback functions
When to use revert, assert, and require
Ethereum ABI Specification
Strings and 2-D arrays
Homework 2 Due
9/29Smart Contract Security

On Public and Private Blockchains
On Worldwise Consensus
Adventures in Galactic Consensus
Smart Contract Best Practices
(Optional) A provably secure Proof-of-Stake Protocol
Get free money by filling out this form
10/6Tokens and Smart Contract Architecture

Thoughts on Tokens
App-Coins vs Protocol Tokens
Aligning Incentives in ICOs and Token Economies
Crypto Tokens: A Breakthrough in Open Network Design
Action-Driven Architecture
Building an ERC-20 with Truffle
Are ERC-20 Token Names Unique?
The FIve Types Model
(Optional) Scaling Ethereum to Billions of Users
Homework 3
10/13Testing and Web3

How to Test if a TransactionHash is Valid Using Web3
Testing Tool: Ganache
Integration vs. Unit Testing
JavaScript vs. Solidity Testing
10/20Taking Your dApps Online (networks & web3)

Difference between testing and formal verification
Yoichi Hirai's Formal Verification Overview
Oyente, Formal Verification Tool
What is an ABI?
Web3 Documentation
What is a Testnet?
Rinkeby Stats
Deploying Live (not recommended)
Creating a Testnet
10/27Introducting the Web 3.0: IPFS

By Howard Wu


Decentralized Storage: The Backbone of the Third Web
HTTP is Obsolete
An Introduction to IPFS
Understanding the IPFS Whitepaper - Part 1
Understanding the IPFS Whitepaper - Part 2
(Optional) Making IPFS names more readable
(Optional) IPFS vs Swarm
Midterm due on 10/29.
A simple datastore solution using IPFS and Ethereum (Optional, helpful for final)
Urbit Quiz (Due 11/3)
11/3Urbit: Decentralized Operating Function

By Keaton Dunsford

What is Urbit?
Welcome to Urbit
Urbit and the Not-So-Dark-Future of the Internet
Urbit Overview
Urbit Address Space
Urbit Magic
(Optional) Against an Increasingly User-Hostile Web
(Optional) Urbit Docs
(Optional) Hoon Exercises
11/10Ethereum for Enterprise: Quorum

By Joel Burget

11/17Lightning Network and Micropayments

By Max Fang

Final Announced
11/24Thanksgiving Break

By Jae Kwon

Final Due on 12/4