The award-winning PLASMA group, led by Professors Emery Berger, Yuriy Brun, and Arjun Guha, does cool stuff that matters. We are working on a variety of exciting topics that span programming languages, software engineering, and systems. Current projects include systems that secure legacy software from attack, "programming with people", automatic bug analysis and elimination (including correctness and performance bugs), automatically inferring software API and documentation, programming languages for software-defined networking, and much more.

PhD students
Breanna Devore-McDonald
Emily Herbert
Abhinav Jangda
Donald Pinckney
Bobby Powers
Joseph Spitzer
 
software
AutoMan: DSL for programming with people Star
BLeak: Automatically debug memory leaks in web apps Star
BrowserFS: In-browser mountable filesystem (pure JS) Star
Browsix: Unix in your browser tab Star
CSrankings: Web app for ranking CS departments Star
Coz: A causal profiler Star
DieHard: Error-resistant malloc for C/C++
DieHarder: Secure malloc
Exterminator: Automatically finds and corrects memory erorrs
Star
Doppio: POSIX layer and JVM in pure JavaScript Star
ExceLint: Finds formula errors in Excel spreadsheets new Star
Heap Layers: Template-based building blocks for custom and general-purpose allocators Star
Hoard: Fast, scalable malloc for multicore Star
Mesh: Compacting malloc Star
Stabilizer: Statistically sound performance analysis
Star
Stopify: Enables building IDEs for languages compiled to JS Star
Tea: Automated statistical analysis new
Star
github.com/plasma-umass
 

recent talks


PLASMA courses (full list)

We teach a series of popular programming languages, systems, and software engineering courses, including software program analysis (CMPSCI 521/621), graduate courses on system design (CMPSCI 630), principles of programing languages (CMPSCI 631). See the full list of courses we teach.

recent news

[October 2019] Three PLASMA papers to appear at OOPSLA!
[September 2019] PLASMA paper selected to appear as a Communications of the ACM Research Highlight! (BLeak: Automatically Debugging Memory Leaks in Web Applications).
[June 2019] Tea: A High-level Language and Runtime System for Automating Statistical Analysis accepted to appear at UIST 2019 (more at tea-lang.org).
[April 2019] Not so fast: analyzing the performance of webassembly vs. native code to appear at USENIX ATC 2019.
[February 2018] Two PLASMA papers accepted to appear at PLDI 2018: BLeak: Automatically Debugging Memory Leaks in Web Applications (BLeak) and Putting in All the Stops: Execution Control for JavaScript (Stopify).
[September 2017] Fairness Testing: Testing Software for Discrimination wins an ACM SIGSOFT Distinguished Paper Award at ESEC/FSE 2017.
Prof. Brun receives NSF grant on software fairness testing.
Prof. Brun promoted to Associate Professor with tenure.
[July 2017] Prof. Brun promoted to Senior Member of both the ACM and the IEEE.
[June 2017] Fairness Testing: Testing Software for Discrimination accepted to ESEC/FSE 2017.
[May 2017] Prof. Brun receives the UMass College of Information and Computer Science Outstanding Teacher Award.
[April 2017] Prof. Brun receives a Lilly Fellowship for Teaching Excellence.
Continuous Analysis of Collaborative Design wins the Best Paper Award at ICSA 2017.
[March 2017] Constraint-aware resource scheduling paper accepted to the IEEE Transactions on Systems, Man, and Cybernetics: Systems.
PLASMA PhD student Dan Barowy to join Williams College as an Assistant Professor, starting Fall 2017.
[February 2017] Collaborative design paper accepted to ICSA 2017.
[January 2017] Behavioral execution comparison paper accepted to ICST 2017.

selected publications

[UIST 2019] Tea: A High-level Language and Runtime System for Automating Statistical Analysis (pdf)
[PLDI 2019] Mesh: Compacting Memory Management for C/C++ Applications (pdf)
[OOPSLA 2018] ExceLint: automatically finding spreadsheet formula errors (pdf)
[PLDI 2018] BLeak: Automatically Debugging Memory Leaks in Web Applications (pdf, selected as CACM Research Highlight)
[ESEC/FSE 2017] Fairness Testing: Testing Software for Discrimination (pdf, ACM SIGSOFT Distinguished Paper Award)
[IEEE SMC] Discrete-Event Simulation and Integer Linear Programming for Constraint-Aware Resource Scheduling (pdf)
[ICSA 2017] Continuous Analysis of Collaborative Design (pdf, Best Paper Award)
[ICST 2017] Behavioral Execution Comparison: Are Tests Representative of Field Behavior? (pdf)
[CHI 2017] VoxPL: Programming with the Wisdom of the Crowd (pdf)
[ASPLOS 2017] Browsix: Bridging the Gap Between Unix and the Browser
see browsix.org
[OOPSLA 2016] Prioritized garbage collection: explicit GC support for software caches (pdf)
[PLDI 2016] Rehearsal: A Configuration Verification Tool for Puppet
[ICSE 2016] DoubleTake: Fast and Precise Error Detection via Evidence-Based Dynamic Analysis
[ISSRE 2015] Discovering Specification Violations in Networked Software Systems (pdf)
[ISSRE 2015] Detecting Latent Cross-Platform API Violations (pdf)
[ICFP 2015] A Fast Compiler for NetKAT (pdf)
[ASE 2015] Repairing Programs with Semantic Code Search (pdf)
[SOSP 2015] Coz: Finding Code that Counts with Causal Profiling (pdf, Best Paper Award)
[ESEC/FSE 2015] Is the Cure Worse than the Disease? Overfitting in Automated Program Repair (pdf)
[ISSTA 2015] Preventing Data Errors with Continuous Testing (pdf)
[IEEE TSE] Self-Adapting Reliability in Distributed Software Systems (pdf)
[IEEE TSE] Reducing feedback delay of software development tools via continuous analyses (pdf)
[IEEE TSE] Using declarative specification to improve the understanding, extensibility, and comparison of model-inference algorithms (pdf)
[OOPSLA 2014] SurveyMan: Programming and Automatically Debugging Surveys (Best Paper Award) (pdf)
[OOPSLA 2014] CheckCell: Data Debugging for Spreadsheets (pdf)
[FSE 2014] The Plastic Surgery Hypothesis (pdf)
[PLDI 2014] Doppio: Breaking the Browser Language Barrier
see doppiojvm.org
[ASE 2014] Behavioral Resource-Aware Model Inference (pdf)
[PPoPP 2014] Predator: Predictive False Sharing Detection
[ASPLOS 2013] Stabilizer: Enabling Statistically Rigorous Performance Evaluation (draft version)
see stabilizer-tool.org
[ICSE 2013] Unifying FSM-Inference Algorithms through Declarative Specification
[ICCSP 2013] Supporting Process Undo and Redo in Software Engineering Decision Making
[TDSC 2013] Entrusting Private Computation and Data to Untrusted Networks
[OOPSLA 2012] Speculative Analysis of Integrated Development Environment Recommendations
[OOPSLA 2012] AutoMan: A Platform for Integrating Human and Digital Computation (draft version)
see automan-lang.org
[ACM TECS 2012] PROARTIS: Probabilistically Analysable Real-Time Systems
see proartis-project.eu
[SOSP 2011] Dthreads: efficient deterministic multithreading
see dthreads.org
[OOPSLA 2011] Sheriff: precise detection and automatic mitigation of false sharing
[CCS 2010] DieHarder: securing the heap
[ECRTS 2009] Using Randomized Caches in Real-Time Systems
[OOPSLA 2009] Grace: safe multithreaded programming for C/C++
[PLDI 2009] Efficiently and precisely locating memory leaks and bloat
[OSDI 2008] Redline: first class support for interactivity in commodity operating systems
[ASPLOS-XIII] Archipelago: trading address space for reliability and security
[SenSys 2007] Eon: a language and runtime system for perpetual systems
[FAST 2007] TFS: a transparent file system for contributory storage
[PLDI 2007] Exterminator: automatically correcting memory errors with high probability
[PLDI 2006] DieHard: probabilistic memory safety for unsafe languages
[OSDI 2006] CRAMM: virtual memory support for garbage-collected applications
[USENIX 2006] Transparent contribution of memory
[USENIX 2006] Flux: a language for programming high-performance servers
[OOPSLA 2005] Quantifying the performance of garbage collection vs. explicit memory management
[PLDI 2005] Garbage collection without paging
[OOPSLA 2002] Reconsidering custom memory allocation (Most Influential Paper Award)
[PLDI 2001] Composing high-performance memory allocators
see HeapLayers.org
[ASPLOS-IX] Hoard: a scalable memory allocator for multithreaded applications
see hoard.org

alumni

Justin Aquadro (MS)
Dan Barowy (PhD, Asst. Prof., Williams College)
Charlie Curtsinger (PhD, Asst. Prof., Grinnell College)
Yi (Eric) Feng (MS, at Google)
Matthew Hertz (PhD, Univ. of Buffalo)
Divya Krishnan (MS, at Cisco Systems)
Tongping Liu (PhD, Assistant Professor, UTSA)
Vitaliy Lvin (MS, at Google)
Gene Novark (PhD, at Morgan Stanley)
Ted Smith (MS, Google)
John Vilk (PhD, Stripe)
Ting Yang (PhD, at Facebook)