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:

  1. expressing transformations formally as term rewrite rules, allowing verification
  2. automatically learning new transformations from existing code
  3. 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.


other projects

K framework

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.

peer-reviewed papers

[P7] Effective Techniques for Static Race Detection in Java
Cosmin Radoi, Danny Dig
TOSEM ’15papertooljournal version of [P2]

[P6] CARAMEL: Detecting and Fixing Performance That Have Non-Intrusive Fixes
Adrian Nistor, Po-Chun Chang, Cosmin Radoi, Shan Lu
ICSE ’15paper
won the ACM SIGSOFT Distinguished Paper Award

[P5] Are web applications ready for parallelism?
Cosmin Radoi, Stephan Herhut, Jaswanth Sreeram, Danny Dig
PPoPP ’15short paperposter

[P4] Translating Imperative Code to MapReduce
Cosmin Radoi, Stephen J. Fink, Rodric Rabbah, Manu Sridharan
OOPSLA ’14paperslidesposter

[P3] Retrofitting Concurrency for Android Applications through Refactoring
Yu Lin, Cosmin Radoi, and Danny Dig
FSE ’14papertool

[P2] Practical Static Race Detection for Java Parallel Loops
Cosmin Radoi, Danny Dig
ISSTA ’13papertool
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 ’09demo papertool

thesis & technical reports

[T5] Toward Automatic Programming
Cosmin Radoi
pdf ’18

[T4] Inclusion-based Pointer Analysis Using Actors
Cosmin Radoi, Semih Okur
pdf ’12

[T3] Hadoop+Aparapi: Making Heterogenous MapReduce Programming Easier
Semih Okur, Cosmin Radoi, Yu Lin
pdf ’12

[T2] Loop2GPU: Transforming Loops to OpenCL Kernels as a LLVM Pass
Semih Okur, Cosmin Radoi
pdf ’12

[T1] ReLooper: Refactoring for Loop Parallelism
Danny Dig, Cosmin Radoi, Mihai Tarce, Marius Minea, Ralph Johnson
Technical Report ’09