CSU23016 – Concurrent Systems and Operating Systems

Module CodeCSU23016
Module NameConcurrent Systems and Operating Systems
ECTS Weighting [1]5 ECTS
Semester TaughtSemester 2
Module Coordinator/s  Dr Andrew Butterfield

Module Learning Outcomes

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

  1. Recognise standard concurrent programming problems;
  2. Solve concurrent programming problems using standard techniques;
  3. Design and implement concurrent programs using standard threading techniques;
  4. Develop models of concurrent programs using concurrent modelling languages;
  5. Verify the correctness of simple concurrent programs using model-checking;
  6. Describe algorithms, data structures and policies used in modern operating systems for thread scheduling, memory management, disk I/O and file management.

Module Content

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.

Concurrency: introduction to concurrency; simple multi-threaded programs in 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.

Teaching and Learning Methods

The course is mainly delivered through lectures and tutorials, with four practical exercises that cover various aspects of the material. Typically these include thread based programming, concurrency modelling and verification, and algorithmic aspects of operating systems, such as scheduling. Laboratory classes are used to give feedback on practical work, as required.

Assessment Details

These are tentative at present, particularly the Examination component.

Assessment ComponentBrief DescriptionLearning Outcomes Addressed% of TotalWeek SetWeek Due
ExaminationIn-person Examination (2hrs)LO1, LO2, LO3, LO4, LO680%N/AN/A
Practical 1Tool UsageLO32%Week 1 Week 2
Practical 2Thread ProgrammingLO2, LO36%Week 3Week 5
Practical 3Concurrency ModellingLO1, LO4, LO56%Week 6Week 8
Practical 4OS Coding (e.g. Scheduler)LO1, LO2, LO66%Week 8Week 10

Reassessment Details

In-person Examination (2 hours, 100%).

Contact Hours and Indicative Student Workload

(Lectures and tutorials are considered somewhat interchangeable)

Contact Hours (scheduled hours per student over full module), broken down by:37 hours
Lecture22 hours
Laboratory4 hours
Tutorial or seminar11 hours
Independent Study (outside scheduled contact hours), broken down by:72 hours
Preparation for classes and review of material (including preparation for examination, if applicable)36 hours
Completion of assessments (including examination, if applicable)36 hours
Total Hours109 hours

Recommended Reading List


Module Pre-requisites

Prerequisite modules: 

  • SF Computer Science: either CSU22014 (Systems Programming, Semester 1) or CSU22061 (Intermediate Programming, Semester 1)
  • JS Engineering: CSU11E03 (Computer Engineering I, Semester 2) and CSU22E03 (Computer Engineering, Semester 1)

Other/alternative non-module prerequisites: 

The programming exercises all use the C programming language so some familiarity and experience with C is required.

Module Co-requisites


Module Website