We introduced a new approach to managing and grading operating system homework assignments based on virtual appliances and a distributed version control system. Our solution is easy to deploy and use with students’ personal computers, and obviates the need to provide a computer laboratory for teaching purposes. It supports the most demanding course projects, such as those that involve operating system kernel development, and can be used by both on-campus and remote distance learning students even with intermittent network connectivity.
Building on this infrastructure, we have developed a set of pedagogically-effective kernel programming projects for both Linux and Android suitable for a one semester introductory operating systems course. Each assignment introduces students 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 experience managing production code complexity. We have successfully used these structured kernel projects to teach over a thousand students in the introductory operating systems course at Columbia University.
More Info
Operating Systems I (COMS W4118) is taught by: Prof. Jason Nieh and Prof. Junfeng Yang
