Skip to main content

Trinity College Dublin, The University of Dublin

Menu Search

Module Descriptor School of Computer Science and Statistics

Module CodeCS7NS6
Module NameDistributed Systems
Module Short Title
Semester TaughtHT (2nd Semester)
Contact Hours

Three hours per week for lectures, tutorials and/or in-class working sessions.
Additional hours may be scheduled for presentation and marking of coursework.

Module PersonnelProfessor Vinny Cahill
Learning Outcomes

When students have successfully completed this module they should be able to:

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


Learning Aims

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 designs of their software.

This course tasks 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.

Module Content

Specific topics addressed in this module include:

  • Distributed algorithm design
    • Mutual exclusion, leader election
  • Characterisation of failure and failure models
  • Atomic transactions
  • Consistency models
    • Serializability
  • Coordination, consensus, agreement
    • Distributed commit protocols
  • Recovery
    • Logging, checkpointing
  • Replication
    • Sequential consistency
  • Process Groups
  • Group communication
    • Reliable and ordered multicast
Recommended Reading List

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.


Extensive use will be made of papers from the literature.

Module Prerequisites

Experience of building concurrent (multi-threaded) and networked applications.

Assessment Details

Annual Assessment:

Exam: 60%

Coursework: 40%

The 40% coursework mark is made up of continuous assessment (10%) and an individual project (30%).

Student will work on the coursework outside of lecture and tutorial times. A mandatory development project of significant scope is undertaken over the semester. Continuous assessment is composed of in-class presentations on influential distributed systems. The final grade awarded will be a simple accumulation of grades achieved in each element.

Supplemental Assessment:

Assessment in the Supplemental session will be based on 100% exam.

Module Website
Academic Year of Data2018/19