I'm a professor in the Department of Computer and Information Science at the University of Pennsylvania. My areas of specialization are programming languages and artificial intelligence. I am a part of the ASSET Center for trustworthy AI systems, the Schlein Center for software systems and security, and PLClub, the programming languages group.
In an earlier life, I was a faculty in the College of Computing at Georgia Tech and a researcher at Intel Labs, Berkeley. I obtained a Ph.D. in Computer Science from Stanford University in 2008, advised by Alex Aiken. Before that, I received a Masters from Purdue University in 2003, advised by Jens Palsberg, and a bachelors from BITS Pilani in 1999. And even before that, I spent many idyllic years in the beautiful state of Goa, India.
My current research interests center around combining large language models with symbolic reasoning, an area called neurosymbolic programming, with applications in mathematical reasoning, clinical decision-making, and software engineering.
Mathematical Reasoning
As language models begin to produce research-level mathematics, the bottleneck shifts from generating proofs to trusting them. We study how reliably models can pose, solve, and verify mathematical problems, and where their judgment breaks down. Recent work includes MathDuels, which evaluates models as both problem posers and solvers, a study of whether frontier models are needed to verify proofs, and techniques for uncovering the blind spots of model-based proof judges.
Clinical Decision-Making
Clinical settings demand AI that is accurate, explainable, and able to incorporate expert knowledge. We collaborate with clinicians to build models that reason over physiological signals and patient records while producing outputs that physicians can inspect. Recent work includes an ECG language model for forecasting cardiac events and DISCRET, which synthesizes faithful explanations for treatment effect estimation.
Software Engineering
Language models understand code in ways that traditional program analyses cannot, but they lack the precision and scalability of those analyses. We combine the two to find security vulnerabilities in real-world software. Recent work includes IRIS, which uses language models to infer the specifications that a static analyzer needs for whole-repository reasoning, and QLCoder, which synthesizes static analysis queries directly from vulnerability descriptions.
I regularly teach the following courses:
CIS 5470: Software Analysis
This course covers the principles and practice of software analysis. A significant -- and fun! -- part of this course is a series of "labs" that involve implementing modern analysis tools in C++ atop the LLVM compiler framework.
All the material for this course is publicly available at https://cis547.github.io/.
The course caters to those who wish to become more effective software engineers or are embarking on research in topics related to software engineering or security. It is open to graduate and upper-level undergraduate students in computer science. Students from other disciplines who satisfy the prerequisites are also welcome. I teach this course every Fall.
The course is also offered in two online graduate degree programs: Penn's MCIT Online usually in the Spring semester, and Georgia Tech's OMSCS in Spring, Summer, and Fall semesters.
CIS 5500: Database Systems
This course covers topics in database systems including data modeling, logical foundations, popular languages, and implementation aspects. A significant component of the course is a group project that involves teams of 3-4 students building a full-fledged web-based database application using datasets, features, and frameworks of their choice.
The course caters to those who wish to pursue a career in data science or gain a broad yet rigorous understanding of database principles. It is open to students from all majors and departments across campus who satisfy the prerequisites. I teach this course every Spring, and it is also offered every Fall (and occasionally in Summer). The course is also offered in Penn's MCIT Online every semester (Spring, Summer, and Fall).