Office Hours: by appointment
[C.V.] [YouTube channel] [Twitter]
I'm a Professor of Computer and Information Science at the University of Pennsylvania. I received a Ph.D. in Computer Science from Stanford University in 2008, advised by Alex Aiken, and an M.S. from Purdue University in 2003, advised by Jens Palsberg. I was a researcher at Intel Labs, Berkeley from 2008 to 2011, and an Assistant Professor of Computer Science at Georgia Tech from 2011 to 2016.
Mini-course on Neurosymbolic Programming in Scallop, June 2022
Google Tech Talk on Building Developer Assistants that Think Fast and Slow, May 2022
I am broadly interested in topics related to programming languages and machine learning.
Most of my current research centers around two main themes:
- Neurosymbolic Programming [Scallop website] [NeurIPS'21 paper] [SSFT'22 tutorial]
- AI for Code [Google Tech Talk] [ICLR'22 paper on CodeTrek]
You can learn more about my research by following these links:
I regularly teach the following courses:
CIS 547: 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 http://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.
CIS 550: 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 offer this course every Spring, and it is also taught every Fall (and occasionally in Summer).