CS 372H, Spring 2010: Introduction to Operating Systems:
Honors

Latest Announcements

5/19: Final grades submitted to registrar.

Have a nice summer!

5/19: Exam scores and final project scores posted on egradebook

The comments on those assignments on egradebook give you some information about the grading. Here is roughly what it says. For the final exam, the mean was 69.55, the standard deviation was 11.79, and the high score was 93.5. For final projects, we graded them with letters and then mapped them to particular numbers. The mapping is listed on egradebook. By the way, many of you did a really nice job on the projects. We (Namrata and Mike) were both excited and impressed by what you put together.

Note, though, that this year's exam may not hew closely to the format of the samples.

5/13: Final will be closed book, but you can bring TWO two-sided sheets of notes

As with the midterm, you may bring sheets of notes. Note that whereas for the midterm you had ONE two-sided sheet, for the final, you may bring TWO two-sided sheets, for a total of four sides of printing. As with the midterm, we have formatting requirements for each sheet. Here they are: Times New Roman font, minimum 10 point font, minimum 1 inch margins on all sides, maximum 60 lines per side (which is a busy single-spaced sheet). Please do not exceed 1 inch margins, even if it means that you cannot fit 60 lines per side. If you use handwriting, same deal: your handwriting should be no smaller than 10pt, your margins should be at least 1 inch, etc., etc.

5/11: Office hours during finals

Here are the remaining office hours:

Friday, May 15: 2:00--3:00 PM (Mike)

Monday, May 17: 4:00--6:00 (Mike)

If neither of these times works for you, you can either bring your question to Sunday night's study session or email to set up an appointment. We are excited to discuss the course material and help you prep for the exam, so if you have questions or uncertainties about the material, definitely drop by. However, please do not ask questions of the form, 'Do we have to know X?' or 'Will Y be covered?' The answer to these questions will always be the same: if it was covered by the course material, it is fair game for the exam.

Description and goals

This course is an introduction to operating systems.

The goals are for you to learn three sets of interrelated things. The
first thing is how operating systems and, more generally, computers
work. A student graduating with a CS degree should believe "there is no
magic": they should be able to describe the chain of events that occurs
when they hit a key and cause a letter to appear on the screen from the
register level (or logical gate level or transistor level) to the system
architecture level to the operating system level to the application
level. This is philosophically important, but it is also of practical
interest to developers who need to figure out how to make a system do
what they want it to do.

The second goal is for you to learn the core ideas in operating
systems: virtual addressing, memory protection, concurrent programming,
file systems, scheduling, transactions, etc. Often, but not always, such
ideas are best explained as abstractions that some software layer
(usually
the operating system) provides above imperfect hardware to make that
hardware
usable by programmers and users. The intent is for you to understand
such abstractions well enough to be able to synthesize new abstractions
when faced with new problems.

Many of the ideas and abstractions that we will cover are relevant
not only to OS kernels but also to many large-scale systems. Thus, a
third goal of this course (which is more like a beneficial side effect)
is to enhance your ability to understand, design, and implement such
systems.

The work

The readings are summarized below. The assigned readings
should be completed before class.

The labs are a crucial component of this course and
are described in more detail here. You will
implement (the interesting pieces of) a real operating system that will
boot on a PC.

The homeworks will not count for your grade but rather will
be exercises that are just that: exercises. (These homeworks shouldn't
be confused with the labs, and their included exercises, which do count for
your grade.) The intent is for you to use
them as self-exams to assess your understanding of the material, and
evaluate your performance, all without affecting your grade. Of course,
the lack of an actual grade or a deadline for completing these problem
sets may be an invitation for procrastination or even ignoring this
process altogether. But we trust that you will find this a useful aspect
of the class and we strongly urge you to take advantage of it. To make
effective use of this feature, complete the homeworks by the specified
deadline. Delaying the homeworks with the intent of accumulating them
and solving them at once before the exams is not likely to be an
effective strategy.

A note about the labs

We recommend that you start the labs early!

Readings

Required: Modern Operating Systems (third edition), Andrew S. Tanenbaum.
(Prentice Hall, Inc., 2008. ISBN: 0-13-600663-9.) There will be assigned
readings from this book. If you don't want to buy this edition, note
that it is on reserve at PCL. Also, the second edition of the book
will probably be fine, but we cannot guarantee that.

Required: Assigned handouts

Optional: Operating System Concepts (eighth edition), Abraham
Silberschatz, Peter Baer Galvin, and Greg Gagne. (John Wiley & Sons,
2008. ISBN: 0-47-012872-0.) This book may be a useful reference. It too
is on reserve at PCL.