Learning, understanding, and implementing operating system fundamentals, including process and thread management, concurrency with semaphores and monitors, deadlocks, storage management, file systems, and I/O. Hands-on experiences of operating system design and implementation and how it impacts application systems design and performance.