Structured Linux Kernel Projects for Teaching Operating Systems Concepts

Proceedings of the 42nd ACM Technical Symposium on Computer Science Education (SIGCSE 2011), Dallas, TX, March 9-12, 2011, pp. 287-292


Linux has emerged as a widely-used platform for enabling hands-on kernel programming experience to learn about op- erating system concepts. However, developing pedagogically- effective programming projects in the context of a complex, production operating system can be a challenge. We present a structured series of five Linux kernel programming projects suitable for a one semester introductory operating systems course to address this issue. Each assignment introduces stu- dents to a core topic and major component of an operating system while implicitly teaching them about various aspects of a real-world operating system. Projects are of modest coding complexity, but require students to understand and leverage core components of the Linux operating system. The learning benefits for students from this approach include learning from real-world operating system code examples by expert kernel designers and gaining software engineering ex- perience managing production code complexity. We have successfully used these structured Linux kernel projects to teach over a thousand students in the introductory operating systems course at Columbia University.



Columbia University Department of Computer Science