The University of New South Wales

ERTOS Coursework

We deliver courses at UNSW which are aimed at supporting our educational agenda.

Postgraduate Coursework

We presently provide two courses specifically for PhD students. The aim to help speed up the students' development as systems researchers.

Comparison of Contemporary Processor Architectures from the Software Point of View

This is a seminar-style course especially for PhD students in the operating systems and compiler fields. It consists of two parts. In the first half, students pick a general topic (instruction-level parallelism, VLIW/EPIC, memory architecture etc), mostly corresponding to chapters in Hennessy and Patterson's book Computer Architecture, A Quantitative Approach. They give a seminar on that topic and hand in a written report. In the second half, students pick a specific architecture (x86, SPARC, PowerPC, ARM, Itanium) and present a seminar and report on how the earlier-covered issues are dealt with in that particular architecture, and what other features it has, which are of interest to OS or compiler people.

For more information about this course, click here.

Readings in Systems

This is a course during which students perform a supervised study of the literature relevant to their PhD topic, produce a detailed report on the literature, and present a seminar demonstrating the depth and breadth of their insight into the field. Among others, this course is meant to be the first step towards developing a PhD proposal.


We also run an informal reading group and informal group seminars.

Undergraduate Coursework

We provide or contribute to a number of courses in the systems area, all aimed to provide strong insights and accompanied by significant practical components.

Operating Systems

Normally taken in first semester of third year. The course is loosely aligned with Andy Tannenbaum's book Modern Operating Systems. Tannenbaum's book acts as a reference for classical OS theory topics, but also, importantly, introduces research issues in each topic area to give advanced students a small taste of research issues in OS. The lectures cover classic OS theory and emphasize the practical application of OS theory using case studies of real systems (including the teaching system). The course has a significant (50%) practical component, which is based on the teaching system OS161 from Harvard University. The assignments reinforce the practical application of OS theory by requiring students to get their hands dirty in a realistic system, implementing realistic OS components, such as processes, virtual memory, and file systems. It also forces students to get familiar with tools used in large projects, such as hierarchical Make files and a revision-control system (CVS). The course features tutorials where students discuss aspects of OS theory and the assignments. The tutorials are lead by PhD students in the field, and thus the tutorials expose students to expert and enthusiastic guidance from active researchers.

For more information about this course, click here.

Advanced Operating Systems

This runs in second session and students with strong interest in systems are encouraged to take it in third year. The course especially emphasises the practical component (which determines 65% of the final mark). Students, working in pairs, write a complete little operating system on top of L4, starting from nothing more than a trivial L4 example program. They are also supplied with a serial driver and a network stack. They develop a system with new device drivers, memory management (including page swapping), process management and a file system, using the supplied network stack with a Linux-based block server as an I/O device. The development environment is presently a MIPS simulator (Sulima, developed by one of our students and used for all MIPS-based work in our lab). There is a milestone each week with some required functionality which must be demonstrated working in the lab on real hardware (locally-developed MIPS-based computers) and the implementation explained. Only the functionality requirements are given, the design is up to the students. The lectures initially cover L4 and its API, then microkernels in general, then move on to cover a number of special topics in much greater depth than COMP3231, as well as a number of current research issues. For the final exam students are given two recent research papers and have to write a critique of them in 24 hours.

For more information about this course, click here.

Distributed Systems

This course is taken as an elective in fourth year or as a postgraduate course. It covers the system aspects of distributed systems, focusing on the main challenges encountered when designing and building distributed systems. The topics covered include: communication, replication, consistency, synchronisation, fault tolerance, security, naming, distributed objects, distributed filesystems, etc. The final exam is an open book exam and challenges students to devise solutions to typical problems faced when designing and developing specific distributed systems. The course has a strong practical component which determines 50% of the final mark. This practical component consists of two separate projects. In the first project students are asked to implement a user-level distributed shared memory (DSM) library for Linux. This project requires dealing with Unix signals and socket programming in C and implementing a simple centralised multiple-reader/ single-writer consistency protocol. The second project involves implementing a simple router network in the Erlang programming language.

For more information about this course, click here.

Real-Time Systems

The course focuses on scheduling theory, timing analysis and software engineering approaches to real-time software, but covers also formal aspects of real-time programming languages and systems, and emphasizes the constructive and practical aspects of particular interest for future professionals of the field. The textbook is Real-Time Systems and Programming Languages by Burns and Wellings; to this we add books recommended as background reading, as well as research papers. Since the main research interests of the lecturers cover complementary aspects of real-time systems analysis, design and implementation we hope to avoid the monoculturalisms typical of such a fragmented and dynamic research field, and instead convey a first-hand impression of the richness and the diversity inherent in the subject.

For more information about this course, click here.