CPEN 331 (Operating Systems) is a course I completed at UBC. The course primarily consisted of six large projects that lead to creating many aspects of an operating system for os161. This included implementing: conditional variables, semaphores, file_descripters, virtual memory, and many syscalls including sys_fork and sys_execv. UBC provides the following description of the class content:
Operating systems, their design and their implementation. Process concurrency, synchronization, communication and scheduling. Device drivers, memory management, virtual memory, file systems, networking and security.