Workshops & Tutorials


  1. Workshop on Advanced Tools, Programming Languages, and Platforms for Implementing and Evaluating Algorithms for Distributed Systems (ApPLIED)
    Date/Time: Friday, July 30 at 15:00 – 19:20 CEST
    Organizers: Chryssis Georgiou, Y. Annie Liu, Miguel Matos, and Elad Schiller

  2. Biological Distributed Algorithms (BDA)
    Dates/Times: Thursday, July 29 at 19:00 – 21:00 CEST, and, Friday, July 30 at 17:00 – 19:00 CEST
    Organizers: Yuval Emek and Saket Navlakha

  3. Distributed Algorithms on Realistic Network Models (DARe)
    Date/Time: Friday, July 30 at 13:00 – 21:00 CEST
    Organizers: Saeed Akhoondian Amiri, Laurent Feuilloley, Sebastian Siebertz, and Alexandre Vigny


  1. Byzantine Agreement and Leader Election: From Classical to the Modern
    by John Augustine, Anisur Rahaman Molla, and Gopal Pandurangan
    Date/Time: Friday, July 30 at 15:00 – 18:00 CEST
    We will present the fundamentals of Byzantine agreement and leader election problems from a modern perspective. Byzantine fault tolerant protocols are at the heart of  secure and robust protocols that can tolerate the presence of malicious nodes in a distributed system, such as a Peer-to-Peer (P2P) network,  which allows a large number of peers  to enter the network with little or no admission control. Such malicious peers acting alone or in collaboration can cause disruption of service in P2P systems.

    Our tutorial is largely inspired by recent P2P applications like Blockchain and cryptocurrencies that espouse permissionless settings whereby peers  can anonymously and dynamically join and leave the network at will.  Our presentation will be in three parts. In the first part, we will present the historic foundations of Byzantine agreement and leader election and describe the fundamentals that underlie our modern understanding of these problems. Much of the classical results focus on complete networks where nodes have global knowledge. In the second part, motivated by real-world distributed networks such as P2P networks which are typically sparse and bounded degree with nodes having only local knowledge, we focus on  Byzantine protocols for sparse networks. While the first two parts will focus on static settings, motivated by modern applications such as blockchains and cryptocurrencies which operate on dynamic P2P networks, the third part will delve  into Byzantine procotols for dynamic networks where nodes  continuously join and leave the system.   

    The tutorial will cover various tools and techniques that are useful in designing Byzantine protocols in sparse and dynamic networks and will discuss key open problems in the area.

  2. Security and Privacy for Distributed Optimization & Distributed Machine Learning
    by Nitin Vaidya
    Date/Time: Saturday, July 31 at 15:00 – 17:45 CEST
    The tutorial will include an introduction to  (i) distributed optimization and distributed machine learning, (ii) security or fault-tolerance for distributed optimization and learning, and (iii) privacy in distributed optimization and learning. The presentation will cover the basic principles, and some representative solutions. Server-based and peer-to-peer solutions will be discussed. In particular, Byzantine fault-tolerant algorithms for distributed optimization and learning will be discussed. Privacy mechanisms to be discussed include differential privacy and its variations for systems based on multiple servers.

  3. Interaction-Oriented Programming: An Application Semantics Approach for Engineering Decentralized Applications
    by Amit Chopra, Samuel Christie, and Munindar P. Singh
    Date/Time: Friday, July 30 at 15:00 – 18:00 CEST
    Interaction-Oriented Programming (IOP) is a collection of concepts, languages, and programming models for engineering applications characterized by interactions between autonomous parties, e.g., in domains such as health, e-commerce, and finance. Owing to the autonomy of the involved principals, such applications are conceptually decentralized.  We demonstrate how to specify a decentralized application flexibly and how to engineer correct, fault-tolerant endpoints (agents) for the principals in a simple, straightforward manner.  Notably, the entire application is realized as agents communicating over an unordered, unreliable messaging infrastructure (our implementations in fact use UDP). 

    IOP departs from traditional distributed systems work by modeling application semantics and eschewing transport and middleware guarantees.  IOP addresses a long-standing challenge in distributed systems: programming abstractions that makes it convenient to realize correct, flexible, fault-tolerant applications in a manner compatible with the end-to-end argument.

    Tutorial attendees will gain a critical understanding of autonomy, and decentralization; learn how to specify and implement decentralized applications; and appreciate important but largely forgotten ideas in distributed systems. It should be useful to anyone interested in programming decentralized and messaging-based applications, including in aspects such as asynchrony and concurrency. The tutorial is self-contained and presented at a senior undergraduate student level.