I am Researcher at Microsoft working in the PROSE team. Previously, I was an assistant professor at Federal University of Campina Grande - Department of Computing Systems, Brazil, and a postdoc at UC Berkeley working with Bjoern Hartmann on the ExCAPE project as a visiting researcher.
I completed my Ph.D. under supervision of Rohit Gheyi at Federal University of Campina Grande in 2014. During my Ph.D., I worked for three months with Emerson Murphy-Hill in the Developer Liberation Front at North Carolina State University. I also went through an internship at Microsoft Research under supervision of Sumit Gulwani.
I am interested in developing programming synthesis techniques and tools to help developers, students, and end users.
My current research focuses on learning program transformations from examples. Refazer (rebuild, in Portuguese) is technique for automatically learning program transformations. It builds on the observation that code edits performed by developers can be used as input-output examples for learning program transformations. Example edits may share the same structure but involve different variables and subexpressions, which must be generalized in a transformation at the right level of abstraction. To learn transformations, Refazer leverages state-of-the-art programming-by-example techniques.
At Microsoft Research, I worked on FlashProg, a programming-by-example system that allows users to perform data wrangling using programming-by-example techniques, such as FlashFill and FlashExtract. Later, we deployed Flash Fill and Flash Extract to Windows 10 as Powershell commands: Convert-String and ConvertFrom-String, respectively. The success of these tools led to the creation of Microsoft Prose, a program synthesis framework, and FlashProg is now called Microsoft Prose Playground.
In my PhD thesis, I propose a technique to test Java refactoring engines. It automates test input generation by using a Java program generator that exhaustively generates programs for a given scope of Java declarations. The refactoring under test is applied to each generated program. The technique uses SAFEREFACTOR, a tool for detecting behavioral changes, as oracle to evaluate the correctness of these transformations. The technique was useful for finding more than 100 bugs in Eclipse JDT, NetBeans and the JastAdd Refactoring Tools.
My PhD Thesis was ranked best PhD Thesis in Computer Science in Brazil at Prêmio CAPES de Teses, Coordination for the Improvement of Higher Education Personnel (CAPES), 2015.
My PhD Thesis was ranked top six best PhD Thesis in Brazil at Concurso de Teses e Dissertações. CSBC 2015.
John Vlissides Award at SPLASH, 2012.
Gold Medal - ACM Student Research Competition. SPLASH 2012.
The paper “Making Software Product Line Evolution Safer” won the best paper award at the 6th Brazilian Symposium on Software Components, Architectures and Reuse (SBCARS 2012)
The paper “Analyzing Refactorings on Software Repositories” won the best paper award at the 25th Brazilian Symposium on Software Engineering (SBES 2011)
JMLOK was ranked the second best tool at the Brazilian Conference on Software: Theory and Practice (CBSoft 2011)
The poster “Making program refactoring safer” was ranked 2nd Best Poster at ECOOP 2011
My master thesis “Uma abordagem para aumentar a segurança em refatoramentos de programas” was named best master thesis of Latin-America in the XXXVI Latin American Conference of Informatics (CLEI 2010)
The work (Making program refactoring safer) was ranked the top 10 in best graduate research works in the Student Research Competition at ICSE 2010.
SafeRefactor was elected the best tool at the Brazilian Symposium on Software Engineering (SBES tools - 2009).
PhD: Reudismam Rolim
Master’s: José Aldo Silva, Ruan Reis