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:
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