Distributed Systems have become an intergral part of multiple computer systems worldwide. In simple terms, a distributed system consists of multiple processes that act independently in order to solve a common problem. This trend has given rise to the design and analysis of Distributed Algorithms. Apart from the running time, the designer of a distributed algorithm must consider new limitations imposed by the system, such as limited knowledge of the network, limited memory and communication, and synchronicuty problems.
The goal of this lecture is to teach students about the theory of Distributed Algorithms. In this course we will be examining how we can implement classic graph algorithms such as shortest paths, matching and scheduling problems. Additionally we will be examining prominent theoretical models from the literature such as the following (non exhaustive list):
- Dynamic Graphs
- Population Protocols
- BlockChain
- Programmable Matter
- Overlay Networks
- Parallel Computing
You can register at the course in the moodle page.