Interested in enrolling?

We are currently making updates to this course. However, if you are interested in signing up, send us an email and we will work with you to figure out the best timeline for getting registered for this course.

Course curriculum

  • 1

    Introduction

    • Welcome!

    • About You

    • Promotional Material Opt-in

    • How to be successful in this course

  • 2

    Tools for the Course

    • Slack

    • GitHub

    • Visual Studio Code (Optional)

    • Oracle VM VirtualBox (Optional)

    • External Resources

    • Request for Lessons

  • 3

    Module 1: Review of Blockchain Technology

    • Welcome to Module 1: Review of Blockchain Technology

    • Module 1 Pre-Assessment (Not Graded)

    • Contextualizing Blockchain

    • 1.1 Distributed Ledgers

    • 1.2 Consensus Mechanisms

    • 1.3 Mining in Ethereum

    • 1.4 Public and Private Blockchains

    • 1.5 Distributed Ledger Platforms

    • Module 1 Test

    • Module 1 Recap

  • 4

    Module 2: Blockchain Primitives

    • Welcome to Module 2: Blockchain Primitives

    • Module 2 Pre-Assessment (Not Graded)

    • 2.1 Cryptographic Hash Functions

    • 2.1.1 Playing with Cryptographic Hash Functions

    • 2.2 Public Key Cryptography

    • 2.3 Merkle Trees

    • 2.3.1 Playing with Merkle Trees

    • 2.4 Blockchain Structure

    • 2.4.1 Building a Blockchain

    • 2.5 Smart Contracts

    • 2.5.1 Smart Contracts

    • 2.6 Nodes

    • 2.7 Blockchain Forks

    • Module 2 Test

  • 5

    Module 3: Ethereum Basics

    • Welcome to Module 3: Ethereum Basics

    • Module 3 Pre-Assessment (Not Graded)

    • 3.1 Accounts

    • 3.2 Transactions

    • 3.3 Gas and Fees

    • 3.4 Ethereum Structure

    • 3.5 Externally Owned Accounts and Ethereum Transactions

    • 3.6 Generating Ethereum Addresses

    • Module 3 Test

    • Module 3 Recap

    • Module 3 Feedback

  • 6

    Module 4: Traditional and Decentralized Application Development

    • Welcome to Module 4: Traditional and Decentralized Application Development

    • Module 4 Pre-Assessment

    • 4.1 Decentralized Application Development

    • 4.2 Similarities and Differences

    • 4.3 Development Environment Setup Options

    • 4.4 Key Developer Tools

    • 4.5 Installing and Using Geth

    • 4.6 Connecting to a testnet

    • 4.7 Geth PoA Private Network Tutorial

    • Module 4 Test

    • Module 4 Recap

  • 7

    Module 5: Development Frameworks and Environment

    • Welcome to Module 5: Development Frameworks and Environment

    • Module 5 Pre-Assessment

    • Introducing Metamask

    • Interview with Dan Finlay from Metamask

    • 5.1 Development Workflow: A Low Level Overview

    • 5.2 Development Workflow: Ganache CLI

    • 5.3 The Truffle Development Environment

    • 5.4 Installing Truffle

    • 5.5 The Structure of a Truffle Project

    • 5.6 The Ethereum Package Manager (Optional / Informational)

    • Ganache GUI

    • Module 5 Recap

    • Module 5 Feedback

  • 8

    Module 6: Solidity Fundamentals

    • Welcome to Module 6: Solidity Fundamentals

    • Module 6 Pre-Assessment

    • 6.1 Data Types and Variables

    • 6.2 Functions

    • 6.3 Storage and Memory

    • 6.4 Contract Structure

    • 6.5 Reading Smart Contracts with Remix

    • 6.6 Smart Contract ABI

    • 6.7 Events and Logs

    • 6.8 Factory Contracts

    • Module 6 Test

    • Module 6 Recap

  • 9

    Module 7: Writing Smart Contracts

    • In Module 7

    • Module 7 Pre-Assessment

    • 7.1 Introductory Smart Contracts

    • 7.2 Inter-Contract Execution

    • 7.3 Inheritance

    • 7.4 Libraries and the Ethereum Package Manager

    • 7.5 Smart Contract System Design

    • 7.6 Writing a Smart Contract (Proof of Existence Exercise)

    • 7.7 Deeper into Smart Contracts (Multi-Signature Wallet Exercise)

    • 7.8 Debugging Truffle Tests

    • 7.8.1 More On Writing Tests in Solidity

    • 7.9 Practice Writing Smart Contracts

    • 7.10 Check Your Work

    • Module 7 Test

  • 10

    Module 8: Ethereum and the End User

    • Module 8

    • Module 8 Pre-Assessment

    • 8.1 Introduction to Web 3.0

    • 8.1.1 Using the Web3.js JavaScript Library

    • 8.1.2 Connecting Web3.js to a Contract

    • 8.2 Building Truffle for the Web

    • 8.2.1 Updates to Metamask

    • 8.3 Integrating with React

    • 8.3.1 Rimble UI

    • Module 8 Test

    • Module 8 Recap

  • 11

    Module 9: Smart Contracts Pitfalls, Testing and Debugging

    • In Module 9

    • Module 9 Pre-Assessment

    • 9.1 Writing Tests

    • 9.1.1 Catching Solidity Errors in Truffle Tests

    • 9.2 Smart Contract Best Practices

    • 9.3 Exploits and Dangers

    • 9.4 Optimizing Gas

    • 9.5 Safety Checklist

    • 9.6 Security Analysis Tools

    • 9.7 Attack Demos

    • 9.7.1 Denial of Service Attack Example

    • 9.7.2 Reentrancy Attack Example

    • 9.7.3 Integer Over/Underflow Example

    • Module 9 Test

    • Module 9 Recap

    • Feedback up to Module 9

  • 12

    Module 10: Advanced Topics

    • Module 10

    • 10.1 Smart Contract Design Patterns

    • 10.2 The Ethereum Name Service

    • 10.3 Introduction to IPFS

    • 10.4 Upgradable Contracts

    • 10.5 Oracles with Rhombus

    • 10.5.1 Rhombus Network

    • 10.5.2 Rhombus Network Tutorial

    • 10.6 Formal Verification

    • 10.7 What are Zero-Knowledge Proofs?

    • Module 10 Recap

  • 13

    Module 11: Additional Topics

    • Module 11

    • 11.1 Introduction to Vyper

    • 11.1.1 Writing Ethereum Smart Contracts in Vyper

    • 11.2 Ethereum Improvement Proposals (EIPs)