The objectives of this course are to understand the characteristics of emerging blockchain abstractions, how they differ in conception and use, and how to apply blockchains to build distributed applications. We refer to these abstractions as "blockchain middleware."
A "middleware system" — middleware for short — constitutes services and (programming) abstractions that facilitate the development of distributed applications and systems in heterogeneous networked environments. The primary objectives of middleware are to increase application reliability, availability, fault-tolerance, scalability, and security. At least conceptually, the "middleware layer" comprises a layer below the application and above the operating system and network substrate.
This course targets research-oriented graduate students who would like to learn more about blockchain middleware. We will discuss the Bitcoin blockchain, the Ethereum blockchain, and the Hyperledger blockchain as well as explore how to build blockchain-based applications. The course will feature invited speakers and student paper presentations. A course project will be a mandatory aspect of the course.