CS7NS6 – Distributed Systems

Module CodeCS7NS6
Module Name Distributed Systems
ECTS Weighting5 ECTS
Semester TaughtSemester 2
Module Coordinator/s  Professor Vinny Cahill

Module Learning Outcomes

On successful completion of this module, students will be able to:

  1. Describe the basic characteristics, structure and operation of a distributed system, and the issues that a distributed system poses for a system architect;
  2. Identify and evaluate appropriate architectural models and paradigms for building large-scale distributed systems;
  3. Design, construct, document and test distributed systems;
  4. Reason about the trade-offs between scalability, performance, consistency, reliability and availability in distributed systems;
  5. Make use of appropriate documentation and reference material.

Module Content

Building distributed applications is still a difficult task due to the concurrency, communication latency, and possibility of partial failure that are inherent in computer networks. As in other areas of computer science, the trend in providing support for building distributed applications has been towards presenting application developers with high-level abstractions on which to base the design of their software.

This course takes a critical look at some of the architectural issues involved in, and paradigms available for, the construction of large-scale distributed systems such as the infrastructures supporting Google’s search engine or Amazon’s online sales platform. In particular, the course considers how to develop systems that must make trade-offs between performance, consistency, reliability, and availability.

Students will be given opportunities to develop their problem solving, programming and communication skills by designing solutions to distributed systems programming problems as well as implementing such solutions as distributed systems.

Specific topics addressed in this module may include:

  1. Distributed Algorithm Design;
    • Mutual exclusion, leader election;
  2. Characterization of Failure and Failure Models;
  3. Atomic Transactions;
    • Serializability;
  4. Coordination, Consensus, Agreement;
    • Distributed commit protocols;
  5. Replicated Data;
    • Consistency models, replication protocols;
  6. Recovery;
    • Logging, checkpointing;
  7. Process Groups;
  8. Group Communication;
    • Reliable and ordered multicast.

Teaching and Learning Methods

Lectures, tutorials/in-class team-based problem solving exercises, student-led lessons, team-based program development exercises.

Assessment Details

Assessment ComponentBrief Description Learning Outcomes Addressed% of TotalWeek SetWeek Due
Individual Distributed Application Design ExerciseDesign of a large-scale distributed application.All60%TBCTBC
Team-based Lesson Preparation and DeliveryDelivery of a lesson on a seminal distributed system to the class.L01, L02, L04, L05 10%Staggered –
4 Weeks per Team
Team-based Programming Project Development of a challenging distributed application.All30%Week 2Week 12

In addition to satisfying the School’s requirement that students complete at least two-thirds of any continuous assessment exercises, students are required to contribute appropriately to all team-based exercises.

Reassessment Details

Individual distributed application design exercise, (100%).

Contact Hours and Indicative Student Workload

Contact Hours (scheduled hours per student over full module), broken down by: 44 hours
Lecture22 hours
Laboratory0 hours
Tutorial or seminar11 hours
Other11 hours
Independent Study (outside scheduled contact hours), broken down by:76 hours
Preparation for classes and review of material (including preparation for examination, if applicable)18 hours
Completion of assessments (including examination, if applicable)58 hours
Total Hours120 hours

Recommended Reading List

  • Designing Data-Intensive Applications by Martin Kleppmann, O’Reilly 2017.
  • Distributed Systems – Third Edition by Maarten van Steen and Andrew S. Tanenbaum, Maarten van Steen 2017.
  • Distributed Systems: Concepts and Design – Fifth Edition by George Coulouris, Jean Dollimore, Tim Kindberg, and Gordon Blair, Pearson 2012.
  • Site Reliability Engineering: How Google Runs Production Systems edited by Betsy Beyer, Chris Jones, Jennifer Petoff and Niall Richard Murphy, O’Reilly 2016.
  • Extensive use will be made of papers from the literature.

Module Pre-requisites

Prerequisite modules: N/A

Other/alternative non-module prerequisites: Experience of building concurrent (multi-threaded) and networked applications

Module Co-requisites


Module Website