This course deals with the conceptualization of the components involved in designing a contemporary OS and determine the various ways of structuring an operating system. It discusses the handle processes, threads, and their communication and solves some of the common operating systems problems such as deadlock and synchronization and various techniques of allocating memory to processes and realize the role of virtual memory