Skip to main content Link Search Menu Expand Document (external link)

Syllabus

Table of contents

  1. About
  2. Class Format
  3. Prerequisites
  4. Enrollment
  5. Grading
  6. Gradescope
  7. Policies
  8. Required Readings
  9. Supplemental Readings
  10. Past Class Recordings
  11. RDI Certificate in Decentralization & Web3 Technology Innovations

About

Welcome to Blockchain @ Berkeley’s Blockchain for Developers DeCal for the Fall 2023 semester! This decal is designed to provide students a comprehensive overview of relevant topics in blockchain development, as well as hands-on experience in developing and deploying their own smart contracts & sovereign Cosmos blockchains.

Blockchain is currently one of the fastest-growing industries in the technology sector. In response to this shortage of blockchain developers, this course aims to teach students the technical fundamentals of blockchains, Solidity programming language, Cosmos ecosystem, as well as industry-relevant tools such as Metamask, Wagmi, Foundry, Rust, and Cosmos SDK such that students will be equipped with industry-relevant experience in an accessible, collaborative environment. We hope that through this course, students will become more confident in their ability to develop and deploy blockchain-based solutions on important industry issues.

Class Format

The course will be split into two parts. The first half of the course will provide a quick overview of the blockchain and a deep dive into Ethereum and its smart contracts. In this process, you will learn how to write your own smart contract and dApp frontends using industry-standard developer toolings like Foundry and Wagmi. In the second half of the course, students will be getting an introduction to the Rust programming language.

Each class will be divided into two parts as well. The first hour of each class will be dedicated to a lecture covering the topics planned for that week. We will then switch gears in the second hour of class to focus on more hands-on work with that week’s topics.

Check schedule section to see course structure and lectures.

Prerequisites

On a high level, this course will require some level of understanding of the fundamental Computer Science concepts. Completion of CS 61A (Structure and Interpretation of Computer Programs), CS 61B (Data Structures), and ideally CS 61C (Machine Structures) or relevant programming experience is highly recommended.

The bulk of the course will be focused on teaching Solidity (similar to JavaScript), Rust, and using touches of JavaScript (React) and Python. We do not require any prior experience with any of these languages, but do plan to allocate some extra time to pick it up if you haven’t used a certain programming language before.

As previous experience with programming is a prerequisite for this course, we do expect students to be familiar with developing software already. However, it is likely that many of the tools and concepts introduced in this course are unfamiliar to those new to the blockchain space. If you face any challenges with your dev setup, please do not hesitate to reach out to any of the DeCal staff for help! We are here because we want every student in this course to succeed and/or achieve their personal academic goals for this course. We will do our best on our end to create an environment where students feel comfortable asking for help.

Enrollment

This course is open-enrollment. We request that you honestly assess your level of preparedness for this class. We will not be offering debugging support for basic Python bugs - this is not a class that teaches you how to code!

Note that this course requires a background in programming (whether it be through the Berkeley classes such as CS 61A or equivalent experience - you should know object oriented programming in at least one language). You should also be broadly familiar with blockchain at the level of the Blockchain Fundamentals course - we will be doing a quick recap at the start of the semester but we will not be spending much time on this. If you do not meet these criteria, we may request you to take the class at a later semester.

Grading

This course uses a P/NP grading system and will be primarily based on completion and participation. In order to pass the course, students will need to finish all the homework, complete the final project, and attend all lectures.

Homework: In this course, you will be assigned homework that is based on the content of the previous week’s lecture. Homeworks are fundamental exercises to strengthen and assess your understanding of the lecture’s content. This will mostly be small coding challenges and quiz questions, akin to 61A’s homework. All homework check-offs will be graded on completion due the night before the next lecture.

To pass the class, you must submit all the homework on time except two of your choice (two homework drops).

Homework will be posted weekly on the course GitHub repository: [TBD]

Project: Our goal is to have you leave this class with real projects under your belt that set you up to keep growing after the end of the last lecture. To ensure your success, you will be implementing one project over the course of the entire Ethereum section, with one piece relevant to each lecture and another project over the course of the entire Rust section. During the Ethereum portion, you will build an efficient, secure, and upgradable NFT marketplace with a front-end that supports viewing and trading of NFTs. By the end, you’ll even get to architect your marketplace to integrate with other protocols live on Ethereum to implement a custom feature of your choice. The Rust section will involve building an MEV bot which may be used to trade cryptocurrencies. This is a perfect opportunity for you to put into practice the concepts you learned in lecture into a significant blockchain based application. Don’t be intimidated! Roughly half of each class will be dedicated workshop time to work on that week’s piece of the project. If you have any questions about the project, please contact us, we’d be happy to talk about it. Completion of these projects are mandatory to pass the class.

Gradescope

Entry Code: 6GZW32 Email aayushijain@berkeley.edu with any questions regarding joining the Gradescope course.

Policies

Plagiarism and academic dishonesty are strictly prohibited and are treated with automatic failure of the course. Working collaboratively and discussing ideas are encouraged.

Please do not post your solutions on a public repository on sites such as GitHub or GitLab. Please store them locally or use GitHub’s private repository feature.

If you have any questions, please feel free to contact any course staff.

Required Readings

Required readings will be done in Ad-Hoc style based on what we determine could use additional practice, but will stick to under 1 hour a week.

Supplemental Readings

Working in Web3 Handbook

useWeb3

EthSpring Resources

Introduction to Smart Contracts

Mastering Ethereum, by Andreas M. Antonopoulos, Gavin Wood

Ethereum Whitepaper

In-depth EVM Guide

Cosmos Academy

A Cosmos Thesis

Past Class Recordings

Blockchain Fundamentals Decal - Fall 2021 Video Recording

Blockchain for Developers Decal - Spring 2021 Video Recordings

RDI Certificate in Decentralization & Web3 Technology Innovations

For those interested in learning more about Web3 and Blockchain technologies, see the RDI certificate.