My research interests span the following areas.

  • Software Engineering (SE), programming languages (PL), and data science
  • Data science, SE & PL for data-intensive systems, and data-driven SE.
  • Modular reasoning about properties of software.
  • Advanced modularity and separation of concerns mechanisms and modular reasoning about such mechanisms.

Select Recent Publications

Research Projects

My recent research has focussed on data science and concurrency. My overarching research program is aimed at improving programmer productivity, and correctness of software systems that they produce. In particular, I am interested in designing new programming abstractions that abstract away error-prone concerns, improve modularity, and improve modular reasoning. By abstracting away error-prone concerns, and having compilers and programming frameworks automatically provide adequate implementation of such concerns, my research aspires to reduce potential for errors in software, and improve productivity. By improving modularity and modular reasoning, my research strives for improved scalability in both manual and automatic reasoning as well as verification processes. My main research projects are:


Boa project is developing a domain-specific language and its infrastructure whose goal is to significantly ease the experimental cost of mining ultra-large-scale open source repositories. Boa is a research infrastructure that consists of a domain-specific language, its compiler and data updating tools, terabytes (and growing) of raw data from open source repositories that contains hundreds of thousands of open source projects, a backend based on map-reduce to effectively analyze this dataset, a compute cluster, and a web-based frontend for writing analysis programs.

Boa project has been supported in part by the following grants.

Following research papers document progress on this project:


SpecGuru Project is developing techniques for inferring behavioral specifications that rely on both program analysis and data mining of data from open source repositories.

SpecGuru project has been supported in part by the following grants.

  • US National Science Foundation, SHF: Large:Collaborative Research: Inferring Software Specifications from Open Source Repositories by Leveraging Data and Collective Community Expertise. PI: Hridesh Rajan and Co-I: Robert Dyer, Tien Nguyen, Gary T. Leavens, and Vasant Honavar (2015-2018), Links: ISU, BGSU, UCF, and PSU.

Following research papers document progress on this project:


Panini project is developing the Capsule-oriented Programming model. Capsule-oriented programming model is aimed at making concurrent software development easier by providing two properties: (1) given a module it ought to be possible to statically, and modularly identify all points in its code where other modules might interfere (interference points), and (2) given a module and the interfaces of other modules, that the subject module interacts with, it ought to be possible to statically and modularly construct an upper bound on the behavior of all potentially interferring tasks at each interference point. We show that if a programming model has these two properties, then it is possible to modularly reason about concurrent programs in that model. By the first property, humans and tools can identify points where interference from other concurrent tasks must be considered. By the second property, the computed upper bound can be used for reasoning instead of needing the implementation of interferring modules. Compared to alternatives, where reasoning either becomes a global process or entails a global step, modular reasoning afforded by this programming model makes both manual and automated reasoning about concurrent software more scalable. Panini project has been supported in part by the following grants.

Following research papers document progress on this project:

We have created two software systems that support this programming model so far:

  • an extension of Java (and the reference compiler javac) that we call PaniniJ, and
  • an annotation-based framework that uses annotation processing facilities, instead of syntax extensions, that we call @PaniniJ.


Ptolemy project is developing an event-based language whose goal is to enable more modular reasoning about advanced separation of concerns mechanisms such as implicit invocation and aspects. Ptolemy provides quantified-typed events that act as an interface between modules. A key benefit of quantified-typed events is that they allow programmers to write new kinds of contracts that we call translucid contractstranslucid contracts, which enables modular reasoning about modules that announce events and those that listen to events. Ptolemy project has been supported in part by the following grant.

Following research papers document progress on this project:

Contact me

You can contact me using either of the e-mail addresses below. When writing, please substitute firstname with hridesh.