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.
We have also developed GradeBoard, a pedagogic grading and classroom management system that integrates the use of Review Board and Git to teach operating systems. GradeBoard is designed to simplify grading for instructors, and enable students to understand and learn from their errors. GradeBoard provides an easy-to-use Web interface that allows instructors to annotate student code submissions with grading comments and scores, and students to discuss the comments and scores with instructors. We have successfully used GradeBoard in a large operating systems course involving our structured Linux kernel programming projects.
Operating Systems I (COMS W4118) is taught by:and