Official course description, subject to change:
Preliminary info last published 26/06-19

Operating Systems and C

Course info
Language:
English
ECTS points:
7.5
Course code:
1409003U
Offered to guest students:
yes
Offered as a single subject:
yes
Price (single subject):
10625 DKK (incl. vat)
Programme
Level:
Bachelor
Programme:
Bachelor of Science in Software Development
Staff
Course semester
Semester
Efterår 2020
Start
24 August 2020
End
31 January 2021
Abbreviation
20202
Exam
Exam type
ordinær
Internal/External
ekstern censur
Grade Scale
7-trinsskala
Exam Language
GB
Abstract

The course focuses on system programming concepts (I / O, network programming and concurrent programming), and their implementation in C. The course deals with how hardware, operating system and the compilation process of programs are related. During the course, students will design and implement a simple Linux kernel module in C.

Description

System programming is essential in order to build software systems with high performance, hardware-protected security or low energy consumption, e.g., cloud-based big data systems or embedded systems.

In this course, all students get a deeper understanding of the hardware and operating system software that their programs are running on. Students who have the ambition to contribute to the Linux kernel, become software developer at a cloud service provider, or design low-level security solutions get a strong foundation that they can develop further later on.

The course covers:

  • C programming language
  • Computer organization
  • Operating system principles

The course covers the three fundamental computer system abstractions (interpreter, memory and communication) and the corresponding operating system concepts (processes, virtual memory and files). There is a particular focus on data representation, memory management, buffer overflow, cache management, dynamic memory allocation, exceptional control flow, file system and synchronization. Assembly is used to introduce coherence between hardware architecture and C concepts such as pointers or stack-based function calls.

Intended learning outcomes

After the course, the student should be able to:

  • Read, write and debug C programs in a shell-environment
  • Interpret how C programs execute on a computer system
  • Describe basic system programming concepts in C (I/Os, network programming, concurrent programming)
  • Reflect on the impact of hardware, operating system and compilation process on application programs
  • Design and implement a simple Linux kernel module in C
Ordinary exam
Exam type:
C: Submission of written work, external (7-trinsskala)
Exam variation:
C: Submission of written work
Exam description:

The exam is based on questions about the course (25%), exercises (25%) and questions about the assignments (50%).