Grad Systems (COMPSCI 630)

Course Description

In this course, we will discuss classic papers across the broad area of Systems, in roughly chronological order by area: programming languages, architecture, runtime systems, operating systems, and system design in general. This is a lecture-driven class (not a seminar); you will not be expected to present papers, but you are expected to have read every paper before class and participate in in-class discussions.

This course can be used to satisfy core requirements for Systems for the M.S. and PhD degrees.

Grades will be based on in-class participation and paper reviews (15%), projects (50%), and exams (35%). These percentages are anticipated but subject to change. Exams will cover course material covered in lectures and assigned readings. There is no textbook for this course.
You must submit your reviews via the review submission site before each class. Do not modify and re-submit your reviews: just submit once.

See these notes by John Ousterhout on writing reviews. Focus on the positive: these are classics for a reason!

Here are two examples of reviews: the first is a real conference review for a paper you will be reading, and the second is a real student review for this class that you should use a model: Example reviews

Your reviews must address the following points:

  • Summary: (at least two paragraphs) What is the problem that this work addressed? What are the big ideas / key insights / technical contributions?
  • Significance / Contributions: How have the assumptions / context this work was based on changed? What is the practical significance of these results today?
  • Discussion Points: Include at least two discussion points to bring up in class.

You will be expected to scribe at least one lecture’s notes. Here is an example to use as a template (in LaTeX).

TA: Juan Altmayer Pizzorno: Thursday 1:30-2:30pm, CS 207

Course Schedule

All paper reviews should be submitted using the class HotCRP site.

Monday, February 28 — no class

Tuesday, February 07

Introduction

Thursday, February 09

Compilers
The Education of a Computer, Hopper [read]
The FORTRAN Automatic Coding System, Backus [review]
The Night Watch, Mickens [read]

Tuesday, February 14

Thursday, February 16

Runtime Systems
Garbage Collection in an Uncooperative Environment, Boehm and Weiser [review]

Tuesday, February 21

Computer Architecture
Architecture of the IBM System/360, Amdahl et al. [review]
Structural aspects of the System/360 Model 85: The cache, Liptay [read]
Bringing the Web Up to Speed with WebAssembly, Rossberg et al. [review]

Thursday, February 23 — no class

Tuesday, March 07

Thursday, March 09

Concurrency
Experience with Processes and Monitors in Mesa, Lampson & Redell [review]

Tuesday, March 14 — no class

Thursday, March 16 — no class

Tuesday, March 21

Os Design And Internals
The Evolution of the UNIX Time-Sharing System, Ritchie & Thompson [review]

Thursday, March 23 — Exam 1

Tuesday, March 28 — no class

Thursday, March 30 — no class

Tuesday, April 04

Networked Systems Principles
Hints for Computer System Design, Lampson [review]

Thursday, April 06

Friday, April 07 — Project 1: Ouroboros

Tuesday, April 11

Distributed Systems
Bitcoin: A Peer-to-Peer Electronic Cash System, Bitcoin [review]

Thursday, April 13

Fault-Tolerance (Hardware)
A Case for Redundant Arrays of Inexpensive Disks (RAID), Patterson, Gibson & Katz [review]
Why Do Computers Stop and What Can Be Done About It?, Gray [review]

Tuesday, April 18 — no class

Thursday, April 20

Performance Analysis
GProf: A Call-Graph Execution Profiler, Graham et al. [read]
Coz: Finding Code that Counts with Causal Profiling, Curtsinger & Berger [review]

Tuesday, April 25 — no class

Thursday, April 27 — no class

Tuesday, May 02

Thursday, May 04

Dynamic Analysis
Valgrind: A Framework for Heavyweight Dynamic Binary Instrumentation, Nethercote & Seward [review]

Tuesday, May 09

Thursday, May 11 — Exam 2

Wednesday, May 17 — Project 2: Cyprompt