csperkins.org

Advanced Systems Programming M (2018-2019)

This course covers advanced topics systems programming, building on the material in Systems Programming (H) to explore new techniques for safer and more effective systems programming. It will focus on programming in an unmanaged environment, where data layout matters, and where performance is critical. This might include operating systems kernels, device drivers, low-level networking code, or other areas where the software-machine interface becomes critical.

Aims and Objectives

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, netbooks, 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.

The course aims to explore the features of modern programming languages and operating systems that can ease the challenges of systems programming, considering type systems and run-time support. It will review the research literature on systems programming and operating system interfaces, discuss the limitations of deployed systems, and consider how systems programming might evolve to address the challenges of supporting modern computing systems. Particular emphasis will be placed on system correctness and secure programming, to ensure the resulting systems are safe to use in an adversarial environment.

By the end of the course, students should be able to:

Prerequisites

Systems Programming (H), Operating Systems (H), Networked Systems (H), and Functional Programming (H), or equivalent, are pre-requisites.

Timetable

The course consists of a series of lectures delivered over 10 weeks, supported by a weekly 1-hour laboratory session.

Recommended Reading

Research papers will be set of background reading for some lectures. In addition, the following books may be useful:

Credits

This is a level M course, worth 10 credits.

Assessment

Assessment is by examination (80%) and assessed coursework (20%).

Lecture Slides

Laboratory Sessions

Coursework

Past exam papers