CS-537: Introduction to Operating Systems

University of Wisconsin, Madison
Department of Computer Sciences
Fall 2004

Basic Information

Lecture: Tuesday and Thursday at 9:30am - 10:45am
Where: In 1101 Humanities (wherever that is) ( timetable entry )

Professor: Remzi Arpaci-Dusseau (my email is just my first name followed by the @ symbol followed by cs.wisc.edu)
Office: 7357 Computer Sciences
Office Hours: TBA

Office: TBA
Office Hours: TBA
Office Phone: TBA

Class News

8/30: The home page is up!


Welcome to an introduction to operating systems! This course will introduce you to an exciting range of materials from the broad field of operating systems, including basic operating system structure, process and thread synchronization and concurrency, file systems and storage servers, memory management techniques, process scheduling and resource management, security, and a few other "hot" topics. What's particularly interesting about this course is that it is one of the few places where you get to learn how stuff really works!

This course assumes familiarity with basic computer organization (e.g., processors, memory, and I/O devices as covered in cs354) and data structures (e.g., stacks and hash tables). You will need to be able to program in C to perform the assignments in the course. If you don't have much experience in either language, don't worry, we will spend some time covering background, but of course, learning on your own is important and valuable (in this class and in real life). For those of you who are new to C (e.g., you just know Java), realize this is an opportunity to broaden your skill set!

Mailing Lists

Important announcements will be sent to the class mailing list, so please read your mail frequently (particularly around project time)! You are responsible for the material sent to that list. The mail sent to the class list is also archived. Note that if you are not officially enrolled in the class, we cannot add you to this mailing list because it is automatically generated by the CSL. Talk to them if you are having trouble.

The mailing list for the course is cs537-1list@cs.wisc.edu. Any mail sent to this list will be sent to the entire course. The log of email is available at this url.

The mailing list for project questions is cs537-question@cs.wisc.edu. Any mail sent to this list will go to the professor and TA. During project times, it may be wise to peruse the mail log, which can be found here.


I do not mandate a particular textbook on operating systems -- there are many possible alternatives, all of which are reasonable, none of which is perfect. I recommend coming to class and following my notes (which will be made available online as well). Read the book in the background (e.g., after we cover a topic in class), both to fill in your knowledge, as well as to get a different perspective on operating systems.

Any of these books are fine:

Others may be fine too -- just ask.

You must use C on the system programming assignments in the class. The best C book in the world is Kernighan and Ritchie's beautifully sparse The C Programming Language. It is worth purchasing. Also useful is Expert C Programming by Peter Van der Linden. Finally, if you are interested in mastering the Unix programming environment, the absolute bible is Advanced Programming in the UNIX Environment by the late, great W. Richard Stevens. Buy this book too; it is worth every penny.

Here is a short, free overview of the C programming environment by y.t., available for your viewing convenience in both Postscript and PDF.


As part of the course, you will complete four or five programming assignments. You may perform these projects on PCs running the Linux operating system.

New Unix users and novice Unix users new to the CSL Unix facilities are encouraged to attend an orientation session as early in the semester as possible. You may also purchase a copy of CS 1000 (An Introductory Manual to the Unix Operating System and the Computer Sciences Department's Instructional Computing Environment) at the DoIT Tech Store (first floor of the Computer Sciences and Statistics Building).

The projects are a fundamental part of this course. Although the first assignment will be relatively easy, the remaining projects each require a significant amount of time, so do not procrastinate! It is likely things will take longer than you expect. Do not wait until the day before the assignment is due to start. These assignments should be started well over a week before they are due. All information necessary to complete the assignments will be available from the class web page.

If you plan to perform software or hardware development after graduation, you will need to know how to work well within a group. Therefore, for all projects after the first assignment, we will assign you to groups of two students. Team members will all receive the same grade on the programming assignments.

As stated above, all of the assignments will be in C and not Java. We assume that you have enough programming background that learning the basics of a new language (if it is indeed new to you) will not be difficult. C is actually quite similar to Java, as those who came up with Java were C experts.

For the projects, you will be graded on how well your implementation works. We will test your program on a suite of input sets. Your grade will be based on how many of the tests your application passes and how well you are able to answer our questions about the program; we will only briefly examine your code to ensure that you followed the specifications of the assignment.

Questions about projects should be sent to cs537-question@cs. Those queries (and responses) are archived at this url.


There will be some exams to test your knowledge. The exams will be closed book, and will cover material from class and the projects.

The first midterm will be held Thursday, March 14, in class.

For each exam, a single page "cheat sheet" (8.5 by 11 inches) is allowed, and you can use both sides; exams are otherwise closed-book and closed-note.


Projects are worth 50% your total grade, and the exams are worth the other 50%.

Tentative Schedule

Here is a tentative schedule of what class will cover:


If you have questions or comments or just are up late, send mail to Remzi Arpaci-Dusseau; I may even reply.