CPSC 331: Operating Systems

   Winter, 1996.

   Instructor:  David J. Eck.

   Monday, Wednesday, Friday, 10:40 -- 11:50.
   Eaton 105.

About CS331

Operating systems are among the most complex computer programs in existence. Without them, computers would be extremely difficult to use, and in fact, modern computing as we know it would be impossible.

An operating system has four major areas of responsibility: process control, memory management, file systems, and input/output. We will spend much of the course studying each of these areas in turn. There is very little deep theory in any of these areas. Mostly, we will be concerned with the major problems in each area and with some specific techniques that have been developed to solve these problems.

The text for the course is Modern Operating Systems, by Andrew S. Tanenbaum. Tanenbaum probably writes better than any other author of computer texts on technical subjects. The book is both readable and thorough. Modern Operating Systems is divided into two parts. The first covers traditional operating systems that were designed for a computer with a single CPU; the second covers distributed operating systems that are meant for use on multi-processor computers and on networked computers. We will cover most of the material in Part 1, omitting some technical sections and perhaps the chapter on MS-DOS. I expect to cover UNIX in somewhat more detail than does the text, and I hope to add some material on Windows NT. In whatever time remains, we will cover selected material from Part 2. I encourage you to read the entire text, even though there are parts that we will not cover in class.


There will be three tests in this course, including a final exam. A course in operating systems is, of necessity, rather technical. It important for you to learn the definitions, basic algorithms, and fundamental concepts. Tests are a way of making sure that you do so.

The two in-class tests will be given on Monday, January 29 and Friday, February 23. The final exam will take place during the regularly scheduled final exam period for this course: at 1:30 PM on Friday, March 15. The final exam will be cumulative.


I will assign written homework each week. Most of the questions will be taken from the text. I expect you to write up your answers to these questions clearly and carefully, in full English sentences and paragraphs. I will not accept homework late, except in extraordinary circumstances.

Programming Assignments

I will ask you to write some programs simulating certain aspects of operating systems, such as process control and virtual memory. You can write your programs in either Pascal, C, or C++. All programs must be written in good style, including commenting, indentation, and general program design. You should work on your programs yourself, with no help from other students in the class. Programs turned in up to a week late will lose 20% off their grade. Programs will not be accepted more than one week late.


Each of the two in-class tests will count for 18% of your grade. The final exam will contribute another 24%. The remaining 40% will be based on homework and programming assignments.

Office Hours and Email

My office is room 301 in Lansing Hall. My office phone extension is 3398. I am on campus most days, and you are welcome to come in anytime you can find me there. I will announce regular office hours (when I promise to try my best to definitely be in my office) as soon as I schedule them.

My email address is ECK (or eck@hws.edu from off-campus). Email is good way to communicate with me, since I usually answer messages the day I receive them.

A Very Tentative Schedule

This is an ambitious schedule, including everything that I would like to cover in the course. We will probably not be able to cover everything here, so don't be surprised if we have to omit some sections along the way and at the end of the course.