Department of Computer Science

Hridesh Rajan

Got a question?

Got a question or comment? Contact me at (515) 294-6168 or hridesh@iastate.edu.

picture

Kingland Professor, Computer Science

Professor-In-Charge, Data Science Program

Ph.D., University of Virginia, 2005
M.S., University of Virginia, 2004
B.Tech., Indian Institute of Technology (BHU), 2000

Voice: +1-515-294-6168
E-mail: hridesh@iastate.edu
Office: 105 Atanasoff Hall
Office Hours: Monday 4:00-5:30pm

Research Interests

  • Software Engineering (SE), programming languages (PL), and compilers
  • Data science, SE & PL for data-intensive systems, and data-driven SE.
  • Concurrency, especially modular reasoning about correctness of concurrent programs.
  • Advanced separation of concerns mechanisms such as events, reactive signals, and aspects and modular reasoning about such mechanisms.

News

About

Hridesh Rajan is a full professor of computer science at Iowa State University, where he has been since 2005. Professor Rajan earned his MS and Ph.D. from the University of Virginia in 2004 and 2005 respectively. Prof. Rajan's research interests are in programming languages, software engineering, and data science where he is most known for his design of the Ptolemy programming language that showed how to modularly reason about crosscutting concerns and the Boa programming language and its infrastructure that decreases the barriers to data-driven software engineering. Professor Rajan’s recent research and educational activities are aimed at decreasing the barrier to entry to data-driven sciences to broaden participation. His work on the Boa project is aimed at invention and refinement of cyberinfrastructures that democratize data-driven science. His work on the Midwest Big Data Summer School is experimenting with broadly accessible data science curricula. Professor Rajan was the founding general chair of the Midwest Big Data Summer School.

Professor Rajan is the director of the Laboratory for Software Design at Iowa State University, director of graduate admissions and recruitment for the computer science department, Professor-In-Charge for the Data Science programs at Iowa State University, and chair of the information technology committee for the university. Professor Rajan serves on the steering committee of the Midwest Big Data Hub, a consortium of universities in the Midwest region of the United States focussed on promoting data science activities. Professor Rajan also serves as an associate editor for the IEEE Transactions on Software Engineering. Professor Rajan is a recipient of the National Science Foundation CAREER award in 2009, LAS Award for Early Achievement in Research in 2010, and a Big-12 Fellowship in 2012. He is a distinguished member of ACM, and a member of IEEE, and AAAS. He is also the inaugural holder of the Kingland professorship in the Department of Computer Science.

Short bio (for talks, etc.) Hridesh Rajan is the Kingland professor in the Department of Computer Science at Iowa State University. Prof. Rajan's research interests are in programming languages, software engineering, and data science where he is most known for his design of the Ptolemy programming language that showed how to modularly reason about crosscutting concerns and the Boa programming language and its infrastructure that decreases the barriers to data-driven software engineering. He has been recognized by the US National Science Foundation (NSF) with a CAREER award, an Early Achievement in Research Award, a Big-12 Fellowship, the Kingland Professorship, and an exemplary mentor for Junior Faculty award. Prof. Rajan is a distinguished member of the ACM, and serves as an associate editor for the IEEE Transactions on Software Engineering.

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, 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 that 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 that 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:

    1. an extension of Java (and the reference compiler javac) that we call PaniniJ, and
    2. an annotation-based framework that uses annotation processing facilities, instead of syntax extensions, that we call @PaniniJ.
  • Ptolemy, 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 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:

  • more...

Teaching

  • Spring 2018: COMS 342, a course on principles of programming languages
  • Fall 2016: COMS 362, a course on object-oriented analysis and design
  • Spring 2016: COMS 641, a course on design and semantics of data intensive languages and systems

Major Awards and Honors

Former Graduate Students

Recent Professional Services