Current students

COMP3005 - Operating Systems

This database contains 2016-17 versions of the syllabuses. For current versions please see here.

Code COMP3005 (Also taught as: COMPGA09)
Year 3
Term 1
Taught By Antoaneta Serguieva

This is a practical course whose primary goal is to develop an understanding of the operation of operating systems, building on and showing the utility of basic material covered in previous courses, including data structures and algorithms, concurrency, and networks. Since most practical operating systems are written in C-based languages, this course will use C. A good level of programming ability in C will be assumed, and students will be expected develop further expertise through practice.

Learning Outcomes To be able to: (a) read and understand C well and construct sophisticated C programs; (b) describe the functions of the major components of an operating system; (c) compare and contrast alternative possible implementations for some of these components; (d) implement a range of components for a practical UNIX-like operating system; (e) analyse the performance of components




Anatomy of an Operating System
Operating system structure: UNIX vs Windows
Threads and processes
Process creation and death
Process Control Blocks
Process scheduling
Concurrency control
Memory management
Device management
Bootstrapping an OS

Practical work
The structure of the chosen UNIX source code
Compiling and debugging this system
Implementation of modules
Performance analysis modules

Method of Instruction:

Lecture presentations, programming lab classes, exercise questions.


The course has the following assessment components:

  • Written Examination ( 2.5 hours, 85%);
  • Coursework Section (15%).

To pass this course, students must:

  • Obtain an overall pass mark of 40% for all components combined;
  • Obtain a minimum mark of 30% in each component worth ? 30% of the module as a whole.



Lecture notes