Ravi's project, entitled “Direct Manipulation Programming Systems” is developing the theoretical and practical foundations for integrating the expressive power of programming languages with the ease-of-use of direct manipulation graphical user interfaces, such as those found in domains such as word processing, spreadsheets, and graphic design.
Ravi's research aims to answer the following questions: (1) How can interactions with the output of a program be used to determine the user's intended modifications to the program? (2) How can interactions with the source code of a program be used to determine the user's intended, higher-level modifications to the program? (3) How can user interfaces integrate the expressiveness of general-purpose programming languages with the intuitive workflow of direct manipulation systems? The project blends and advances techniques in program synthesis, semi-automated refactoring, and human-computer interaction.
In addition to this recognition from the NSF, his work in this area has also recently been highlighted in the survey article “Research for Practice: Tracing and Debugging Distributed Systems; Programming by Examples”, which appeared in both the ACM Queue and CACM.