I am a Ph.D. Student in Computer Science at University of Illinois at Urbana-Champaign, working with Prof. Grigore Rosu on program transformation using rewriting.
My long-term research goal is to improve automatic code evolution. We transform our code to make it faster, more scalable, and easier to read. But we do these transformations mostly manually, using tools that still understand little about our intents. This is tedious and error-prone. But automating anything beyond trivial (e.g., rename) transformations is hard because the computer needs to understand the high-level semantics of the current code and of the end goal, and have a sound and efficient way of transforming the code towards satisfying the goal.
My approach to automating code evolution is based on:
- expressing transformations formally as term rewrite rules, allowing verification
- automatically learning new transformations from existing code
- exploring the space of possible transformations using evolutionary algorithms
I worked with Danny Dig on creating IteRace [P7, P2], a static race detection analysis for parallel loops. Earlier, we also worked on developing a refactoring [P1, T1] capable of automating the transformation. The master thesis presenting this work has received the David J. Kuck Outstanding M.S. Thesis Award.
I received BSc from the Polytechnic University of Timisoara in 2010 with a thesis presenting a data-flow analysis for finding races. My advisor was Marius Minea.
Core developer. K is a rewriting-based framework for specifying executable semantics, defining type systems, and doing verification and program transformation.
A static race detector for Java parallel loops that reports a low number of warnings to the programmer, while not sacrificing safety. Static race detectors typically report an unmanageable number of warnings. IteRace attenuates this problem by increasing precision through specialization to Java constructs and libraries.