Instructor: Michele Marchesi – email@example.com
Description: This reading course is focused on one of the most promising fields where Software Engineering should be applied: Blockchain applications. Blockchain technologies and cryptocurrencies, such as Bitcoin, Litecoin, and Ethereum, have attracted significant attention in recent years. The Blockchain is a decentralized ledger, shared with a peer-to-peer mechanism with no central authority, which can hold any information and can set rules on how this information is updated. The addition of new information (transactions) to the Blockchain is made by the nodes of a network through various possible consensus mechanisms. The Blockchain is a new software technology that can rely on open architectures, service oriented architectures and software-as-a-service, business models, cloud computing, global development, software applications for mobile devices.
The spreading of Blockchain oriented software products and projects definitely raises the need for the application of software engineering principles and practices specific for such software technology, and for the technologies relying on it .
In this course we study some aspects of Blockchain software development, and specifically the features of the software enabling main Blockchain implementations, Smart Contract development, and Blockchain applications in the field of trust management. We will also cover some economic aspects of cryptocurrency markets and mining, and the new phenomenon of ICOs (Initial Currency Offers), where new initiatives – mainly on Blockchain technology and applications – are crow-funded through Smart Contracts and existing blockchains. ICOs have exploded in 2017, gathering capitals of the order of $2 billion.
Prerequisites: Basic concepts of software engineering. Good knowledge of Java or, preferably, Python language. Good knowledge of the English language.
Contents: Introduction to Blockchain technology. The main Blockchain implementations: Bitcoin Core, Ethereum, Hyperledger Fabric. Blockchain-Oriented Software Engineering. Blockchain applications with focus on notarization, supply-chain management and certification, banking applications, ICOs (Initial Coin Offers). The business model of cryptocurrencies and ICOs.
Evaluation: Project Work based on autonomous reading and researching under the direction of the instructor. The students will present, in a public seminar of approximately 45 minutes, their Project Works.
Reference material: The teacher will guide each student through the scientific literature and to the technical material on Blockchain implementations, proposing a selection of papers and reports which are most appropriate to the student’s interests and Project Work. A preliminary list of reference material is the following:
- Arvind Narayanan, Joseph Bonneau, Edward Felten, Andrew Miller & Steven Goldfeder. Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction. Princeton University Press (2016).
- Melanie Swan. Blockchain: Blueprint for a New Economy. O’Reilly, 2015.
- Simone Porru, Andrea Pinna, Michele Marchesi, Roberto Tonelli. Blockchain-oriented software engineering: challenges and new directions. Proc. of the 39th Int. Conf. on Software Engineering Companion. IEEE Press, 2017.