Skip to main content

Trinity College Dublin, The University of Dublin

Menu Search

Module Descriptor School of Computer Science and Statistics

Module CodeCS4032
Module NameDistributed Systems
Module Short Title
Semester TaughtMichaelmas
Contact Hours

Lecture hours: 22 Lab hours: 0 Tutorial hours: 11

Module PersonnelAssistant Professor Stephen Barrett
Learning Outcomes

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

  • Describe the basic characteristics, structure and operation of a  distributed system, and the issues which a distributed system poses to a systems architect;
  • Identify and evaluate appropriate architectural models for distributed problem scenarios;
  • Design, construct, document and test distributed system solutions to realistic real-world problems;
  • Reason about the performance trade-offs of decentralised architectures;
  • Make use of appropriate documentation and reference material.
Learning Aims

Building distributed applications is a difficult task due to the concurrency, communication latency, and possibility of partial failure that is inherent in distributed systems. As in other areas of computer science, the trend in providing support for building distributed applications has been towards presenting the application developer with ever higher levels of abstraction and, in the particular case of distributed programming, of location transparency. This course takes a critical look at some of the paradigms and architectural issues involved in distributed programming and their likely evolution.

Students will be given opportunities to develop their problem solving, programming and written communication skills by designing solutions to distributed system programming problems, and implementing those solutions as fully networked distributed systems.

Module Content

Specific topics addressed in this module include:

  • Network Programming
  • Authentication
  • Replication
  • Distributed Systems Algorithms
  • Peer-to-peer and other large scale architectures
  • Enterprise Infrastructure and Paradigms – Web services
  • Advanced network application frameworks
Recommended Reading List

Materials, including research papers, will be provided during the module.

Module Prerequisites

The students are expected to be able to be competent in at least one high level programming language (e.g. Python, Java, C++, C# etc.). Previous with concurrent programming is beneficial but concurrency will be reviewed in the module. The module will use Haskell as a baseline programming language.

Assessment Details

% Coursework: 100%, as continuous assessment (30%) and individual project (70%).


A mandatory individual project of significant scope is undertaken over the term which students must work on outside lecture and tutorial times.  Continuous assesment is composed of a number of marked tutorial exercises and programming assignments. The final grade awarded will be a simple accumulation of grades achieved in each element.

Module Website
Academic Year of Data