Introduce the key concepts at the basis of the design of distributed algorithms and systems;
Review the state-of-the-art in distributed systems and analyse the current trends in research and industry;
Provide a sound introduction to parallel and distributed programming paradigms.
Learning Outcomes
By the end of the module students should be able to:
describe and justify the main types of architectures and mechanisms of communication in distributed and parallel systems.
describe the fundamental issues in the design of distributed algorithms, protocols and systems, such as timing, coordination and consensus.
employ the underlying concepts and engineering issues involved in the real-world implementation of distributed and parallel systems, such as replication, fault-tolerance, reliability and scalability in solving practical problems.
demonstrate understanding of the theoretical concepts and abstractions discussed in the module to the design of novel and innovative distributed and parallel systems.
demonstrate a practical grasp of programming models and languages used to develop parallel or distributed applications by writing working programs.