Students: I am currently seeking motivated (graduate
or undergraduate) students to work on exciting research projects.
Research Interests
My current research interests are in compilation, program analysis,
and software engineering. Some of my group's ongoing research includes:
Bamboo: Software Design for Multi- and Many- Core Processors:
Developing software for future multi-core processors will require new
software design methodologies, programming languages, and tools. This
research investigates a new design methodology for developing the
parallel software systems that are necessary to take advantage of
multi-core processors. This new design process enables the software
developer to create flexible system designs that easily accommodate
refinement of how the computation is realized. It does this by
separating the functional design of the software system from the
specification of how to organize the computation. This research
project investigates the construction of synthesis and profiling tools
that can be used to develop and refine these functional and
organizational specifications. These specifications are in turn used
to create an executable that is optimized for the specific multi-core
microprocessor.
Disjointness Analysis: We have developed a new
disjointness analysis for Java-like languages. Two objects are
disjoint if the parts of the heap reachable from the two objects are
disjoint. The analysis can be used verify program correctness
properties and to enable a new approach to automatically parallelizing
applications.
OoOJava: We have developed a new
approach to automatic parallelization that combines a software-based
implementation of superscalar scheduling with disjointness analysis.
Transactional Distributed Shared Memory: We have developed
a new transaction-based approach to distirbuted shared memory. Our
transaction based approach makes aggressive use of both prefetching
and caching of remote objects to hide network latency while relying on
the transaction commit mechanism to preserve the simply transactional
consistency model.
I/O for Transactional Memory: We have developed an I/O
implementation for software transactional memory systems. Our
implementation allows transactions to safely make use of file
operation inside of memory transactions.
Bristlecone: Robust Software Systems: We have a developed
a language-based approach for building robust software systems. This
approach decomposes software systems into a set of a tasks, and uses
task specifications to describe how to combine these tasks. In the
event of a failure, our system reasons about these task specifications
to adapt the execution and continue to provide service.
Garm: Protecting Private Data in Legacy Applications: We
have developed Garm, a new tool for tracing data provenance and
enforcing data access policies with arbitrary binaries. Users can use
Garm to attach access policies to arbitrary data files (or parts of
files) and Garm ensures that all accesses to the data across all
applications and executions are consistent with the policy.
Analysis of Software Bugs: We have built a prototype tool
to automatically build a repository of software bugs. For each
software bug, our tool records a test case that reveals the bug, a
version of the program that contains the bug, and the change that
corrects the software bug. We are in the process of using this tool
to collect information and plan to mine this information to discover
properties of software bugs.
Data Structure Repair: We have developed data structure
repair, a technique to enable programs to recover from data structure
corruption errors. This technique can be applied to both volatile
data structures inside a running program and persistent data
structures stored on disk.
AFID: An Automated Fault Identification Tool
Alex Edwards, Sean Tucker, Sebastien Worms, Rahul Vaidya, and Brian Demsky
Proceedings of the 2008 International Symposium on Software Testing and Analysis
July 2008
Data Structure Repair Using Goal-Directed Reasoning
Brian Demsky and Martin C. Rinard
Proceedings of the 2005 International Conference on Software Engineering
May 2005
ACM SIGSOFT Distinguished Paper Award