CS 614 is a graduate level course in computing systems, with a strong focus on operating systems and distributed computing. The course is aimed at PhD students seeking broad background in the areas of importance to modern systems researchers, or having an interest in possible research topics. The course involves a considerable amount of reading, and all students who take the class are expected to read the papers for the experience to be satisfactory.  Most papers are chosen from the best conferences and journals in systems, and most are available on-line. The papers we’ll be reading are dense, technically meaty papers and the issues they raise are very broad.  Expect to be challenged both by the amount of reading and by the difficulty of synthesis – placing work into a broader context that makes sense.

The topics we’ll cover span a range of hot areas within modern systems.  The course has three parts.  We'll start out with design and performance considerations of operating systems.  We'll then shift our attention to the design, performance, and scalability of distributed systems.  Finally, we'll look into issues of fault tolerance.  Each lecture features two papers.  The papers were selected to represent the topic of the lecture, and are often related in some way or another.  For example, one paper may be theoretical, while the other practical.  Or one paper may propose a paradigm, while the other critiques it.  Or the paper may propose alternative paradigms for the same problem.

Graduate students need experience lecturing, so we’ll share the teaching load. Ideally, every student in the class will present at least one lecture  – I’ll do some too – although your grade doesn’t depend on doing a talk because the class is a bit large in Fall 2006. Each lecture will consist of a formal presentation, and is expected to go into considerable depth by focusing on some aspect of the material and treating it thoroughly. We’ll be using Powerpoint slides (we'll make the slides available on the web). A presentation will normally last perhaps 30 to 45 minutes.  (Each presenter is required to meet with either me or the TA before class in order to discuss the slides.)  The lecture period will be followed by a broader discussion that I’ll lead (or the TA should I not be able to make class). During the discussion following each presentation, we’ll try to understand the broader context and importance of each result.  All students in the class are expected to participate.

Thorough preparation is mandatory, even if you are not presenting the paper.  Bring notes on each paper to class: assumptions, claims they make, strengths (in your view) and weaknesses.

In addition to reading papers and (if possible) lecturing, each student will do a project and write a high-quality paper about the project.  The paper has to conform to the format and submission rules used by the Symposium on Operating Systems Principles, which is the major conference in this area. Many of the papers we’ll be reading were originally published in this conference.  Tips on preparing a paper appear appear here. The paper will be done in four stages (fall 2006 deadline dates are on the first-day lecture slide set):

Writing
Written work must be your own, original, text -- we expect a high quality of writing similar to what one finds in the papers we'll read in CS614.  Such a paper can only be written if you start with a good outline, think hard about your points, and support them with rigorous arguments (perhaps theory, perhaps experiments, perhaps simulation -- but data, not opinion).  Citing work by others is good and appropriate, but under no circumstances should you cut and paste materials from other sources into your papers, and you must cite all sources for ideas, prior work, or other perspectives on which you draw.

Grading

Prerequisites

There is no point in taking cs614 if you lack a solid background in the basics. Accordingly, we’ll assume that the students in the class have all taken (and mastered) the material covered in a conventional operating systems class and an architecture class – cs314, cs414.   If you didn't earn an A in undergraduate operating systems, you may feel uncomfortable in cs614.   An undergraduate database class is also highly recommended (cs432).