Operating systems are central to computing activities. An operating system is a program that acts as an intermediary between a user of a computer and the computer hardware. Two primary aims of an operating system are to manage resources (e.g. CPU time, memory) and control users and software. Operating system design goals are often contradictory and vary depending on the user, software, and hardware criteria. This course aims to provide an introduction to the internal operation of modern operating systems. In particular, the course will cover processes and threads, mutual exclusion, CPU scheduling, deadlock, memory management, and file systems. In the lab sessions, students will learn the basic operations of the Linux operating system.