CS230/330 : Operating Systems (Winter 2002)

Instructor

Name: David Beazley
Office : Ryerson 257B
Phone : (773) 702-9111
email : beazley@cs.uchicago.edu
Office hours: Whenever I am around (which is most of the time) or by appointment

Teaching Assistants

Graders

Class Information

Overview

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 and to prepare you for future work in systems research.

Prerequisites

Textbooks

Required We will cover at least the first four parts of the book (chapters 1-14), with selected topics from part 6 (protection and security).

Recommended

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

Grading Structure

Grading Scale

Graduate Credit

There are no extra course requirements for graduate students. However, graduate students are held to a much higher standard when grading the kernel project. Undergraduate students electing to take the course for graduate credit will be held to this higher standard and may receive a lower grade if their work is not comparable to that of the graduate students.

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 set of Sun Solaris machines are used for this class. These machines are only available to students in CS230/330 and are intended to provide an environment in which you can experiment without receiving the wrath of annoyed system administrators. The names of the class machines are as follows: Three of these machines are located in Ryerson 257 and can be used at the console. Otherwise, all of the machines are remotely accessible via 'ssh'.

A few words about the project

Operating systems is a very demanding course that requires dedication and a significant amount of programming. Most of your grade in this course is determined by a class project in which you will work in groups to implement a fully-functional operating system kernel. Everything you might have heard about the project is 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 project.

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

Midterm and final code review

Part of your grade is determined by a midterm and final code review. For these code reviews, your kernel project group will meet with myself and the TAs to discuss your project. In the review, you may be asked to describe certain aspects of your kernel implementation and design. We may also ask questions about how you might modify your kernel to accomplish certain tasks. The primary goal of these code reviews is to check on your progress and to identify potential problems that would prevent you from successfully finishing the project. The reviews might also be used to identify project slackers (see below). Of course, this obviously doesn't apply to anyone in this class.

Programming languages

The programming language used in this course is ANSI C. Although C++ could probably be used, most programmers don't understand C++ well enough to use it in this class without blowing their whole leg off. Therefore, it may not be used. We will provide some assistance to get you started with C. However, you should consider getting the book "The C Programming Language" by Kernighan and Ritchie if you don't have it already.

How to fail

Despite the difficulty of this course, only a handful of students have ever failed. All of them failed because they simply didn't do any work on the project or they let the rest of their group do all of the work (while they sat around and goofed off). Be aware that even if your project partner earns an A, you can still get a well-deserved F for lack of participation. Please don't become the newest member of this "elite" club.

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.