1952R/2952R: Systems Transforming Systems

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

Do not worry about CAB, we will approve all override requests after the first lecture—everyone who wants to take this course will take this course!

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.

The seminar comes in two versions:See research results from prevous iterations: 2024

COEX- and WRIT-designated 1952R or 2952R (see combined syllabus). Successful outcomes from last year’s seminar include a Best Paper Award (Usenix ATC’26), 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 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

Here is a 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 Form, 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

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!

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.