We aim to introduce students to the concepts, tools, and framework necessary for independent work on the Linux kernel.
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.
Students will:
Stretch their C programing skills to the limit
Create, develop, and test interesting and creative Linux kernel modules
Develop the ability to autonomously participate in the open source software community
Learn how to give and recieve feedback on code patches
Demonstrate the ability to explain your code and your knowledge of Linux in your own words
A Linux environment to which you have root access and ideally physical access.
Patience, determination, and an ability to focus on a frustrating task for sustained periods of time.
All assignment due dates are in EST(UTC-5)
# | week starting | S | M | T | W | R | F | S | Initial Submissions due @ 23:59 (Mondays unless stated otherwise) | Reviews due @ 23:59 (Tuesdays unless stated otherwise) | Final Submissions due @ 23:59 (Wednesdays unless stated otherwise) |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 15 Jan | L0 | A0 due Thursday | A0 due Friday | A0 due Saturday | ||||||
1 | 22 Jan | L1 | L2 | ||||||||
2 | 29 Jan | L3 | L4 | A1, A2 | A1, A2 | A1, A2 | |||||
3 | 5 Feb | L5 | L6 | ||||||||
4 | 12 Feb | L7 | L8 | A3 | A3 | A3 | |||||
5 | 19 Feb | L9 | L10 | A4 due Tuesday | A4 due Wednesday | A4 due Thursday | |||||
6 | 26 Feb | L11 | L12 | Choose Mid Pres Topic | |||||||
7 | 5 Mar | BREAK | BREAK | BREAK | |||||||
8 | 12 Mar | L13 | L14 | Mid Pres Recording | |||||||
9 | 19 Mar | L15 | L16 | A5 | A5 | A5 | |||||
10 | 26 Mar | L17 | L18 | ||||||||
11 | 2 Apr | L19 | L20 | A6 | A6 | A6 | |||||
12 | 9 Apr | L21 | L22 | ||||||||
13 | 16 Apr | L23 | L24 | Fin1 | Fin1 | Fin1 | |||||
14 | 23 Apr | F0 | F1 | Final Presentation Guidelines | |||||||
15 | 30 Apr | F2 | Fin2 | Fin2 | Fin2 |
Course Policies | Submission Guidelines | Peer Review Process |