hyperledger-labs / university-course

A Hyperledger Lab focused developing materials for a university course.
Apache License 2.0
181 stars 81 forks source link

Enterprise Blockchain Technologies

Welcome to Enterprise Blockchain Technologies, a flexible, extensible, open-source course 🎓

This course aims at providing a reliable basis for university students to get started in enterprise blockchain.

This course contains the practical part of a university course on enterprise blockchain technologies. Typically, a university course is divided into theory and laboratory classes. The theory explains the theoretical foundations behind what is learned in the laboratories.

At the end of this course, you will:

✅ Understand the theory on blockchain: what is it (Lab 1, Lab2), and which problems it can solve (Lab 3)

✅ Get to know Hyperledger Fabric's components in detail, such as architecture and transactional model (Lab 4), chaincode (Lab 5), network, and how to develop an enterprise full-stack blockchain decentralized application (Lab 6)

✅ Leverage Hyperledger Umbra to study advanced topics on Fabric (Lab 7, Lab 8)

Course Organization

The course is divided into two modules:

Each laboratory is assumed to take 1.5h, supported by a teaching assistant. All laboratories assume 3h of theory classes. Thus, this course could be organized as a 7.5 ECTS university course.

For example:

For universities using semesters, a course on enterprise technologies uses 2 modules (4.5 weekly hours for \~ 5 months).

This course is flexible because you can pick the laboratories you wish to complete across modules. Currently, this course supports Hyperledger Fabric and Hyperledger Umbra but can be easily extended by adding modules.

Table of Contents

Module Lab Number Topic Contents Support files Public Mirror
I Lab 01 Fundamentals on Distributed Systems ➡️ Introduction to distributed systems

➡️Introduction on state machine replication

➡️Introduction to consensus

➡️RAFT algorithm
Guide

Instructor's Guide
I Lab 02 Fundamentals on Cryptography and Security ➡️Background on Cryptography: symmetric and asymmetric cryptography, and digital signatures

➡️Background on Security: authentication, authorization, accountability

➡️RSA algorithm
RSA implementation Guide

Instructor's Guide
I Lab 03 A Primer on Blockchain ➡️Introduction to blockchain

➡️Public vs private blockchains
Blockchain4Students Guide

Instructor's Guide
I Lab 04 Introduction to Hyperledger Fabric ➡️The Hyperledger Ecosystem

➡️A Technical Viewpoint on Fabric

➡️A Use Case for Education: Blockchain4Students QUC
Guide

Instructor's Guide
II Lab 05 Hyperledger Fabric: Infrastructure and Chaincode ➡️ The B4S QUC System

➡️ Smart Contracts & Chaincode

➡️ Setting up B4S
Blockchain4Students Fabric Version Guide

Instructor's Guide
II Lab 06 Hyperledger Fabric: Full-stack dApp ➡️Blockchain Network

➡️B4S Web App 6 User interface
Blockchain4Students Fabric Version + Blockchain Client Guide

Instructor's Guide
II Lab 07 Hyperledger Umbra: Introduction ➡️Introduction to Hyperledger Umbra
➡️Simple scenario setting
Support Code Guide

Instructor's Guide
II Lab 08 TBD TBD Support Code Guide

Instructor's Guide
MODULE C LAB X CLASS ON Y CONTENTS Z SUPPORT MATERIALS W Guides

Folder organization

docs - contains rendered labs

source - contains the LaTeX sources for the labs and theory classes.

support - contains the support files for the labs.

I want to attend this course

To participate in the course, do the following:

  1. Fork this repository via Github UI.

  2. Clone the repository to your machine: git clone https://github.com/YOUR_USERNAME/university-course

  3. Access the guides (Guide and Instructor's Guide) either by:

    1. Public Mirrors (see the table of contents)
    2. Compile them at Overleaf or using a local LaTeX distribution. Create a .zip for the lab you want to attend. Upload that .zip to Overleaf following these instructions.
    3. Release files (contain compiled PDFs)
  4. Do the lab. In case of doubts, open an issue at the official repository with the label "lab-question." In case of bugs, open an issue with the "bug" label.

  5. The solutions are in the Instructors Guide file, available via step 3.

  6. Share with your colleagues and provide feedback!

I want to teach this course

To teach this course, do the following steps:

  1. Fork this repository via Github UI.

  2. Clone the repository to your machine: git clone https://github.com/YOUR_USERNAME/university-course

  3. Access the guides (Guide and Instructor's Guide):

    1. Using Overleaf. Create a .zip for the lab you want to attend. Upload that .zip to Overleaf following these instructions.
    2. Change the guides as needed (e.g., university logo, course's name, dates, etc.).
    3. Compile and download.
  4. You can also leverage the support files for your students to experiment. In case of doubts, open an issue at the official repository with the label "lab-question". In case of bugs, open an issue with the "bug."

  5. Share with your students and provide feedback!

I want to create my own materials and contribute to this course

This course is not a finished product and needs contributions. Your contributions are very welcome! 🎉🎉

Note that contributions are not only code! There are a lot of tasks to build a successful open-source course for everyone. Generally, look for issues tagged with help-wanted. You can help to improve this project in the following ways:

  1. Extend the course to other enterprise blockchain technologies. This can be done by adding a new Module. Since this course is modular, people, universities, and other learning institutions can build a customized course using various modules. Examples: Corda, Hyperledger Besu, Hyperledger Cactus, Hyperledger Sawtooth, Hyperledger Iroha, Cosmos, Polkadot, DAML.

  2. Visually teach this course (e.g., YouTube tutorials, crash courses, Posters, flyers). You can use these materials for that!

  3. Complete the current laboratories, as some labs are not 100% finalized. Some improvement options are present on the issues page.

  4. Help improve the design of the lab guides.

  5. Maintaining and disseminating this project. Contributions to disseminate and manage this project are welcome. Please contact Rafael Belchior <rafael.belchior (at) tecnico (dot) ulisboa (dot) pt>.

  6. Contribute with technical expertise in the form of small articles, such as this introduction to the Libra Blockchain or this 2020 review on blockchain interoperability. Such articles can be added to a special module, in which students read and discuss them.

  7. Add theory (slides, presentations, small videos) that can be used to complement the labs.

To contribute code, documentation, and others, please check the contributing guide.

List of contributors

A list of university-level blockchain courses:

Focus Course Name University Country
Private Enterprise Blockchain Technologies Técnico Lisboa* Portugal 🇵🇹
Public CS 481A3 BLOCKCHAIN PRINCIPLES AND APPLICATIONS Colorado State University USA 🇺🇸
Public Blockchain-based Systems Engineering Technical University of Munich Germany 🇩🇪
Public Blockchain-based Systems Engineering
BLOCKCHAIN AND CRYPTOCURRENCIES Alma Mater Studiorum - Università di Bologna Italy IT
Web3MOOC: Web3 Foundation’s “Blockchain for Beginners” Web3 Foundation Switzerland
Private Hyperledger Besu Essentials: Creating a Private Blockchain Network LinuxFoundationX USA
Blockchain-based Systems Engineering Technical University of Munich Germany
Blockchain Developer Online Bootcamp 2021 with Certification ConsenSys Academy
PG Diploma in Blockchain Technology MIT, University India
MIPT Blockchain Master’s Program Moscow Institute of Physics and Technology Russia
Solidity, Blockchain, and Smart Contract Course – Beginner to Expert Python Tutorial freeCodeCamp.org
Cryptocourse Slovak University of Technology in Bratislava Slovakia
Cryptocurrency Class 2019 King's College London England
Blockchain Courses
Web3 Courses Web3

Legend:

Focus: Public Blockchains / Private Blockchains / Both

Maintainers

Mainteiner Github Rocket Chat Email
Rafael Belchior rafaelapb rafaelapb rafael.belchior@tecnico.ulisboa.pt

Acknowledgements

This project is part of Hyperledger Labs and Hyperledger Summer Internships.

This project is idealized and greatly supported by: