Enrolment options

CSC4263: Parallel and Distributed Systems
Semester II

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.

Self enrolment (Student)
Self enrolment (Student)