Operating Systems

Operating systems are an essential part of any computer system. Similarly, a course on operating systems is an essential part of any computer-science education. The field is undergoing change at a breathtaking rapid rate, yet the concepts remain fairly clear. This course offers a study of the components of an operating system. In this course, a background for computer-systems and operating systems structures is first given. Topics in this course include management of and communication between concurrent processes, threads, scheduling, synchronization, deadlocks, virtual memory, and file management. Time permitting the course covers distributed systems and security. The course includes several major projects which allows students to get their hands dirty- either take apart the code for the NACHOS operating system, change the Linux kernel or use simulation. The main objective is to have a deep insight on how operating systems work at a low level by building significant pieces of the operating system themselves, and observe the effects of their work. It also includes several other programming assignments, mainly socket programming and process synchronization. Further, students write and present a paper on a topic of their choice. This improves their research, writing and communication skills.

Course announcements, power point lectures, homework, demos...etc. are on Blackboard

Projects with Raspberry Pi