Hold Ctrl-tasten nede. Trykk på + for å forstørre eller - for å forminske.


Operating Systems and Systems Programming

This is the study programme for 2019/2020. It is subject to change.

The course gives an introduction to operating systems, how to implement them, and how to program against them efficiently, with particular focus on thread programming and synchronization between threads within a program.

Learning outcome

- How operating system work
- How to protect the operating systems from malicious software
- Be capable of programming against the operating system API
- Be capable of programming parts of an operating system
- Be capable of implementing simple mechanisms for resource management
- Know how to program with threads
- Know how to exploit virtualization for resource management
General compentancy:
- Know important general principles for resource management for computer systems.


The course gives an introduction to operating system architectures and mechanisms for resource management in computer systems. Specific topics covered: The kernel abstraction, processes, the programming API, thread, concurrency and parallelism, synchronized access to shared objects, multi-object synchronization and processor scheduling algorithms. Memory management: Address translation, caching and virtual memory. Persistent storage: File systems and reliable storage through transaction-based file system consistency. Operating Systems security.
The course includes programming assignments focused on main concepts learned in the course, such as concurrency, parallelism and synchronization techniques, and tools to analyze and debug various aspects of such applications. In the final project, student groups should design a larger system or parts of an operating system using the techniques covered in the course.
The programming language used in this course is primarily Go (golang).

Required prerequisite knowledge

One of the following alternatives:
  • DAT100 Object-oriented Programming
  • DAT110 Introduction to Programming

Recommended previous knowledge

DAT200 Algorithms and Datastructures, DAT230 Communication Technology I


Skriftlig eksamen og programmeringsprosjekt
Weight Duration Marks Aid
Written exam3/54 hoursA - FNone permitted
Programming project2/5 A - F
Project consisting one large assignment. The project is to be performed in a group. The grade for the project will be based on the submitted program code and an individual oral examination of the submitted program code. Both parts must be done before final grade is given. Each group member can receive a different grade based on their performance during the oral examination.
If a student fails the projectwork , she/he have to take this part again next time the subject is lectured.

Coursework requirements

Laboratory work
Five mandatory individual lab exercises (programming exercises). Pass/Fail. All programming exercises must be passed to attend for the written exam and lab exam. Approval takes place through the Autograder system for automated evaluation, followed by in-lab approval.
Completion of mandatory lab assignments are to be made at the times and in the groups that are assigned. Absence due to illness or for other reasons must be communicated as soon as possible to the laboratory personnel. One cannot expect that provisions for completion of the lab assignments at other times are made unless prior arrangements with the laboratory personnel have been agreed upon.
Failure to complete the assigned labs on time or not having them approved will result in barring from taking the exam of the course.

Course teacher(s)

Course teacher
Hein Meling
Course coordinator
Hein Meling
Head of Department
Tom Ryen

Method of work

4 hours lectures and 2 hours of guided lab exercises. Lab exercises requires additional non-guided work effort.

Overlapping courses

Course Reduction (SP)
Operating Systems (BID200_1) 5

Open to

Bachelor studies at the Faculty of Science and Technology.

Master studies at the Faculty of Science and Technology.

Course assessment

Form/oral discussion.


Operating Systems: Three Easy Pieces. Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau.
Go Systems Programming. Mihalis Tsoukalos
Lab exercises and programming projects will be published on Github.

This is the study programme for 2019/2020. It is subject to change.

Sist oppdatert: 27.05.2020