I have spent almost thirty years supporting, maintaining, enhancing, describing, designing, dissecting, reviewing, guiding, eulogizing and teaching Operating Systems. I have dedicated my career to operating systems, I love teaching, and I especially love teaching operating systems. I teach this course because I love the material and because I care about helping the next generation of engineers master it.
Most of you are only going to take this course because it is required. Some of you probably suspect that the only reason it is required is "because it has always been required." In actuality, Operating Systems are the battle-field where we have been forced to confront all of the hardest problems in synchronization, data sharing, virtual resource management, network protocols, and hardware/software interfaces. The principles that have emerged from those experiences can be applied to almost every area of software design, and a non-small range of hardware design problems. That is why this course is required, and why I think it is worth teaching.
My job is to help you understand those problems, the solutions, and the applicability of those lessons to other problems. This course covers a huge amount of non-trivial material, and I can't make it simple. What I can try to do is make it comprehensive, relevent, clear, ... and maybe interesting.
(actually, I teach this course for fun ... but that other stuff sounds so much better :-)
What you need to know
If there is only one thing you need to know about this course, it is that it will be much more work than you anticipate! Students are usually pressed for time. This inclines them to defer reading, homework, and project work. Operating Systems is a concept-intensive course, where the reading, lectures, homework, and projects all work together. If you neglect one, you will have trouble with the others. If you keep up with the assignements this is not a difficult course. If you put it off for even a few weeks, you may find it very difficult to catch up again.
General Administrative Information
Information on the course goals, contents and administrative procedures for the course can be found in the slides for the first lecture.
Lecture and Assignment Schedule
Lecture Notes
The slides are somewhat more detailed that I would normally use for a presentation. This is because I also want them to help you in reviewing and studying the lecture material. Not all of the posted slides will be used in lecture. Some (whose titles are in parentheses) elaborate on figures, and are provided to help you when you review the material. Others (after the key points slide) are supplementary material that may be used for deeper or tangential discussions.
You are free to print off and study slides for any lecture any time, but it if you print out slides well in advance of the associated lecture you should recheck them shortly before the lecture. I occasionally update slides durring the quarter.
Quizzes and Examinations
Homework
Pre-Requisites
This is a very difficult class (reputedly the most difficult course in the entire computer science program). I do not strictly enforce pre-requisites, but people who are not adequately prepared for this course usually wind up dropping it after weeks of hard work when they finally realize that they can't keep up, much less catch up.
Permission To Enroll
I cannot guarantee a spot to anyone who is not already in the class, but historically a large number of students who are currently enrolled in the course will drop durring the first two weeks. If there are still openings (or open slots on the waiting list) in another section, you might be better off signing up for that section.
Confusing Subjects
Grades and Grading
Most people do very well on the projects (median scores in the 90s) and very poorly on the final (median scores in the low 60s). Median exam scores are typically between 75 and 85. Quizzes only count for 10% of your final grade, but they turn out to be a very good predictor for how you will do in the course.
I do award final grades on a curve, but that curve always seems to fall within 2-3 points of 90/80/70/60. A typical grade distribution for the class might be 20% As, 40% Bs, 30% Cs, 10% Ds. There are usually one or two F's.
I am always willing to fix arithmetic errors in computing your score on any assignment, and I will occasionally regrade a question if I misunderstood your answer (but not if your answer was unclear). If I make a mistake in a question (making it too hard to answer correctly), I will generally find a way to compensate you for the loss. Other than that, you get the grade you earned.
I never change grades in response to excuses or hardship stories. If you don't work hard enough, and then contact me after the course is over to tell me that you are going to lose your scholarship, or your place in grad school, or get kicked out of the university, I will explain to you (in great detail) how you earned the grade you received, and then give you a stern lecture on personal responsibility. You get the grade you earn. If you need better than a D in this course, you will need to earn it.
Last updated: November 03, 2008