Blockchain Software Engineering

More Information

UBC Calendar

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:

1. Introduction to Software Engineering and Blockchain Review (Week 1)

a. Brief Review of Blockchain Essentials

b. Introduction of Software Engineering

c. Blockchain as a Platform

d. Technical Stack of Decentralized Application

e. Introduction to Existing Blockchains

2. Introduction to Blockchain Software Engineering (Week 2)

a. Comparison of Blockchain Platforms

b. Scalability of Blockchain

c. Smart Contract Introduction

d. User Interface Introduction

e. Unit and Integration Testing

f. Agile or Waterfall Methodology

3. Creating Smart Contract (Week 3)

a. Solidity Programming - I

b. Create Your First Smart Contract

4. Deploying Smart Contract (Week 4)

a. Private Blockchain on Local Computer

b. Smart Contract Deployment

5. ERC20 Token (Week 5)

a. Solidity Programming - II

b. Create Your ERC20 Token

c. Using Testnet and Infura Service

6. Solidity Open Libraries (Week 6)

a. The Security Issue in Smart Contract

b. Solidity Programming - III

c. The Openzeppelin Library

d. Smart Contract Update and Migration

7. Engineering Tools for Smart Contract Development (Week 7)

a. Introduction of Truffle for Solidity Programming

b. Create and Deploy ERC721 Token with Truffle

c. Introduction to CryptoKitties and Cryptozombies

8. Midterm Exam (Week 8)

9. Testing (Week 9)

a. Introduction to Unit Test

b. Unit Testing in Truffle Suite

c. CI Pipeline for Project Management

10. Smart Contract Operation in CLI (Week 10)

a. Introduction to ABI

b. Introduction to Web3 Library

c. Communication between UI and Blockchain

d. Using ABI to Control Smart Contract

11. Smart Contract Operation in Java (Week 11)

a. Java Wrapper Class

b. Introduction to Web3 Library

c. Communication between UI and Blockchain

d. Using ABI to Control Smart Contract

12. Frontend Development (Week 12)

a. Frontend UI based on Webpage

b. Integration with MetaMask

c. Integration with Hardware Wallet

13. Scalability (Week 13)

a. Introduction to Payment Channel Technology

b. Create the Payment Channel Smart Contract

c. From Payment Channel to State Channel

14. Project Presentation (Week 14)

Course Deliverables:


Time to Release

Time to Due


Assignment 1

Week 4

Week 5



Week 8

Week 8


Assignment 2

Week 11

Week 12



Week 6

Week 14



No textbook required, lecture notes will be provided


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

a place of mind, The University of British Columbia

Electrical and Computer Engineering
2332 Main Mall
Vancouver, BC Canada V6T 1Z4
Tel +1.604.822.2872
Fax +1.604.822.5949

Emergency Procedures | Accessibility | Contact UBC | © Copyright 2021 The University of British Columbia