Office Hours: Thu, 10-11 am ET (for CIS 450)
[C.V.] [YouTube channel] [Twitter]
About MeI'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, where my advisor was Alex Aiken, and an M.S. from Purdue University in 2003, where my advisor was 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.
- In Fall 2021, I am teaching CIS 547: Software Analysis. Students at all levels are welcome!
- Online lectures on software analysis (with Spanish captions thanks to Dr. Juan P. Galeotti)
- CloneCloud, which appeared at EuroSys 2011, won the Test-of-Time Award at EuroSys 2021.
- Paper on Arbitrar, user-guided API misuse detection, to appear at S&P 2021.
- Paper on EGS, example-guided synthesis of relational queries, to appear at PLDI 2021.
I am broadly interested in programming systems research with the overarching goal of making software better, safer, and easier to build and maintain. My current focus is developing scalable techniques to reason about programs by combining machine learning and formal methods. Check out how we are using artificial intelligence to prove programs correct, uncover programming errors, and even generate programs from data. I am also interested in foundations and applications of neuro-symbolic approaches that synergistically combine deep learning and symbolic reasoning.
You can learn more about my research by following these links:
I created the first large-scale online course (MOOC) on Software Analysis and Testing. All course material is available at rightingcode.org. Lectures with assessments are available on Udacity. Autograding scripts for the labs are available to instructors upon request.
I teach the following courses at Penn: