Course Objectives

This course covers the principles of operating systems. It
emphasizes the basic concepts of OS kernel organization and structure,
processes and threads, concurrency and synchronization, memory
management, file systems, and communication. It is also a project
course, providing essential experience in programming with
concurrency, implementing and unmasking abstractions, working within
an existing complex system, and collaborating with other students in a
group effort.

Course Organization

The course is organized as a series of lectures by the instructor,
discussion sections by the TAs, reading, homework, and project
assignments, and exams:

Lectures: The lectures present the core of the material.

Sections: The discussion sections are
given by the TAs to answer questions about the lecture, textbook
readings, homework assignments, and project assignments.

Readings: The readings in the textbook provide preparation
and a reference for the lectures. Note, however, that they are
not a substitute for the lectures.

Homeworks: There are approximately five homework assignments with
questions taken from the textbook. The homework assignments are
intended to reinforce the readings and lectures.

Projects: There are three programming projects, all using
the Nachos instructional operating system.

Exams: There are two exams, a midterm exam in the fifth
week and a final exam at the end of the quarter. The exams will cover
the material presented in lecture, the homeworks, and the projects.
You can use both sides of one 8.5x11" page of notes to assist you
during the exams.

Homework

Homeworks are due by the end of class on the day specified. We
will reduce homework grades by 20% for each day that they are late.
You must hand in a hardcopy of your homework; disagreements about the
contents of emailed homeworks have caused too much grief in the past.

I encourage you to collaborate on the homeworks: You can learn a
lot from your fellow students. However, there can be a fine line
between collaboration and cheating. Collaboration consists of
discussing problems with other students and independently writing your
own answers to the problems based upon those discussions; as a rule of
thumb, you should be able to discuss a homework problem in the library
with others, go home, and then write up your answer to the problem on
your own. Cheating consists of looking at other student's homeworks
and copying the answers, looking at past homeworks and/or solutions
from previous versions of the class, searching on the Web, etc. The
consequences of cheating will correspond to the severity (e.g.,
failure of the assignment, failure of the course). Cheating causes
many problems for all of us -- don't do it, and save us all the grief.