Systems Engineering


This undergraduate course is a hands-on class based on a MIPS emulation and operating system framework capable of running System-V/o32 compatible code. Students develop solutions to problems such as kernel/userspace interaction, resource management, process isolation, and inter-process communication on a virtual machine and host their software on GitHub. We thank GitHub for supporting us!


Time, Location: Thursday 2-4 in T02. First class is on Thursday, October 2, 2014. Check the schedule (iCal) for updates.

Topics

The course provides a hands-on introduction to basic operating system concepts. Covered topics include interrupt handling, scheduling, kernel space, user space, system calls, processes, and virtual memory. The course also provides an introduction to the MIPS instruction set architecture and a common (System-V/o32) calling ABI.

Concept

The course is not based on any existing textbook but instead makes use of an emulation framework that hosts kernel code in the emulator itself, effectively circumventing the problem of self-referentiality (and bootstrapping) of operating systems. The course focuses on principles, such as isolation and resource management and their solutions (scheduling, virtual memory), rather than the complexity of running on actual hardware. Students provide solutions by implementing them in the kernel of the emulator.

Goal

At the end of the course students will be able to appreciate principled engineering of operating systems but also know how to engineer one and, as a consequence, through insights in concurrency, memory, file, and system management that only an operating system can offer, become fundamentally better programmers and computer scientists.