This course provides an introduction to the concepts, theories and components that serve as the bases for the design of classical and modern operating systems. Topics include process and memory management, process synchronization and deadlocks.