Introduction to Linux Kernel Development Spring 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 35%
Exercises 20%
Midpoint Presentation 15%
Final Assignment + Final Presentation 30%

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 it's receipt, the instructors reserve the right to give the student a final course grade of 0.

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 Monday, 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 Tuesday, 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 Wednesday, 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 satisified 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.

The times listed above are in Israel Daylight Time, which corresponds to the instructors' 16:59 Eastern Daylight Time in Boston, USA.

Course Communication

Assignment Schedule

Week # Start Date Assignment Due Lecture notes
00 26 May L00 L01
01 02 Jun setup L02 L03
02 09 Jun E0 L04
03 16 Jun L05 L06
04 23 Jun P0 L07 L08
05 30 Jun E1 (due Tuesday) L09
06 07 Jul L10 L11
07 14 Jul P1 L12 L13
08 21 Jul Midpoint Presentation L14 L15
09 28 Jul E2 L16 L17
10 04 Aug P2 L18 L19
11 11 Aug L20 L21
12 18 Aug F0 L22 L23

After the regular semester and final examinations are concluded, students will be required to complete and submit their F1 and final presentation by 30 September 2024.

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


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