Advanced Operating Systems M (2016-2017)

The computing landscape has changed radically in the last decade. The desktop personal computer has become largely irrelevant, and heterogeneous, multicore, mobile, and real-time systems — smart mobile phones, net books, and laptops — are now ubiquitous. Yet, despite this shift, these systems are still programmed in C, and the majority run some variant of the Unix operating system. This course will review research literature on systems programming techniques and operating systems design, discuss the limitations of deployed systems, and show how the operating system infrastructure might evolve to address the challenges of supporting modern computing systems.

Aims and Objectives

This course aims to explore the programming language and operating systems facilities essential to the implementation of real-time, reactive, and embedded systems. To discuss the limitations of industry-standard operating systems, and introduce new approaches to operating systems design that address the challenges of security, robustness, and concurrency. To give participants an understanding of the practical engineering issues caused by the design of real-time and concurrent systems; to suggest appropriate implementation techniques for such systems.

At the end of this course, students should be able to:


Required pre-requisite courses are Computer Systems 2, Operating Systems (H), Advanced Programming (H), and Functional Programming (H).


The course runs during semester 2, and consists of lectures and associated tutorials. There are no scheduled laboratory sessions.

Recommended Reading

Research papers will be set as required reading for some tutorials, and as background reading for some lectures.


This is a level M course, worth 10 credits.


The course will be assessed by a combination of coursework (20%) and a final examination (80%).


Past exam papers:

Lecture Handouts

Tutorial Handouts