This course uses an operating system (such as UNIX) as an example to teach the internal workings of Operating Systems. The material presented is more practical than the other Operating Systems related classes. The laboratory component of this course provides programming projects involving modifications to an operating system kernel (such as UNIX) on computers dedicated to use for this course. Topics covered include building the Operating System kernel, the system call interface, process management, kernel services provided for processes, the I/O system, the internal workings of the file system, device drivers, and the kernel support of Interprocess Communications.