Skip to main content

Trinity College Dublin, The University of Dublin

Menu Search

Module Descriptor School of Computer Science and Statistics

Module CodeCS3D4
Module NameOperating Systems and Concurrent Systems
Module Short TitleN/a
Semester TaughtHilary Semester
Contact HoursLecture hours: 33, Lab hours: 7, Tutorial hours: 11, Total hours: 48
Module PersonnelLecturing staff: Dr Mike Brady
Learning Outcomes

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

  • recognise standard concurrent programming problems;
  • solve concurrent programming problems using standard techniques;
  • design and implement concurrent programs using standard threading techniques;
  • develop models of concurrent programs using the Promela modelling language;
  • verify the correctness of simple concurrent programs using SPIN;
  • describe algorithms, data structures and policies used in modern operating systems for thread scheduling, memory management, disk I/O and file management;
  • evaluate, compare and reason about the relative performance of algorithms used by operating systems (e.g. page replacement policies);
  • apply a knowledge of operating system behaviour when developing user-level programs.
Learning Aims

The first part of this module introduces students to concurrency and concurrent programming. The aim is to provide students with the ability to develop concurrent software systems using standard techniques and constructs. To achieve this aim, students must have a thorough understanding of common problems that arise in concurrent systems and how those problems can be avoided. This module will teach the use of tools and techniques for modelling and verifying the correctness of concurrent systems, applying this through practical laboratory exercises in which small concurrent software systems are developed. The second part of the module addresses various aspects of the design of modern operating systems. The main aim is to explore how programmers can apply a knowledge of operating system features to the design of efficient applications. This is achieved by examining common algorithms and policies used by modern operating systems, as well as the facilities provided to application programmers. This knowledge is then applied in laboratory exercises.

Module Content


  • introduction to concurrency;
  • simple multi-threaded programs in Java and C;
  • modelling concurrent systems;
  • interference;
  • mutual exclusion;
  • critical sections;
  • verification of concurrent programs;
  • semaphores;
  • monitors.

Operating Systems

  • operating system architectures;
  • memory management;
  • processor scheduling;
  • disk I/O, file systems.
Recommended Reading List

Gerald J. Holtzmann: "The SPIN Model Checker: Primer and Reference Manual", Addison-Wesley
Bovet and Cesati, "Understanding the Linux Kernel, Third Edition", O'Reilly Media, 2005
Kifer and Smolka, "Introduction to Operating System Design and Implementation: The OSP 2 Approach", Springer 2007
Operating System Concepts (7th edition), A Silberschatz, PB Galvin and G Gagne, Wiley, 2005

Module PrerequisitesA working knowledge of C/C++; an understanding of computer organisation.
Assessment Details

% Exam: 80
% Coursework: 20

Supplemental: Examination: 100%, Coursework: 0%

Module Website
Academic Year of DataN/a