Kernel Development Learning Pipeline
Course Description
Linux is the most widely used operating system in the world. The core software component of the Linux operating system is the kernel. A couple of its roles include managing hardware interactions, virtualizing system resources, and enforcing security constraints. In effect, Linux kernel powers almost all of the world’s top supercomputers, android phones, and an innumerable variety of other computers. This course will introduce students to Linux kernel development by focusing on device driver development. This will give students hands-on experience working with internal Linux kernel APIs and provide an overview of some of the core features and components of the kernel. Gaining an understanding of the inner workings of the operating system and how to make changes to it will give students an invaluable perspective on how their computers work behind the scenes that will reveal a new layer of understanding to apply to any future software engineering practice.
Lecture Time
- Starting Sep 15, 2025
- Mondays 14pm-16pm CET
Teachers
- Carlos Maiolino <cem<at>maiolino.dev>
- Vratislav Bendel <vbendel<at>redhat.com>
- Michal Schmidt <mschmidt<at>redhat.com>
- Radomir Vrbovsky <rvrbovsk<at>redhat.com>
Lecture Room
Prerequisites
- English language
- C language knowledge
- Basic knowledge about operating systems in general
- Practical skills in Linux operating system (e.g. Fedora, Debian, Slackware)
- Basic git
- Own computer, preferably a laptop with x86 architecture
Course enrollment
Language of Instruction
Objectives
- Introduce students to the Linux Kernel development workflow, show them how to create and send kernel modifications to mailing lists
- Excite students about the wonderful world of Linux kernel community
- Expose students to major kernel subsystems
Syllabus
- Introduction and development environment setup
- General overview of core kernel concepts
- Process management
- Synchronization primitives
- Memory management
- BPF and tracing
- Storage and filesystems
- Networking stack
- Device drivers
- Kernel Debugging methods
- GPG signing party
Teaching Methods
- In-person lectures
- Homework assignments
Assessment Methods
- Each assignment is assigned a specific number of points based on its difficulty or importance. These points add up to a maximum of 100.
- To pass the course, students need to accumulate at least 65 points across assignments.
Special Thanks
We would like to show our appreciation to the following people who have contributed to the course or without their help the course would not be existing:
- Martin Ukrop
- Joel Sawitz
- Jiri Benc
- Michal Schmidt