The Programming Systems Lab


Gail Kaiser, Director

PSL conducts research at the boundary of software engineering and software systems, focusing on program analysis and software testing, software reliability, privacy and security, and social software engineering, often using data mining and machine learning techniques.

We are always seeking new project students to join us. Students who would like to become involved should review the project literature and descriptions, as well as the specific advertisements.



Students Meeting in PSL

PSL at work


2016-09-01 15.16.28

Summer Intern

Active Projects »

Gameful Computational Thinking

Inspired by CS for All?  Eager to contribute?  The Programming Systems Lab, led by Professor Gail Kaiser, is building a collaborative game-based learning and assessment system that infuses computational thinking in grade 6-8 curricula.  Near-term projects involve: Tooling Scratch with game design features Expanding a visual assessment language based in Blockly Enhancing an assessment server […]


Record/Replay Bug Reproduction for Java

There will inevitably continue to be bugs that are not detected by any testing approach, but eventually impact users who then file bug reports. Reproducing field failures in the development environment can be difficult, however, especially in the case of software that behaves non-deterministically, relies on remote resources, or has complex reproduction steps (the users […]


Toward Trustworthy Mutable Replay for Security Patches

Society is increasingly reliant on software, but deployed software contains security vulnerabilities and other bugs that can threaten privacy, property and even human lives. When a security vulnerability or critical error is discovered, a software patch is issued to attempt to fix the problem, but patches themselves can be incorrect, inadequate, and break necessary functionality. […]


Dynamic Information Flow Analysis

We are investigating an approach to runtime information flow analysis for managed languages that tracks metadata about data values through the execution of a program. We first considered metadata that propagates labels representing the originating source of each data value, e.g., sensitive data from the address book or GPS of a mobile device that should […]


Sound Build Acceleration

Sound Build Acceleration: Our empirical studies found that the bulk of the clock time during the builds of the ~2000 largest and most popular Java open source software applications is spent running test cases, so we seek to speed up large builds by reducing testing time. This is an important problem because real-world industry builds […]


Dynamic Code Similarity

“Code clones” are statically similar code fragments dispersed via copy/paste or independently writing lookalike code; best practice removes clones (refactoring) or tracks them (e.g., to ensure bugs fixed in one clone are also fixed in others). We instead study dynamically similar code, for two different similarity models. One model is functional similarity, finding code fragments […]