This course covered the core abstractions behind modern operating systems: processes, scheduling, synchronization, memory management, filesystems, and I/O. The main hands-on component was a sequence of C programming labs using UMIX, a small teaching OS that runs in user space but exposes kernel-like interfaces.
Most of the work went into progressively extending UMIX with real OS mechanisms: context switching, scheduling, synchronization, and user-level threads.
Unfortunately, I no longer have access to the course materials (Canvas, GitHub, etc.), so I can’t share specific projects or assignments from this class.