System Level Programming

Course Number 705101 | Wintersemester 2019/20

Content

The goal of this class is to introduce concepts, relevant for system-level programming. This includes deepening and strengthening your understanding of basic stuff—like pointers—or more basic stuff—like compiler errors—and getting in touch with things like semaphores, fork, malloc or POSIX.

The course topics include

  • Refresh and complement Linux Basics, Debugging and C/C++ know-how
  • Understand memory behavior of programs and fault-aware dynamic memory management
  • Interaction of threads and processes in C/C++ (POSIX, Fork, Exec, waitpid, pipes)
  • Synchronization of threads and processes (semaphores, mutexes, condition variables)
  • Memory Mapped I/O and shared memory (POSIX)

The learning experience in this course is hands-on.

Material

All the material for the course can be found here.

Administrative Information

This course currently is only a practical exercise (KU). Instead of a lecture you have to acquire the knowledge on your own (which is by itself a great exercise). The practicals are completed by submitting your results and defending your solutions in an oral exam.

Prerequisites

  • Basic knowledge of C/C++

These prerequisites are best fulfilled by taking the following courses beforehand:

  • Introduction to Structured Programming
  • Software Development Practical Exercises

Lecturers

Daniel Gruß
Daniel
Gruß

Assistant Professor

View more
Peter Lipp
Peter
Lipp

Group Leader

View more
Michael Schwarz
Michael
Schwarz

Postdoc

View more
Alexander Ertl
Alexander
Ertl


View more
Florian Kargl
Florian
Kargl

Teaching Assistant

View more
Lukas Maar
Lukas
Maar

Teaching Assistant

View more
Luca Mayr
Luca
Mayr


View more
Hanna Müller
Hanna
Müller


View more
Fabian Rauscher
Fabian
Rauscher


View more
Christian Rieger
Christian
Rieger


View more
David Schögler
David
Schögler


View more
Stefan Steininger
Stefan
Steininger


View more
Hannes Weissteiner
Hannes
Weissteiner

Teaching Assistant

View more