We used this set of labs as the basis for the master's OS course at UW. They're fantastic and fairly straightforward, providing scaffolding and then having you implement basic versions of interesting OS facilities like context switching, exception handling, interrupts, scheduling, RPC. Really rewarding (and sometimes quite painful - debugging an errant OS can be quite a bitch).