COMP41720 Distributed Systems

Academic Year 2022/2023

Distribution is a key technology for constructing systems that can scale to meet high demand (such as web applications) or which are required to operate over large geographical areas (such as Sensor Networks). Understanding how to do this effectively is an important challenge in computer science, especially given the continued emergence of systems that are required to handle millions of concurrent users (Facebook, Google, Linkedin, Amazon, Wallmart, Netflix,...) where fluctuations in usage necessitate the addition or removal of servers to meet that changing demand.

This module explores this space from a practical perspective. Students will learn about and use a range of distribution techniques. They will explore the state-of-the-art and key theoretical issues by reviewing academic articles describing some of the most successful approaches developed to date. A final project will allow the students to apply these techniques through the development of a significant application.

Show/hide contentOpenClose All

Curricular information is subject to change

Learning Outcomes:

At the end of this module student will:

* Have an appreciation of the main issues and principles associated with distributed systems.

* Understand both theory and practice for a number of distributed programming models (Distributed Objects, Web Services, REST, Message-Oriented Middleware).

* Be aware of current trends in distributed system design (Reactive Systems, Microservices, ...)

* The ability to specify, design and implement a distributed system

* Be exposed to some of the theory behind distributed systems.

Indicative Module Content:

While completing the course, the students will learn about a number distributed programming models, such as: distributed objects, web services (SOAP / REST), message-oriented middleware, and actor programming. They will gain an appreciation of the issues that underpin the development of Distributed Systems (Fault Tolerance, CAP Theorem, Global Time), and understand the most prominent architectural styles (Client-Server, P2P, Monolithic Systems, Microservices). Students will also be exposed to additional programming models, distributed applications (e.g. distributed file systems), and advanced concepts (replication systems, fault tolerance) through peer learning.

Student Effort Hours: 
Student Effort Type Hours
Specified Learning Activities


Autonomous Student Learning




Small Group






Approaches to Teaching and Learning:
* Lab-based learning centered around a specific testbed system will be used to introduce and compare core distributed programming concepts.

* Theory and applications will be explored through review of one or more seminal papers from the area.

* Students will undertake a group project in which they will build on the basic techniques learn in the lab.
Requirements, Exclusions and Recommendations

Not applicable to this module.

Module Requisites and Incompatibles
COMP30220 - Distributed Systems

Assessment Strategy  
Description Timing Open Book Exam Component Scale Must Pass Component % of Final Grade
Group Project: Team-based project to develop larger distributed system. Week 12 n/a Graded No


Continuous Assessment: 5 Assessed Laboratories: Distributed Objects, Web Services, REST, Message-Oriented Middleware, Actor Programming. Throughout the Trimester n/a Graded No


Assignment: Review of a Seminal Paper on a Distributed System topic Week 8 n/a Graded No


Carry forward of passed components
Resit In Terminal Exam
Spring No
Please see Student Jargon Buster for more information about remediation types and timing. 
Feedback Strategy/Strategies

• Feedback individually to students, post-assessment

How will my Feedback be Delivered?

Not yet recorded.

Name Role
Kalyani Yogeswaranathan Tutor
Timetabling information is displayed only for guidance purposes, relates to the current Academic Year only and is subject to change.
Practical Offering 1 Week(s) - 1, 2, 10, 11, 12 Fri 09:00 - 10:50
Practical Offering 1 Week(s) - 3, 4, 5, 6, 7, 8, 9 Fri 09:00 - 10:50
Practical Offering 1 Week(s) - 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12 Mon 16:00 - 17:50
Lecture Offering 1 Week(s) - Autumn: All Weeks Wed 15:00 - 15:50