Lernergebnisse
Most modern computer systems are inherently distributed and networked, including multi-core computers, machine-learning clusters, wireless sensorsystems, datacenters, peer-to-peer systems, blockchain or cryptocurrencies, to just give some examples. In order to operate correctly and efficiently, all these systems rely on clever algorithms. Some of the underlying algorithms are fundamentaland are used by most of the systems, others are specialized and exploit specific features of the particular distributed system.
The goal of the module is to provide the students with tools and techniques to reason about efficient algorithms for distributed systems.
The lecture is problem-oriented and structured into different fundamental principles, such as Distributed Coordination, Decentralization, Randomization, etc. Each lecture will cover a different basic problem (such as Load Balancing, Leader Election, Symmetry Breaking, etc., arising in various different applications, from the Internet over distributed data analytics to sensor networks) and will be self-contained.
By the end of the lecture, the student will be able to develop her/his own distributed algorithms, and formally prove correctness as well as complexity guarantees (e.g., on the computational complexity or the communication complexity).
The students will also have a good understanding of when to apply which principle, i.e., where randomization can be useful and where not, or to which extent a distributed system should be decentralized. The students will further have a good idea of the different natures of today's distributed systems. If time permits, we will also extend our discussion beyond computer systems and have an algorithmic look at social and biological networks.
This module is principally designed to impart:
technical skills: 40x, method skills: 40x, system skills 10x, social skills 10x