Fall 2023 Course

Course Summary and Purpose

We aim to introduce students to the concepts, tools, and framework necessary for independent work on the Linux kernel.

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.

Course objectives

Students will:

Required Materials

Course Schedule

# week starting (Sunday date) S M T W R F S Assignment Due
00 03 Sep         L00      
01 10 Sep     L01   L02     setup
02 17 Sep     L03   L04     E0
03 24 Sep     L05   L06     P0
04 01 Oct     L07   L08     E1
05 08 Oct     L09   L10      
06 15 Oct     L11   L12     P1
07 22 Oct     L13   L14     E2
08 29 Oct     L15   L16     Midpoint Presentation
09 05 Nov     L17   L18     P2
10 12 Nov     L19   L20      
11 19 Nov     L21          
12 26 Nov     L22   L23      
13 03 Dec     L24   L25     F0
14 10 Dec     L26   L27     F1
15 17 Dec     L28         Final Presentation
Course Policies Submission Guidelines Peer Review Process