EECE 571G

Blockchain Software Engineering

3 credits

Background Assumption

Students are expected to know at least one object-oriented programming language (e.g. Java, C++, C#, Object C), data structure, HTML, and JavaScript

Course Outline:

  • Introduction to Software Engineering and Blockchain Review (Week 1)
    • Brief Review of Blockchain Essentials
    • Introduction of Software Engineering
    • Blockchain as a Platform
    • Technical Stack of Decentralized Application
    • Introduction to Existing Blockchains
  • Introduction to Blockchain Software Engineering (Week 2)
    • Comparison of Blockchain Platforms
    • Scalability of Blockchain
    • Smart Contract Introduction
    • User Interface Introduction
    • Unit and Integration Testing
    • Agile or Waterfall Methodology
  • Creating Smart Contract (Week 3)
    • Solidity Programming – I
    • Create Your First Smart Contract
  • Deploying Smart Contract (Week 4)
    • Private Blockchain on Local Computer
    • Smart Contract Deployment
  • ERC20 Token (Week 5)
    • Solidity Programming – II
    • Create Your ERC20 Token
    • Using Testnet and Infura Service
  • Solidity Open Libraries (Week 6)
    • The Security Issue in Smart Contract
    • Solidity Programming – III
    • The Openzeppelin Library
    • Smart Contract Update and Migration
  • Engineering Tools for Smart Contract Development (Week 7)
    • Introduction of Truffle for Solidity Programming
    • Create and Deploy ERC721 Token with Truffle
    • Introduction to CryptoKitties and Cryptozombies
  • Midterm Exam (Week 8)
  • Testing (Week 9)
    • Introduction to Unit Test
    • Unit Testing in Truffle Suite
    • CI Pipeline for Project Management
  • Smart Contract Operation in CLI (Week 10)
    • Introduction to ABI
    • Introduction to Web3 Library
    • Communication between UI and Blockchain
    • Using ABI to Control Smart Contract
  • Smart Contract Operation in Java (Week 11)
    • Java Wrapper Class
    • Introduction to Web3 Library
    • Communication between UI and Blockchain
    • Using ABI to Control Smart Contract
  • Frontend Development (Week 12)
    • Frontend UI based on Webpage
    • Integration with MetaMask
    • Integration with Hardware Wallet
  • Scalability (Week 13)
    • Introduction to Payment Channel Technology
    • Create the Payment Channel Smart Contract
    • From Payment Channel to State Channel
  • Project Presentation (Week 14)

Course Deliverables:

Task

Time to Release

Time to Due

Weight

Assignment 1

Week 4

Week 5

10%

Midterm

Week 8

Week 8

20%

Assignment 2

Week 11

Week 12

20%

Project

Week 6

Week 14

50%

Textbook

No textbook required, lecture notes will be provided

Developer

Dr. Zehua Wang, Dr. Chen Feng, Dr. Sasha Federova, Dr. Victoria Lemieux

More Information

UBC Course Page