About the course
After you have mastered the basics of dressing, eating, grooming, and basic conversation, few things are as useful in life as an understanding of operating systems. From understanding why adding more memory makes your system run faster to arguing over Android versus Meego on your mobile phone, hardly a day goes by that some degree of proficiency in operating systems is not helpful. Moreover, people who study operating systems generally earn more, live longer, and are better looking than those who do not.
This course is about operating systems. We will cover how that "first program" gets run, how it runs other programs, and how it provides programs with access to system resources. Topics include a discussion of process scheduling, memory management, devices, file systems, networking, and security. We will also study virtual machines, virtual storage, and issues related to mobile devices.
I don't expect you to find all the material interesting but my hope is that each student will find some parts that are interesting and/or useful. If you feel that there is a pertinent area that you would like to see covered, please let me know.
I have been teaching distributed systems every year since 1997. While I taught operating systems from 1995 to the spring semester of 1997, that was so long ago that I redid the course from scratch in the fall of 2010 and expect to modify and improve it each semester. A tentative syllabus can be found at http://www.cs.rutgers.edu/~pxk/416/syllabus.html. It will most likely change a little depending on how long it takes to cover the topics and whether I change my mind. I will update the web page as the course progresses.
Course information can be found on my main course web page http://www.cs.rutgers.edu/~pxk/416. The links on that page will take you to prerequisites, homework assignments, exam info, and course policy. Be sure to check out the policy and prerequisites at the start of the course to avoid problems. The link at the bottom will take you to a news page (the link text will state when it was updated). This page will contain a running list of announcements such as homework assignments, exam announcements, corrections, and random comments. Please make a point of checking this page.
The textbook for the course is Operating System Concepts Essentials by Abraham Silberschatz, Peter B. Galvin, and Greg Gagne; see Things you need. I will be creating lecture notes as the course progresses and make them available in the Documents link. Please let me know of any errors, omissions, or unclear descriptions.
While the lecture notes attempt to cover most material that will be presented, I cannot guarantee that they will cover all of the material. The course is not a correspondence course. You are responsible for attending class and for all the material presented in class.
exams and assignments
In order for me to be able to give you a grade in this course, you will have a number of homework assignments, programming projects, exams, and possibly quizzes. My goal is not to torture you but to give you an opportunity to play with some of the material presented and for me to get enough material from you so that I can give you a fair grade without your performance determined by a single exam.
Since this is a fourth year computer science class, I expect that you have reasonable proficiency in programming C programming. You cannot pass the course without completing the programming assignments. There will be an exam given roughly every third lecture for half a lecture along with a final exam. All exams will be weighted equally and the lowest grade will be dropped. My hope is that enough of you will do well in the course that you will not have to take the final exam. Largely to reward attendance and to ensure that you're not completely asleep (since it is a late class), I may choose to give a few quizzes. These will be intended to be quite easy and you will be able to complete them during the lecture using information obtained from the lecture.