• Learning program transformations from examples

    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.

  • Interaction Models for Programming-by-Example

    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.

  • Testing of Refactoring Tools

    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.

Selected Publications

More Publications

  • Anders Miltner, Sumit Gulwani, Vu Le, Alan Leung, Arjun Radhakrishna, Gustavo Soares, Ashish Tiwari, Abhishek Udupa On the Fly Synthesis of Edit Suggestions, In OOPSLA'19. 2019


  • Ruan Reis, Gustavo Soares, Melina Mongiovi, Wilkerson L. Andrade Evaluating Feedback Tools in Introductory Programming Classes, In FIE'19. 2019

  • Jonhnanthan Oliveira, Rohit Gheyi, Melina Mongiovi, Gustavo Soares, Márcio Ribeiro, Alessandro Garcia Revisiting the refactoring mechanics, Information and Software Technology. 2019

  • Melina Mongiovi, Rohit Gheyi, Gustavo Soares, Márcio Ribeiro, Paulo Borba, Leopoldo Teixeira Detecting overly strong preconditions in refactoring engines, IEEE Transactions on Software Engineering. 2018

  • Reudismam Rolim, Gustavo Soares, Loris D'Antoni, Oleksandr Polozov, Sumit Gulwani, Rohit Gheyi, Ryo Suzuki, Bjoern Hartmann Learning Syntactic Program Transformations from Examples, In ICSE'17. 2017


  • Andrew Head, Elena Glassman, Gustavo Soares, Ryo Suzuki, Lucas Figueredo, Loris D'Antoni, Bjoern Hartmann Writing Reusable Code Feedback at Scale with Mixed-Initiative Program Synthesis, In ACM Learning@Scale'17. 2017


  • Ryo Suzuki, Gustavo Soares, Andrew Head, Elena Glassman, Ruan Reis, Melina Mongiovi, Loris D'Antoni, Bjoern Hartmann TraceDiff: Debugging Unexpected Code Behavior Using Trace Divergence, In VL/HCC'17. 2017


  • Ryo Suzuki, Gustavo Soares, Elena Glassman, Andrew Head, Loris D'Antoni, Bjoern Hartmann Exploring the Design Space of Automatically Synthesized Hints for Introductory Programming Assignments, In CHI'17 (Late-Breaking Work). 2017


  • Mikaël Mayer, Gustavo Soares, Maxim Grechkin, Vu Le, Mark Marron, Oleksandr Polozov, Rishabh Singh, Benjamin Zorn, Sumit Gulwani User Interaction Models for Disambiguation in Programming-by-Example, In UIST'15. 2015

    PDF Video

  • Melina Mongiovi, Gustavo Wagner, Rohit Gheyi, Gustavo Soares, Marcio Ribeiro Scaling Testing of Refactoring Tools, In ICSME'14. 2014


  • Gustavo Soares, Rohit Gheyi, Thiago Massoni Automated Behavioral Testing of Refactoring Engines, IEEE Transactions on Software Engineering. 2013



  • 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


Program Committee

  • ACM SRC Grand-Finals’17, SBCARS’17, CBSoft-WTD’17, Workshop on Software Modularity’14, ISSTA-AE’14, LA-WASP’14, ECOOP-DS’12




  • FSE-SRC’18, PLATEAU’17, FSE-SRC’16