Lernergebnisse
Most modern computer systems are inherently distributed and networked, including wireless sensorsystems, datacenters, peer-to-peer systems, 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 fundamental and 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 networks.
The lecture is problem-oriented and structured around fundamental networking aspects (such as routing, forwarding medium access, etc.) of different networks (e.g., Internet, wireless, cryptocurrency networks, overlay networks, etc.). Each lecture will cover a different fundamental principle (such as use of randomization or indirection) and will be self-contained.
By the end of the lecture, the student will be able to develop her/his own network 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 protocol should be decentralized. The students will further have a good idea of the different natures of today's networked systems. If time permits, we will also extend our discussion beyond computer networks and have an algorithmic look at social networks.
This module is principally designed to impart: technical skills: 40x, method skills: 40x, system skills 10x, social skills 10x