EECE 571G

Blockchain Software Engineering

Version: 0.3

Developer:

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

Course Level:

Graduate course

Background Assumption

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

Textbook

No textbook required, lecture notes will be provided

Course Outline:

  1. Introduction to Software Engineering and Blockchain Review (Week 1)
    1. Brief Review of Blockchain Essentials 
    1. Introduction of Software Engineering
    1. Blockchain as a Platform
    1. Technical Stack of Decentralized Application
    1. 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 to Truffle for Solidity Programming
    • Create and Deploy ERC-721 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 
  1. Smart Contract Operation in CLI (Week 10)
    1. Introduction to ABI
    1. Introduction to Web3 Library
    1. Communication between UI and Blockchain
    1. Using ABI to Control Smart Contract
  1. Smart Contract Operation in Java (Week 11)
    1. Java Wrapper Class
    1. Introduction to Web3 Library
    1. Communication between UI and Blockchain
    1. Using ABI to Control Smart Contract
  1.  Frontend Development (Week 12)
    1. Frontend UI based on Webpage
    1. Integration with MetaMask
    1. Integration with Hardware Wallet
  1. Scalability (Week 13)
    1. Introduction to Payment Channel Technology
    1. Create the Payment Channel Smart Contract
    1. From Payment Channel to State Channel
  1. Project Presentation (Week 14)

Course Deliverables:

TaskTime to ReleaseTime to DueWeight
Assignment 1Week 4 Week 5 10%
MidtermWeek 8Week 820%
Assignment 2Week 11Week 1220%
ProjectWeek 6Week 1450%