1952R/2952R: Systems Transforming Systems

Automatically improve existing systems—in terms of performance, security, correctness, and beyond!

Course description

This seminarQuick Links: Schedule & Topics, Reading & References, Projects & Milestones, Other Details.

combines cutting-edge systems research authentic to the discipline with academic communication, especially technical writing. It explores novel techniques for automatically augmenting software systems with new capabilities—including parallelism, distribution, isolation, correctness, and security. With an equal focus on advanced scientific topics and technical writing, the seminar is centered around group projects of 4–5 members designed carefully, and with appropriate support, to result in paper publications at top-tier conferences in the field of software systems.

This year’s seminar comes in two versions:See research results from prevous iterations: 2024

undergraduate-only 1952R, designated as COEX and WRIT, or 2952R (see combined syllabus). As examples of successful outcomes, last year’s seminar resulted in a Best Paper Award (Usenix ATC’26), publications at some of the finest computing outlets in the world (e.g., HotOS XX, ATC’25, and NSDI’26), and multiple other research papers submitted for publication!

Examples of transformations: Techniques and systems developed in the seminar will automatically secure the following code against entire classes of supply-chain threats…

let fs = require("fs"), lp = require("leftpad");
fs.readFile('./book.txt', 'utf-8', (data, erro) => {
  console.log(lp(data);
});

…and automatically transform the following processing pipeline—which calculates record temperatures across the U.S. in 2025—to run on as many computers as there are available:

S="ftp://ftp.ncdc.noaa.gov/pub/data/noaa/2023" # This can point to our server, so that we don't overload NOAA's servers
curl -s $S | grep gz | tr -s ' ' | cut -d ' ' -f9 | sed "s;^;$S;" | xargs -n1 curl -s | gunzip | cut -c 89-92 | grep -v 999 | sort -rn | head

What to expect: As part of the primary focus, scientific research, we will investigate state-of-the-art systems research—e.g., building real systems, systematizing prior literature, and crafting evaluation benchmarks. As part of the secondary focus, technical writing, we will work on our academic and technical communication—with an emphasis on all aspects of writing and publishing scientific papers. Throughout the semester, we will be using the various topics of the former as vehicles to explore, study, and practice the latter.

Schedule & Topics

Below is tentative schedule. The final schedule will depend on participant interests.

Date Science (project #) Writing (recipe; tips) Milestone
1:09/03 Intro; projects Intro; examples; overview Q, foundations: 1, 2, 3
2:09/10 Transformorphic computing Paper structure; foundations Project selection, team matching, writing warmup
3:09/17 Least privilege (#7) Related work; basics All presentations
4:09/24 Benchmarks (#2) Running example; correctness Running example
5:10/01 μServices & scaleout (#3) Thesis & questions; actions re:example, thesis notes
6:10/08 Fault tolerance (#9) Evaluation; characters Evaluation structure
7:10/15 Static analysis (#11, #13) Figures; cohe{sion,rence} re:evaluation, intro notes
8:10/22 Specification mining (#12) Introduction; emphasis Introduction
9:10/29 Reactivity (#1) Abstract & title; framing Re:intro, abstract, title, rewrite
10:11/05 Sandboxing (#4) Visuals; concision Visuals, e2e rewrite
11:11/12 Serverless (#8) Semantics & related; shape Related work
12:11/19 Compartmentalization (#5) Tech sections; Elegance Technical sections
13:12/03 Everything else & AMA Conclusion; next steps Full paper

Week 1 focuses on project selection, situation within a project, and project organization and planning. Week 2 focuses on related work — all teams will prepare their paper presentations this week. Implementation starts around week 3 and proceeds in parallel to other milestones to ensure the team gets results in time for each result-oriented milestone.

Reading & References

The seminar combines two foci: a scientific, practical focus—exploring and building state-of-the-art systems—and technical-writing focus.

Science: Exploring & Building State-of-the-Art Systems

There is no required textbook for the scientific focus of the course. Instead, we will draw from a variety of sources—mostly papers in software systems, programming languages, and computer security. Most of the papers reviewed in class will be project-specific—that is, teams will review their own literature and present it to the class. Examples of such papers include:

Scientific & Technical Writing

For the academic communication part of the course, we will draw from the following resources:

At times, we will use video or other media to get inspiration on or insights into other aspects of the course that are not easily covered through traditional textbooks or research papers — but also to work on our oral technical communication skills. Examples include videos on Node (see explicit thesis statement) and technical writing.

We will be using LaTeX likely with the acmart class. Students can collaborate using GitHub or using a service such as overleaf that simplifies LaTeX editing and collaborating over a web interface. A very short guide for typesetting with LaTeX is available for free.

Projects & Milestones

Broadly, a team will focus on developing one of three classes of papers:

Projects & Milestones. Projects will focus on state-of-the-art systems. Sample projects inlude (i) Language-based module-level compartmentalization, (ii) Ahead-of-Time black-box performance analysis, (iii) Controlling component side-effects with /bin/try, and (iv) From distribution-oblivious systems to scalable microservices. Milestones include all phases (and corresponding sections) of writing a systems paper, starting with a project summary. Example milestones include (i) overview of key works, (ii) the key idea or thesis statement, (iii) the structure and contents of the system evaluation, and (iv) a running example. A preliminary list of potential projects and milestones can be found in this document.

Policies & Expectations

Policies. Contrary to most classes, this one encourages collaboration: the subject of the class as well as some of the tools are complex—as a result, it may be necessary to collaborate as a class on figuring out how to best internalize the content, use existing tools, and produce the results you want. This collaboration additionally helps get different perspectives on the same subject, and even catch or correct misconceptions early on. You are thus encouraged to interact with each other as much as possible.

Other Details

To facilitate course interactions, we will set up a Discord server and a GitHub organization. In the first two weeks, participants need to complete a form that, apart from asking about background details, shares pointers several resources.

Prerequisites

The expectation is that students will have taken at least one systems course—at Brown CS0300/1310: Systems Fundamentals, CS0320: Software Engineering, CS0330/1330: Systems Intro, CS1260: Compilers & Analysis, CS1380: Distributed Systems, and CS1650: Software Security. Familiarity with a programming language, basic mathematical maturity, and excitement are important; the course will cover the rest. If unsure about taking this course, attend the first lecture.

Whereabouts & Contact

We meet on Wednesdays, 3–5:30pm, CIT 227 and Zoom. Here is a Google Calendar with all the important info.