Hot Topics in PL & Systems, Fall 2015

In this course, we will discuss hot topics in Programming Languages and Systems. You are expected to have read and reviewed your assigned paper before class and participate in in-class discussions.

Grades will be based on in-class participation, presentations, reviews, and projects (for those taking the course for 3 credits).

You must submit your reviews via the review submission site the night before each class, by 11:59 p.m. See these notes by John Ousterhout on writing reviews. Focus on the positive!

Your reviews must address the following points (in the review form):

  • Detailed Review: (3-4 paragraphs) What is the problem that this work addressed? What are the big ideas / key insights / technical contributions?
  • Discussion Points: Include at least two discussion points to bring up in class that are different from those contributed by others.

If you are presenting a paper, you are free to use talk slides from the authors (if available). If the paper has not yet appeared in print, you can choose to either make a PowerPoint / Keynote presentation yourself, or simply lead the discussion at the whiteboard. The presentation should be like a conference talk, ending with leading discussion points.

NOTE: The use of laptops and cell phones is not allowed in class.

Date Paper Presenter
9/16/2015 Synthesis of Layout Engines from Relational Constraints Bobby Powers
Holistic Configuration Management at Facebook Nick Braga
9/21/2015 Merlin: A Language for Provisioning Network Resources Joe Collard
Towards Optimization-Safe Systems: Analyzing the Impact of Undefined Behavior Andrew Danise
9/23/2015 Toward a Dependability Case Language and Workflow for a Radiation Therapy System John Vilk
Halide: A Language and Compiler for Optimizing Parallelism, Locality, and Recomputation in Image Processing Pipelines Teddy Sudol
9/28/2015 In Search of an Understandable Consensus Algorithm Shay Adams
Software Defined Batteries Pan Hu
(guest & co-author)
9/30/2015 ChucK: a programming language for on-the-fly, real-time audio synthesis and multimedia Joe Collard
Verdi: A Framework for Implementing and Formally Verifying Distributed Systems Bobby Powers
10/13/2015 Optimizing Database-Backed Applications with Query Synthesis John Vilk
Fast, Multicore-Scalable, Low-Fragmentation Memory Allocation through Large Virtual Memory and Global Data Structures Andrew Danise
10/14/2015 Helium: Lifting High-Performance Stencil Kernels from Stripped x86 Binaries to Halide DSL Code Teddy Sudol
How Scale Affects Structure in Java Programs Shay Adams
10/19/2015 Diagnosing Type Errors with Class Joe Collard
Using Crash Hoare Logic for Certifying the FSCQ File System John Vilk
10/21/2015 Kadupul: Livin’ on the Edge with Virtual Currencies and Time-Locked Puzzles Nick Braga
Opportunistic Storage Maintenance Shay Adams
10/26/2015 Static Analysis of Event-Driven Node.js JavaScript Applications Bobby Powers
Program Synthesis for Direct Manipulation Interfaces Joe Collard
11/2/2015 FlashMeta: A Framework for Inductive Program Synthesis Teddy Sudol
Tracing vs. Partial Evaluation: Comparing Meta-Compilation Approaches for Self-Optimizing Interpreters John Vilk
11/4/2015 ShamDroid: Gracefully Degrading Functionality in the Presence of Limited Resource Access Nick Braga
11/16/2015 Just-in-time Data Structures Teddy Sudol
IronFleet: Proving Practical Distributed Systems Correct Bobby Powers
11/18/2015 Mahimahi: Accurate Record-and-Replay for HTTP John Vilk
project progress reports everyone
11/30/2015 Andana: Anonymous Named Data Networking Application Nick Braga
Log2: A Cost-Aware Logging Mechanism for Performance Diagnosis Shay Adams
12/2/2015 DReX: A Declarative Language for Efficiently Evaluating Regular String Transformations Joe Collard
Virtual CPU Validation Andrew Danise
12/7/2015 XX TBD
12/9/2015 TITLE TBD
as yet unscheduled Software-Defined Batteries (SOSP 2015)

No compromises: distributed transactions with consistency, availability, and performance (SOSP 2015)

Vuvuzela: Scalable Private Messaging Resistant to Traffic Analysis (SOSP 2015)

 below here not yet edited
2/19/2013 Automatic Program Repair with Evolutionary Computation (local) Emma Tosch
Production-Run Software Failure Diagnosis via Hardware Performance Counters (local) Charlie Curtsinger
2/20/2013 EnerJ: Approximate Data Types for Safe and General Low-Power Computation (local) Dan Barowy
Proving acceptability properties of relaxed nondeterministic approximate programs (local) Jessica Newman
2/25/2013 Exterminator: Automatically correcting memory errors with high probability (local) Bruce Spang
Optimal task assignment in multithreaded processors: a statistical approach (local) Tongping Liu
2/27/2013 Dthreads: efficient deterministic multithreading (local) Charlie Curtsinger
Uniqueness and Reference Immutability (local) Dimitar Gochev
3/4/2013 Leveraging test generation and specification mining for automated bug detection without false positives (local) John Vilk
S2E: a platform for in-vivo multi-path analysis of software systems (local) Jez Ng
3/6/2013 Flat combining and the synchronization-parallelism tradeoff (local) Emma Tosch
GraphChi: Large-Scale Graph Computation on Just a PC (local) Guptha Rajagopal
3/11/2013 DieHard: probabilistic memory safety for unsafe languages (local) Tongping Liu
Stabilizer: Statistically Sound Performance Evaluation (local) Charlie Curtsinger
3/13/2013 Guest Speaker: Steve Freund
3/25/2013 class cancelled
3/27/2013 GPUfs: integrating a file system with GPUs (local) Jessica Newman
Spanner: Google’s Globally-Distributed Database (local) Dan Barowy
4/1/2013 Dune: Safe User-level Access to Privileged CPU Features (local) Jez Ng
Typestate-based semantic code search over partial programs (local) John Vilk
4/3/2013 Modular and Verified Automatic Program Repair (local) Bruce Spang
A Compiler and Runtime System for Network Programming Languages (local) Divya Gunsekaran
4/8/2013 Reagents: Expressing and Composing Fine-Grained Concurrency (local) Emma Tosch
Run Your Research: On the Effectiveness of Lightweight Mechanization (local) Jez Ng
Systems Lunch: Rick Hudson (Intel): River Trail: Adding Data Parallelism to JavaScript
4/10/2013 ASPLOS 2013: Stochastic Superoptimization (local) Dan Barowy
ASPLOS 2013: Why You Should Care About Quantile Regression (local) Charlie Curtsinger
4/18/2013, 2:30pm A Compiler and Runtime System for Network Programming Languages (local) Divya Gunsekaran
PLDI 2013: Thresher: Precise Refutations for Heap Reachability (local) Charlie Curtsinger
4/22/2013 ASPLOS 2013: Discerning the Dominant Out-of-Order Performance Advantage: is it Dynamism or Speculation? (local) John Vilk
PLDI 2013: Towards Static Analysis for Probabilistic Programs (local) Emma Tosch
4/24/2013 Machine-Verified Network Controllers (local) Arjun Guha
4/29/2013 Guest speaker: Stephen Chong
paper TBA (NN) TBD

Plagiarism Policy

All projects in this course are to be done by you / your group. Violation will result in a zero on the project in question and initiation of the formal procedures of the University. We use an automated program and manual checks to correlate projects with each other and with prior solutions. At the same time, we encourage students to help each other learn the course material. As in most courses, there is a boundary separating these two situations. You may give or receive help on any of the concepts covered in lecture or discussion and on the specifics of programming language syntax.

You are allowed to consult with other students in the current class to help you understand the project specification (i.e. the problem definition). However, you may not collaborate in any way when constructing your solution: the solution to the project must be generated by you or your group working alone. You are not allowed to work out the programming details of the problems with anyone or to collaborate to the extent that your programs are identifiably similar. You are not allowed to look at or in any way derive advantage from the existence of project specifications or solutions prepared elsewhere.

If you have any questions as to what constitutes unacceptable collaboration, please talk to the instructor right away. You are expected to exercise reasonable precautions in protecting your own work. Don’t let other students borrow your account or computer, don’t leave your program in a publicly accessible directory, and take care when discarding printouts.