Ideally, the most meaningful learning experience for students in an undergraduate OS course would be to develop fully functional OS's on their own. This can be accomplished using µMPS, a hardware emulator for a pedagogically undergraduateappropriate hardware architecture, along with Kaya, a specification for a multilayer OS supporting multiprocessing, VM, thread synchronization, external devices (disks, terminals, tape, printers, and network interfaces) and a file system. Traditional OS projects like Nachos or OS/161 provide students with a significant starting code base. Students then modify existing OS modules or add new ones. With µMPS/Kaya students undergo an innovative and pedagogically different experience of starting only with a hardware emulator (i.e. no initial OS code base for students to build on/replace) and ending with a completely student written OS capable of running student written C programs.