CS 439, Spring 2013: Principles of Computer Systems

Latest Announcements

5/17: Final grades have gone to the registrar.
5/7: Notes from the review session are posted on the schedule page.
5/3: Final will be closed book, but you can bring TWO two-sided sheets of notes
As with the midterms, you may bring notes. Note that whereas for each midterm you had ONE two-sided sheet, for the final, you may bring TWO two-sided sheets, for a total of four sides of printing. As with the midterms, we have formatting requirements for each sheet. Here they are: Times New Roman font, minimum 10 point font, minimum 1 inch margins on all sides, maximum 55 lines per side (which is a busy single-spaced sheet). Do not exceed 1 inch margins, even if it means that you cannot fit 55 lines per side. If you use handwriting, same deal: your handwriting should be no smaller than 10pt, your margins should be at least 1 inch, etc., etc.
5/3: Location of study/review session: WEL 2.308
4/30: Date and time of study/review session for final and last-minute office hours
The study/review session for the final will be Tuesday, May 7, 6:00-8:00 PM. Location TBD. Mike's last-minute office hours will be Thursday, May 9, 4:00-5:30 PM.
4/25: May 6 is the last day to turn in any lab
Recall that we accept late labs (with penalty). The final deadline for any late lab is Monday, May 6, 11:59 PM (the same time that lab 8b is due). We will not accept lab submissions past that time.
4/25: Lab 8 late policy
Lab 8a has the usual lateness policy (late hours, etc.). However, lab 8b cannot be turned in late: you cannot use late hours, nor can you turn in the lab late for a grade penalty.
4/24: Lab 8 due dates moved later
Lab 8a is now due on Monday, April 26, and lab 8b is now due on Monday, May 6.
4/23: Final exam will be Thursday, May 09, 7:00-10:00 PM, GSB 2.124
4/22: Office hours schedule change
Please see Piazza for the office hours schedule for the next two weeks

See all announcements RSS 2.0 feed

This is the Web site for Mike Walfish's Tuesday and Thursday CS439 section; see here for Alison Norman's Monday and Wednesday CS439 sections.

Course information

Meetings Communication

If you have questions or would like help, please use Piazza (preferred) or the staff email list, given below. This ensures that responses are timely and consistent. Please do not email TAs or the instructor individually; emails so addressed may be dropped.


Description and goals

This course is an introduction to computer systems, with operating systems as a major case study.

The goals are for you to learn three sets of interrelated things. The first thing is how computers work. Students graduating with CS degrees should believe "there is no magic": they should be able to describe the chain of events that occurs when they hit a key and cause a letter to appear on the screen from the register level (or logical gate level or transistor level) to the system architecture level to the operating system level to the application level. This is philosophically important, but it is also of practical interest to developers who need to figure out how to make a system do what they want it to do.

The second goal is for you to learn the core ideas in operating systems: virtual addressing, memory protection, concurrent programming, file systems, scheduling, transactions, etc. Often, but not always, such ideas are best explained as abstractions that some software layer (usually the operating system) provides above imperfect hardware to make that hardware usable by programmers and users. The intent is for you to understand such abstractions well enough to be able to synthesize new abstractions when faced with new problems.

Many of the ideas and abstractions that we will cover are relevant not only to operating systems but also to large-scale systems. Thus, a third goal of this course is to enhance your ability to understand, design, and implement large-scale systems.

The class encourages "learning by doing." The programming assignments will be substantial. This is a necessity: you will realize that you do not really understand many of the ideas above until you have had to implement them or at least work through them in code.

Prerequisite: CS429 or CS429H with grade at least C-.

The work

The class consists of lectures, discussion sections, labs, exams, readings, and homeworks:

We will assume that you check the announcements (either on this site or by RSS) every 24 hours. Also, we will use Piazza and occasionally email you (for the most urgent communications). You are responsible for monitoring all three of these media.

A note about the labs

We recommend that you start the labs long before they are due. The standard advice is "Start the labs early," but that is not quite right. The best advice that we know of is "Start the labs on time, but on time is probably much earlier than you think."


All of the texts below should be on reserve at PCL. We made the reserve requests in the first week of class. If you have problems retrieving the books, please let the course staff know.


We are indebted to the present and past staffs of related courses here (CS372, CS439 f12, CS439 s12) and elsewhere: MIT, UCLA, and Stanford.

Last updated: Fri May 17 08:23:28 -0500 2013 [validate xhtml]