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.
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.
ScheduleBold indicates announcements of large midterm/final projects
- (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
- Homework 2 Due
- 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
Taking Your dApps Online (networks & web3)[LEC, PPT]
- Midterm due on 10/29.
- A simple datastore solution using IPFS and Ethereum (Optional, helpful for final)
- Urbit Quiz (Due 11/3)
Lightning Network and Micropayments
By Max Fang[LEC, PPT]
By Jae Kwon[LEC, PPT]