CS23000/33000 : Operating Systems (Winter 2004)


Name: David Beazley
Office : Hinds 032
Phone : (773) 702-9111
email : beazley@cs.uchicago.edu
Office hours: By appointment.

Teaching Assistants

Class Information


The primary objective of this class is to cover concepts central to the design and implementation of modern operating systems. Topics include but are not limited to processes, threads, memory management, file systems, interprocess communication, I/O systems, scheduling, synchronization, and security. A secondary objective of this course is to give you some experience working on a substantial software project.



Required We will cover at least the first four parts of the Silberschatz book (chapters 1-14).


The following books are not required, but you may want to get them if you are unsure about your preparation for this class.

Grading Structure

Grading Scale

Graduate Credit

Graduate students will be required to perform extra work on the projects and may have additional questions on the exams. If you are taking the course for graduate credit, your projects must minimally pass all public tests to earn an A in the course.

Class Accounts

To access the class machines, you will first need to obtain a CS account. Please go to http://www.cs.uchicago.edu/info/services to obtain an account. A dedicated Sun Solaris machine (stonecrusher.cs.uchicago.edu) is used for most of the work in this class. This machine is only available to students in CS23000/33000 and is intended to provide an environment in which you can experiment without receiving the wrath of annoyed system administrators. Access the machine using 'ssh' from any of the department machines.

A few words about the projects

Operating systems is a very demanding course that requires a significant amount of programming. Most of your grade in this course is determined by class projects in which you will work in groups to implement a fully-functional operating system kernel. Everything you might have heard about the project is probably true. Therefore, even though I will not be assigning daily busywork, you should plan on spending a considerable amount of time working on the project. Also, be advised that you will not pass the class unless you receive a passing grade on the projects.

With this said, here are few things to keep in mind:

Programming languages

The programming language used in this course is ANSI C. The following coding guidelines must be followed:

Academic Dishonesty

You are encouraged to interact with your classmates and to discuss various design aspects of the projects and assignments. However, the work you hand in must be your own. Blatant copying or sharing of solutions or source code will result in an F in the course and referral to the college administration. Also, be advised that the operating system project changes from year-to-year. Therefore, past "solutions" to the project are of questionable utility.

Taking care of your health

The best way to complete the OS class project is to make steady daily progress. However, some students have the mistaken assumption that they can simply finish each part of the project a couple of days before the deadline in some kind of frantic coding marathon. This is NOT a pretty sight! Aside from the obvious loss of sleep, waiting to the last minute has caused some students to suffer from repetitive stress injuries. Don't let this happen to you.

Where to go for help

Operating systems is traditionally one of the most challenging computer science courses. Do not hesistate to see me or the TAs if you have any problems or concerns. Our goal is to make sure that you succeed in this class.