BLOCKCHAIN AND CRYPTOCURRENCIES

Academic Year 2025/2026 - Teacher: MARIO DI RAIMONDO

Expected Learning Outcomes

In terms of expected results, the goals of this course are:

  1. Knowledge and understanding. Students will learn the fundamental ideas and the basic principles underlying Bitcoin and other cryptocurrencies. Students will also get familiarity with the main cryptographic primitives underlying modern cryptocurrencies.
  2. Applying knowledge and understandingStudents will be able to actively use systems based on blockchain such as Bitcoin and Ethereum.
  3. Making judgements. By studying attacks and concrete examples students will be able to understand the security of the presented schemes. Moreover they will learn how to use solutions providing high security guarantees.
  4. Communication Skills. Students will learn how to properly communicate using the technical language of modern cryptocurrencies.
  5. Learning Skills. A goal of this course is to provide a good good theoretical and practical background of modern cryptography. It is expected that students will learn how to autonomously address problems that require the usage of concepts like blockchain, proof of work and smart contracts.

Course Structure

Classes are taught in the classroom with the aid of slides. Slides do not replace reference texts, but rather facilitate understanding of the lesson and provide detailed information on the syllabus.

If the course is taught in a blended or distance learning format, any necessary changes to the previously stated curriculum may be made in order to comply with the planned program outlined in the syllabus.

Required Prerequisites

This course assumes familiarity with programming. A basic background in cryptography is recommended.

Attendance of Lessons

Attendance at class is not mandatory but is strongly recommended.

Detailed Course Content

Over the past ten years, Bitcoin and Ethereum have become systems worth tens (if not hundreds) of billions of dollars. Furthermore, the potential of so-called decentralized ledgers (blockchains) has attracted the interest of researchers and developers in fields ranging from finance to electronic voting, corporate governance, and online gaming. The course aims to study the fundamental concepts underlying these systems: append-only ledgers, decentralized consensus, smart contracts, and zero-knowledge proof systems. Students will familiarize themselves with the Bitcoin system through a hands-on approach that includes, among other things, in-depth study of Bitcoin and, especially, Ethereum programming. Finally, part of the course will feature presentations by experts working at companies directly or indirectly connected to the cryptocurrency world.

Textbook Information

Main Book

[1] Arvind Narayanan, Joseph Bonneau, Edward Felten, Andrew Miller, Steven Goldfeder

Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction

(Author's preprint edition is available free of charge at: https://bitcoinbook.cs.princeton.edu/)

Other recommended readings:

[2] Bitcoin Developer Reference https://bitcoin.org/en/developer-reference

[3] Ethereum “white” paper: https://github.com/ethereum/wiki/wiki/White-Paper

[4] Ethereum “yellow” paper: http://gavwood.com/paper.pdf

[5] Zerocoin: Anonymous Distributed e-cash from Bitcoin.

[6] Zerocash: Decentralized Anonymous Payments from Bitcoin

[7] Algorand: Scaling Byzantine Agreements for Cryptocurrencies

[8] Guida "Solidity": https://solidity.readthedocs.io

Course Planning

 SubjectsText References
1Introduction to Cryptography and CryptocurrenciesChap. 1 in [1] 
2How Bitcoin achieves decentralization.Chap 2 in [1] 
3Bitcoin MechanicsChap. 3 in [1], more details in [2] 
4How to store and manage BitcoinsChap. 4 in [1] 
5Privacy and Anonymity for CryptocurrenciesChap. 6 in [1], more details in [5] and [6]
6Other aspects of Bitcoin: community, politics, controversies, and extensionsChaps. 7 and 9 in [1] 
7Ethereum and Smart contract applications & securityChap. 10 in [1], slides and more details in [3] and [4] 
8Alternative approaches to mining and consensusChap. 8, slides and more details in [7] 
9Ethereum lab. Smart contracts, the Ethereum Virtual Machine (EVM), and an introduction to writing smart contracts using the Solidity language.[8] 

Learning Assessment

Learning Assessment Procedures

The exam consists of a laboratory test followed by an oral exam.

Ongoing tests: There is the option to take one or more ongoing tests on the theoretical content of the course.

Assessment may also be conducted online, if conditions require.

The grade, combined with the laboratory module, is assigned according to the following scheme:

  • Failed: The student has not mastered the basic concepts and is unable to answer at least 60% of the questions or complete the theoretical and practical exercises.
  • 18-20: The student demonstrates a barely adequate mastery of the basic concepts and/or is able to construct the theoretical/practical exercises with great difficulty and numerous errors.
  • 21-24: The student demonstrates minimal mastery of the basic concepts, his/her ability to connect the content is modest, and he/she is able to solve simple exercises.
  • 25-27: The student demonstrates a good command of the course content, good connection skills, and completes the exercises with few errors.
  • 28-30 cum laude: The student has mastered all the course content and is able to fully master it and connect it critically; he or she completes the exercises completely and without significant errors.

Students with disabilities and/or learning disabilities (LD) must contact the instructor, the DMI CInAP representative, and CInAP well in advance of the exam date to communicate their intention to take the exam with appropriate compensatory measures.

To take the final exam, you must have booked on the SmartEdu portal. For any technical issues regarding the booking, please contact the Academic Secretariat.

Examples of frequently asked questions and / or exercises

Illustrate the functioning of hash pointers and some related data structures (such as blockchains or Merkle Trees).

Exercises on the cryptographic tools and primitives introduced (e.g., demonstrating that a given protocol is not zero-knowledge).

Examples of Solidity smart contracts will be discussed in class. All previous lab assignments will be made available.
VERSIONE IN ITALIANO