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.

It is hoped that the class will be small, in which case we’ll share the teaching load. Students in the class will be asked to present one or more of the lectures – I’ll do some too – in such a manner as to ensure that all the students do at least one presentation. 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.  Before each class, students are required to email to me (ken@cs.cornell.edu) two paragraphs discussing the contributions and at least one major weakness of each of the two papers (one paragraph for each paper).  If email is impossible, submit the two paragraphs on paper to me in class.

In addition to reading papers and 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:

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

Grading will be based on the following:

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).