Spotlight: Ravi Chugh

This post continues our ongoing series on young PL researchers who are about to start independent research positions in academia and research labs. This week, we  feature Ravi Chugh, who is starting as an assistant professor at the University of Chicago in the Fall.


Ravi Chugh, UCSD Ph.D., Assistant Professor at U. Chicago

Tell us a bit about your academic background.

I am currently a postdoc at UC San Diego, where I finished my PhD last fall, and soon I will join the University of Chicago. I was an undergraduate at the University of Pennsylvania, where I had a great time with coursework and with TAing classes. My introduction to programming languages and research came very late in my time at Penn, so a large part of my motivation to pursue a PhD came from how much I enjoyed my early teaching opportunities. While at UCSD, and during internships at Microsoft Research and Mozilla, I’ve worked on several programming languages and program analysis projects with the general goal of improving software reliability. Much of my recent work has focused on trying to analyze tricky features of scripting languages, such as JavaScript and Python, in order to bring some of the benefits of program analysis to these increasingly popular languages.

What is the sort of research that you like to do?

What’s cool about PL research is that a single problem may lead you to spend all your time coding, all your time scratching out equations and proofs, or split your time somewhere in between these extremes. The kinds of problems I tend to like to fall near the middle of this spectrum. The essence of the problem can be formulated and studied precisely and then theoretical insights can be scaled up to practical applications with careful and clever engineering.

We’d like to read one paper of yours to get a flavor of your work. Which one should that be, and what’s it about?

My “Dependent Types for JavaScript” paper, which appeared at OOPSLA 2012, is a good example of the kind of problem I just described. The goal of this project is to build a statically typed dialect of JavaScript, which is notorious for highly dynamic features and programming idioms. At first blush, JavaScript seems to be full of exotic syntactic and semantic features. But after you stare at it for a while (or, in this case, after Arjun Guha and his co-authors did in the ECOOP 2010 paper “The Essence of JavaScript”), you realize that most of JavaScript can be understood in terms of (literally, by translating to) a core language that researchers have studied for decades. The real challenge, however, is that translated JavaScript programs often use features of the core language in difficult-to-analyze ways. The main contribution of this paper was a (heavyweight) type system that could analyze some of these programs.

What new problems are you exploring, or plan to explore, once you start your faculty job?

I would really like to see some of the techniques in Dependent JavaScript, and related projects in the community, find their way into popular IDEs and tools. Some of these techniques are rather heavyweight and require a lot of manual programmer annotations, so clearly they are not all directly suited for use in practice today. But I think there is an opportunity to develop scaled down versions of these techniques that can be beneficial. A lot of this work would be more towards the “clever engineering” end of the spectrum that I mentioned, and I think it would be important to do. Given how popular languages like JavaScript, Python, and Ruby have become, there is a lot of potential to improve tool support for developers.

What are the things about PL research and the PL community that you like the most?

It’s great to have such a wide variety of technical and engineering challenges in PL. Even better, because programming languages and programming tools are the most common interfaces between computer science and other disciplines, PL researchers have plenty of potential application domains for their ideas. In terms of community, I have always been grateful for how welcoming most older students, faculty, and senior researchers are towards younger students at PL conferences. There are certainly ways that we can become more inclusive, especially for underrepresented groups, but I think the PL community is in a good place overall.

What would you like to see more of in the PL community?

I think we can do better overall, both in our papers and presentations, in connecting our new ideas to previous work. There are obviously way more topics and papers than we can each keep up with, so we should strive to ensure that our own papers and talks are accessible to broad audiences and make clear connections to related work. Many topics in PL can be modeled and studied with precise definitions, so we should take advantage of this as much as possible.

What advice would you have for graduate students who want a faculty job in the next couple of years?

It is a good time for computer science departments, in general, and for programming languages research, in particular. Nevertheless, there will always be far fewer faculty positions available than there are extremely qualified researchers and teachers. So my main advice is to make sure that you spend your time working on projects that you are passionate about, no matter what career path you are pursuing. We are fortunate in computer science to have many opportunities in industry and academia to work on problems that are exciting and have potential for impact. A faculty position is not the only way to achieve these goals.

Leave a Comment

Filed under Dynamic languages, Interviews, New scientists, Types

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.