Our current research projects include:

Parallel Execution Environment for finding software flaws and security problems: The absence of dynamic safety checks in C based languages allows programmer oversights and software flaws that can be hard to spot. In practice, debugging parallel systems is often cumbersome, as non-determinism makes the reproduction of errors difficult. Together with the Lawrence Livermore National Laboratory and NC State, we develop a dynamic error detection tool that detects potentially harmful operations (e.g., pointer dereferences, arithmetic operations that could overflow/underflow) in C, C++, and UPC codes.

Context-driven Optimization for Concurrent Data-Structures: On multi-core, shared-memory architectures, concurrent programs often use concurrent data structures (CDS) for communication and synchronization. The design of generic and efficient CDS is notoriously difficult. To be widely useful, CDS often implement more functionality (operations) than concrete use cases require. By taking a specific use-case into account, the implementation of the utilized operations can often be optimized. This project explores novel ways of combining algorithm specification, formal methods, static analysis, and program synthesis to deliver a framework for the design and implementation of correct, easy to use, and efficient CDS.