Instructor: Joe Hellerstein
Time: 9-11AM Fridays
Location: AMP Lab conference room
Max Enrollment: 20

Course Description

In his Turing Award lecture, Backus famously critiqued mutable state and the sequential Von Neumann architecture as fundamental wrong turns in computing.  Today, nearly 30 years later, most software is still designed around mutable state and sequential languages—despite the ubiquity of parallelism presented by multicore processors and compute clusters in the cloud. The problems and challenges of mutable state are perhaps most pronounced in large-scale data-centric systems (databases, file systems, big data frameworks), whose core responsibility is ostensibly to manage computation over stored state.  

We seem to be at a turning point in data-centric systems, with an emerging design pattern that we can call progressive systems.  In a progressive system, data is accumulated monotonically without mutation; the "state" of the system is often nothing more than the current result of an expression (or "view") over the accumulated state.

While progressive design is a common thread detectable across many recent systems of interest, it is by no means an accepted paradigm.  In this seminar we will pursue this thread, and try to tease out foundations and best practices of progressive design.  We will read research papers on influential systems both old and new, and on relevant foundations from distributed systems and databases.

Students will be assumed to have some familiarity with database systems and/or operating systems.  All enrolled students will be expected to take a leadership role in the seminar, presenting papers and engaging in discussion.  Specifically, students will be responsible for:
  • Reading the assigned research papers ahead of class, and posting a short writeup in advance of class.
  • Leading the discussion of at least one paper
  • Taking scribe notes
  • Working in teams to pursue research projects in the design of progressive systems.  Ideas for projects are being posted here -- add more!