This course aims at providing the fundamental notions about the role of the operating system (OS) within the architecture of a computer system, about the tasks the OS has to carry out and about its implementation. As to exemplifying general concepts in practice, the course mainly refers to personal computer platforms and to the relevant most known operating systems (Microsoft Windows, Linux, MacOS). Moreover the course provides an introduction to system shell programming through specific lab activities.