This course is an introduction to the basic concepts of operating systems, with both theoretical and practical issues being considered. Upon completion of the course, the student should understand the fundamental concepts and issues involved in operating systems design, and know about the basic services provided by operating systems in general. Topics include process description and control, deadlock, process scheduling, threads, SMP, partitioning, paging, segmentation, memory management algorithms, disk scheduling and file systems. In addition to theory and concepts, specific implementation-related information is covered using the Linux Operating System.