I work on 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 completed my Ph.D. in Computer Science at University of Illinois at Urbana-Champaign, working with Prof. Grigore Rosu on program transformation using rewriting. See my CV.
Before, 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.
Principal Investigator for NSF SBIR Phase I award: Programmer-Friendly Automatic Code Fixes.
I gave an interview to The News Gazette about my work and our upcoming startup.
I am participating, as an Entrepreneurial Lead, in the NSF I-Corps market discovery program. We are identifying problems faced by software developers which could be solved by our research.
“Are web applications ready for parallelism?”, joint with Stephan Herhut, Jaswanth Sreeram, and Danny Dig, will appear at HICSS-50.
We released version 4.0 of the K Framework.
I received an IBM Ph.D. Fellowship for the 2016-2017 academic year.
My M.S. thesis received the David J. Kuck Outstanding M.S. Thesis Award.
I received the Feng Chen Memorial Award in Software Engineering.
“Effective Techniques for Static Race Detection in Java”, joint with Danny Dig, was published in the August 2015 TOSEM Special Issue on ISSTA 2013. See [P7].
I did a summer internship at Samsung Research America, where I worked with Manu Sridharan, Satish Chandra, and Colin Gordon on program transformation inference.
I talked about WALAFacade, a facade for using WALA from Scala, at the first Workshop on WALA.
“CARAMEL: Detecting and Fixing Performance That Have Non-Intrusive Fixes”, joint with Adrian Nistor, Po-Chun Chang, and Shan Lu, appeared at ICSE ‘15, and won the ACM SIGSOFT Distinguished Paper Award. See [P6].
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.
[P7] Effective Techniques for Static Race Detection in Java
Cosmin Radoi, Danny Dig
TOSEM ’15 • paper • tool • journal version of [P2]
[P6] CARAMEL: Detecting and Fixing Performance That Have Non-Intrusive Fixes
Adrian Nistor, Po-Chun Chang, Cosmin Radoi, Shan Lu
ICSE ’15 • paper
won the ACM SIGSOFT Distinguished Paper Award
[P5] Are web applications ready for parallelism?
Cosmin Radoi, Stephan Herhut, Jaswanth Sreeram, Danny Dig
PPoPP ’15 • short paper • poster
[P4] Translating Imperative Code to MapReduce
Cosmin Radoi, Stephen J. Fink, Rodric Rabbah, Manu Sridharan
OOPSLA ’14 • paper • slides • poster
[P3] Retrofitting Concurrency for Android Applications through Refactoring
Yu Lin, Cosmin Radoi, and Danny Dig
FSE ’14 • paper • tool
[P2] Practical Static Race Detection for Java Parallel Loops
Cosmin Radoi, Danny Dig
ISSTA ’13 • paper • tool
won the ACM SIGSOFT Distinguished Paper Award, and invited for journal submission [P7]
[P1] Relooper: refactoring for loop parallelism in Java
Danny Dig, Mihai Tarce, Cosmin Radoi, Marius Minea, Ralph Johnson
OOPSLA ’09 • demo paper • tool
thesis & technical reports
[T5] Toward Automatic Programming
[T4] Inclusion-based Pointer Analysis Using Actors
Cosmin Radoi, Semih Okur
[T3] Hadoop+Aparapi: Making Heterogenous MapReduce Programming Easier
Semih Okur, Cosmin Radoi, Yu Lin
[T2] Loop2GPU: Transforming Loops to OpenCL Kernels as a LLVM Pass
Semih Okur, Cosmin Radoi
[T1] ReLooper: Refactoring for Loop Parallelism
Danny Dig, Cosmin Radoi, Mihai Tarce, Marius Minea, Ralph Johnson
Technical Report ’09