1952R/2952R: Systems Transforming Systems

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

Course description

Available as both graduate-level (2952R) and COEX+WRIT-designated (1952R), this courseQuick Links: Schedule & Topics, Reading & References, Projects & Milestones, Other Details.

combines cutting-edge systems research authentic to the discipline with academic communication, especially technical writing. With an equal emphasis on advanced scientific topics and technical writing, the seminar is centered around group projects of 3–5 members designed and supported carefully to result in paper publications at top-tier research outlets—exploring novel techniques for automatically improving the performance, security, and reliability of modern and widely deployed systems. (syllabus)

Successful past outcomes includeSee research results from prevous iterations: 2024

a Best Paper Award (Usenix ATC’25), publications at some of the finest computing outlets in the world (e.g., HotOS’25, ATC’25, and NSDI’26), some press coverage (e.g., The Register, InfoWorld), and many other paper submissions.

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 scientific research, we will investigate state-of-the-art research in systems: cloud, microservice, and serveless computing; compartmentalization, least-privilege containment; advanced type and effect systems; incremental and reactive computing; program analysis, transformation, and synthesis; and opaque effect manipulation. As part of 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

Here is a tentative schedule. The final schedule will depend on participant interests.

Date Science (project #) Writing (recipe; tips) Homework
1:09/03 Intro; projects Paper structure; rewrites Form, Projects, foundations: 1, 2, 3
2:09/10 Transformorphic systems Overview; thesis Project-specific papers, presentations, theses
3:09/17 Incremental recovery (#3) Pitch, abstract, Heilmeier Abstract, pitch, Heilmeier, result
4:09/24 Example Example, handrolled result
5:10/01 Effect analysis for the shell (#5) Evaluation Evaluation, benchmarks, some automation
6:10/08 Tunable communication (#2) Experimentation Complete and rewrite eval. draft
7:10/15 Draft exchange Visualization 3 x AEE review + feedback
8:10/22 Least-privilege execution (#1) Introduction, tech sects Intro, tech outline, more results
9:10/29 Regular IPC monitoring (#6) Paper tooling, figs More tech, key figures
10:11/05 AoT performance analysis (#7) Related work Related work, final results
11:11/12 File-system reasoning (#8) Model, semantics Rewrites
12:11/19 Monoliths to microservices (#4) Submission, artifact, etc. More rewrites
13:12/03 Draft exchange+miniconf AMA & Extras Full paper

The start: 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 with other milestones, to ensure teams get results early. Please attend the first lecture!

Science: The presentations of project-specific related work (lectures tagged as #18 above and corresponding to the eight projects) will be conducted in random order—i.e., studnets will have prepared their presentations by the second week so that we can spend the rest of the semester writing various sections of our papers.

Reading & References

The primary source is the lectures—i.e., there is no required textbook for this course, and thus there are no costs for students. The seminar’s two foci, scientific research and academic communication with technical writing, will draw content from multiple sources.

Scientific research: The research component will draw from classic and recent literature on systems—including one developed by past seminar students. The first week will focus on 2.5 foundation papers, common for all groups:

The second week will focus on project-specific papers—i.e., literature related to each project, which the corresponding group will eventually present to the class later in the semester.

Academic communication: The communication and writing component will draw from multiple sources, including:

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 the thesis statement and research paper writing.

Typesetting: We will be using LaTeX to typeset our papers professionally—likely with the acmart class, all bundled under the 2952R template repository. For a quick start, check out Learn LaTeX in 30 minutes or the slightly longer Very Short Guide to LaTeX.

Projects & Policies

Projects: Specific projects will be discussed in the first class. Example projects inlude (i) language-based module-level compartmentalization, (ii) ahead-of-time black-box performance analysis, (iii) effect control subsystems, and (iv) distribution-oblivious transformation to microservices. Milestones include all phases (and corresponding sections) of writing a systems paper, including (i) overview of prior research, (ii) introduction, thesis, and contributions, (iii) system evaluation and characterization, (iv) a running example, and more.

Policies: Contrary to many classes, this one encourages collaboration within and across teams: 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. Students are thus encouraged to interact with each other as much as possible.

Other Details

To facilitate course interactions, we will use a dedicated Discord server and GitHub organization. In the first weeks, participants need to complete a form to get access to 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 and excitement are important; the course will cover the rest—attend the first lecture to find out!

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

More info: The 2025 syllabus.