Since Fall of 2006, I have been working with Paul Paulson to integrate Linux kernel programming into CS 411, the Senior-level Operating Systems course here at OSU. Our goals in doing so are to provide students with practical experience working with and programming in a real production operating system and, in addition, to introduce them to the type of collaborative effort that goes into working on a large, open-source project such as Linux.
Students have responded in an overwhelmingly positive manner to the Linux-based course, and, thanks in part to funding from Google and Intel, we are continually trying to improve it. We have currently developed a series of five Linux kernel-based programming projects for the course and are working to develop additional ones.
Based on our success with CS 411, we encourage other CS educators to try a similar approach in their courses. Full descriptions of our projects are available below, along with the grading criteria we use for each one.
- Project 1: System Call
- Project 2: Process Scheduler
- Project 3: Memory Allocator
- Project 4: I/O Scheduler
- Project 5: RAM Disk Driver
- Linux Kernel Projects for an Undergraduate Operating Systems Course. Rob Hess and Paul Paulson. In Proc. 41st ACM Technical Symposium on Computer Science Education (SIGCSE), 2010.