CS 167 is an operating systems course that involves writing five programs of increasing difficulty in C and completing homeworks and exams. Students will build their own operating system by developing a kernel and adding features like virtual file systems and virtual memory. The course requires skills in C programming, debugging, and computer architecture. An operating system provides convenient abstractions of hardware like files instead of disks and threads instead of processors to make the underlying system easier for programmers to use while managing concerns like performance, sharing, security and reliability.