Enrolment options
Course Aims
A distributed system is a computer system consisting of several independent computers, connected by a network, that can work together to perform a task or provide a service. Typical examples include: the World Wide Web, networked file systems, DNS, and massive multiprocessor supercomputers.
In this course we aim to provide students with a deeper understanding of distributed systems. In particular we focus on the principles, techniques, and practices relevant to the design and implementation of such systems. The course takes a systems-oriented view of distributed systems, concentrating on infrastructure software and providing hands-on experience implementing distributed systems.
Course objectives:
- Present the principles underlying the functioning of distributed systems;
- Create an awareness of the major technical challenges in distributed systems design and implementation;
- Expose students to modern and classic technology used in distributed systems and their software;
- Expose students to past and current research issues in the field of distributed systems;
- Provide experience in the implementation of typical algorithms used in distributed systems.
- Understanding and operating with distributed systems topics involving concepts, architectures and programming models are the objectives of this course.
Learning Outcomes
After completing this course you will be able to:
- Explain what a distributed system is, why you would design a system as a distributed system, and what the desired properties of such systems are;
- List the principles underlying the functioning of distributed systems, describe the problems and challenges associated with these principles, and evaluate the effectiveness and shortcomings of their solutions;
- Recognize how the principles are applied in contemporary distributed systems, explain how they affect the software design, and be able to identify features and design decisions that may cause problems;
- Design a distributed system that fulfills requirements with regards to key distributed systems properties (such as scalability, transparency, etc.), be able to recognize when this is not possible, and explain why;
- Build distributed system software using basic OS mechanisms as well as higher-level middleware and languages.
Course Prerequisites
Since networks make up a key part of distributed systems, and since many of the key challenges and solutions presented in the course extend those found in operating systems, a solid background in programming, networking and operating systems is essential.