The course aims at providing a mix of foundations and advanced knowledge in the field of distributed computing specifically targeting peer to peer applications. The course provides both theoretical knowledge and applications to real scenarios.
The main three topics of the course regard Distributed Hash Table, Complex Network Analysis and Blockchain technologies
Students are expected to acquire the knowledge of the most important P2P protocols and applications techniques and methodologies for the definition of distributed systems large network modelling.The whole set of arguments will be complemented by assignments which can be executed ay home. The correct and timely production of assignment solutions substitutes the oral exam.
Delivery: face to face, with the support of computer based tools (software blackboard, audio/video of lessons available through web)
Learning activities:
Attendance: Not mandatory
Teaching methods:
Learning activities:
Attendance: Not mandatory
Teaching methods:
The student will eventually be able to design, develop and tune distributed applications using peer-to-peer simulator or practical programming frameworks.
Mid and final term exercises are assigned during the course and part of the exam consist in the preparation of a small project, to be designed, developed and tested throgh the tools presented in the cours
JAVA programming
Network programming frameworks
Basic mathematica skills
No corequisite.
Delivery: face to face
Learning activities:
Attendance: Advised
Teaching methods:
P2P Topologies
- Peer to Peer (P2P) systems: general concepts
- Unstructured Overlays: Flooding, Random Walks, Epidemic Diusion
- Structured Overlays: Distributed Hash Tables (DHT), Routing on a DHT
-Case Studies:
Bittorrent as a Content Distribution Network: KAD implementation of
the Kademlia DHT, game-based cooperation
Complex Network for the analysis of P2P systems
- Network models
- Random Graphs and Small Worlds
- Small World navigability: Watts Strogatz and Kleinberg.
- Complex networks navigability
Cryptocurrencies and Blockchains
Basic concepts:
- review of basic cryptographic tools (digital signatures, cryptographic hash,
Merkle trees.,..)
- blockchains: denitions
- distributed consensus: denitions
- the Bitcoin blockchains
- Nakamoto consensus
- Bitcoin mining mechanism
- pseudoanonymity: traceability and mixing
- the Bitcoin P2P Network
- The Bitcoin ecosystem
- scalability issues
- Bitcoin Extensions/alternatives: altcoins, sidechains, the StellarConsensus Protocol
- Applications of blockchains
- Ethereum: programming smart contracts
- Blockchain 1.0: cryptocurrencies
- Blockchain 2.0: nancial instruments built on cryptocurrencies
- Blockchain 3.0: applications beyond cryptocurrencies (DNS, lotteries, voting, IoT...)
The course introduces the methodologies and techniques for the development of peer to peer systems. The course presents both the basic technologies and a set of formal tools for these systems. Some concrete examples will be shown, for instance the e-Mule, Spotify, BitTorrent P2P applications. Some lessons will be devoted to the use of P2P technologies in cloud environments, with special reference to highly scalable data storage (e.g.: Dynamo, Cassandra). The final part of the course presents a set of highly scalable simulators for P2P systems. It is possible to implement a didactic project requiring the development of a set of simulations. Every year a set of project proposals will be presented, but the student may also present an original propose which must be approved by the teacher. Alternatively, the student may choose a written examination.
Slides of the course
Tutorials and papers available on the web.
Recommended reading includes:
All the taching material is published on the age of the course
(wrtten exam OR project) + oral test
if the student pass both mid and final term the oral proof, he/she is exempted from the oral examination