Course

Operating Systems and Systems Programming (DAT320)

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.


Course description for study year 2020-2021. Please note that changes may occur.

See course description and exam/assesment information for this semester (2024-2025)

Semesters

Facts

Course code

DAT320

Credits (ECTS)

10

Semester tution start

Autumn

Language of instruction

English

Number of semesters

1

Exam semester

Autumn

Content

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. 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 memory management, scheduling, 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) along with some C.

Learning outcome

Knowledge:

- How operating system work

- How to protect the operating systems from malicious software

Skills:

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

Required prerequisite knowledge

Object-oriented Programming (DAT100)

Recommended prerequisites

Introduction to Programming (DAT110)

Exam

Form of assessment Weight Duration Marks Aid Exam system Withdrawal deadline Exam date
Home exam 1/1 4 Hours Letter grades 17.11.2020


Project consisting of 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 hearing 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 hearing.

A student that fails the project work must take this part again next time the subject is lectured.

Coursework requirements

Laboratory work, Lab exercise, Laboratory work

Five mandatory individual lab exercises (programming exercises). Pass/Fail. All programming exercises must be passed to attend the written 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 being barred from sitting for the exams.

Course teacher(s)

Course coordinator:

Nejm Saadallah

Course teacher:

Nejm Saadallah

Head of Department:

Tom Ryen

Method of work

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

Overlapping courses

Course Reduction (SP)
Operating Systems (BID200_1) , Operating Systems and Systems Programming (DAT320_1) 5

Open for

Battery and Energy Engineering - Bachelor in Engineering Civil Engineering - Bachelor in Engineering Computer Science - Bachelor in Engineering Computer Science - Bachelor in Engineering, Part-Time Electrical Engineering - Bachelor's Degree Programme, part-time Electrical Engineering - Bachelor's Degree Programme Energy and Petroleum Engineering - Bachelor in Engineering Geosciences and Energy Resources - Bachelor in Engineering Environmental Engineering - Bachelor in Engineering Mechanical Engineering - Bachelor in Engineering Medical technology - Bachelor in Engineering Medical Technology - Bachelor in Engineering - part time
Admission to Single Courses at the Faculty of Science and Technology
Industrial Economics - Master of Science Degree Programme, Five Year Industrial Automation and Signal Processing - Master's Degree Programme - 5 year
Exchange programme at Faculty of Science and Technology

Course assessment

Form/oral discussion.

Literature

Obligatorisk litteratur1. Arpaci-Dusseau RH. Operating systems : three easy pieces. Version 1.00. (Arpaci-Dusseau AC, red.). Createrspace Independent Publishing Platform; 2018. http://pages.cs.wisc.edu/~remzi/OSTEP/2. Donovan AAA. The Go programming language. First printing, October 2015. (Kernighan BW, red.). Addison-Wesley; 2016.
The course description is retrieved from FS (Felles studentsystem). Version 1