Introduction to Linux Kernel Development: University of Massachusetts Lowell - Fall 2024

Course Summary and Purpose

We aim to introduce students to the concepts, tools, and framework necessary for independent work on the Linux kernel, and more broadly to the skills necessary for work as a professional open source software engineer.

Course Description

Linux is the most widely used operating system in the world. It powers the world's top supercomputers, every Android phone, and the servers that host the internet's most popular websites. At the core of Linux is a software component called the kernel. It performs critical roles including managing communication with hardware, sharing system resources equitably, and enforcing security constraints. This course will introduce students to Linux kernel development through hands-on experience working with internal Linux kernel APIs and providing an overview of some of the core features and components of the kernel. Students will gain an invaluable perspective on how their computers work behind the scenes. By grasping the inner workings of the operating system and how to make changes to it, they will add a new layer of understanding to their mental model of computation that will pay dividends throughout their future in software engineering.

Course Objectives

Students will:

Required Materials

Coursework Overview

Coding Assignments

Presentation Assignments

Grading Details

Category Weights

Category Percentage
Programs 30%
Exercises 20%
Midpoint Presentation 15%
Final Assignment + Final Presentation 30%
Participation 5%

Letter Grade Conversion

Percentage range Letter grade Grade points
90 ~ 100 A 4.0
85 ~ 89.99 A- 3.7
80 ~ 84.99 B+ 3.3
75 ~ 79.99 B 3.0
70 ~ 74.99 B- 2.7
65 ~ 69.99 C+ 2.3
60 ~ 64.99 C 2.0
55 ~ 59.99 C- 1.7
50 ~ 54.99 D+ 1.3
40 ~ 49.99 D 1.0
below 40 F 0.0

Course Policies

Attendance Policy

Automatic Course Failure

If a student fails to complete a task by a deadline with no prior notice, an instructor will reach out to you via email and direct message on matrix. If the student fails to respond to this message within seven days of its receipt, the instructors reserve the right to give the student a final course grade of F.

Due date Policies

During a week where an assignment is due, the students must make two submissions and complete two peer reviews in three stages as follows:

  1. By 23:59 Tuesday, a student must make at least one submission. This is the "initial submission" stage. The student will not be graded on the content of this submission, however the student will receive a 0 for the assignment if they do not submit anything at all. Students may make as many resubmissions as they please, and only the last submission made before the initial submission deadline will be distributed as the target of peer review. Students will review each other's initial submissions in the following stage.

  2. By 23:59 Wednesday, a student must reply by email to two other students' initial submissions providing feedback on anything wrong with the patchset and any suggestions for the other student to improve their final submission. This is the "peer review" stage. Triggered by the event of the initial submission deadline, automation will make all students' submissions visible to the whole class and assign each student two others to peer review. Each peer review will comprise 10% of a students' assignment grade, for 20% of the total.

  3. By 23:59 Thursday, a student must make at least one more submission for the assignment. This is the "final submission" stage. The wise students will take their peer's feedback and self-reflection into account and revise their work before the final submission, however they are not required to do so. Students can re-submit as many times as they please and they will only be graded on the content of last submission made before the deadline, provided they made at least one initial submission. The grade students receive on the content of the final submission will comprise 80% of their assignment grade. Even if you are satisfied with your initial submission, you must make at least one final submission. Failure to make at least one final submission will result in a grade of zero.


Further details can be found on the policies and procedures page

Course Communication

Course Overview

Week # Start Date Topic Tuesday Lecture Thursday Lecture Assignment Due
00 01 Sep syllabus, course format, what is linux? L00
01 08 Sep commandline bootcamp, git intro L01 L02
02 15 Sep makefiles, C compilation deep dive L03 L04 setup
03 22 Sep file descriptors, processes, syscalls L05 L06 E0
04 29 Sep CPU priv., reentrancy, kernel vs user code L07 L08 P0
05 06 Oct tracing how/when OS code runs on the CPU L09 L10
06 13 Oct midpoint pres, what a good pres. looks like monday schedule L11 Midpoint Presentation
07 20 Oct assembly refresher, syscalls: end to end L12 L13 E1
08 27 Oct kernel pseudo filesystems; kernel modules L14 L15 P1
09 03 Nov character devices, ioctl, file position L16 L17 E2
10 10 Nov kernel locking support L18 L19 P2
11 17 Nov misc. devices for simple chardevs L20 L21 F0
12 24 Nov live debugging: broken char dev module L22 thanksgiving
13 01 Dec guest lecture; final presentations L23 L24 F1
14 08 Dec final presentations L25 L26
15 15 Dec final presentations; end of class L27 L28 Final Presentation

For more information, please refer to our detailed procedures and policies.


msg = (silence)
whoami = None
singularity v0.6-9-gd2471e8 https://github.com/underground-software/singularity