My research interests span programming languages, program synthesis and verification, constraint solving, and machine learning.
My recent research focuses on the interplay between deep learning and symbolic reasoning. On one hand, I have applied deep learning to synthesize proofs (e.g. loop invariants) with only weak supervision from a theorem prover, as well as programs with respect to a specification (either logical formula or input/output examples). On the other hand, I am investigating symbolic reasoning techniques to make deep learning more data efficient and reinforcement learning more sample efficient.
In the past, I have worked on: 1) using statistical approaches for program reasoning (e.g. mining API specifications); 2) constraint solving (e.g. MaxSAT, Markov Logic Network) and their applications in program analysis; and 3) scalable synthesis of Datalog programs using active learning.
Teaching Assistant, CIS 700 Software Analysis and Testing, University of Pennsylvania, 2017 Fall
Teaching Assistant, CS 6340 Software Analysis and Testing (online course), Georgia Institute of Technology, 2016 Spring
Teaching Assistant, CS 7001 Introduction to Graduate Studies, Georgia Institute of Technology, 2015 Fall
Teaching Assistant, CS 285 Computer Networks, Vanderbilt University, 2012 Spring
Teaching Assistant, CS 212 Discrete Structures, Vanderbilt University, 2011 Fall
PLDI’18 Student Volunteer Chair, Philadelphia, PA, June 18-22, 2018
POPL’16 Student Volunteer, St. Petersburg, FL, Jan. 20-23, 2016
ESEC/FSE Travel Fund Award from the US National Science Foundation, 2018
World Finalist of the ACM/ICPC, Ekaterinburg, 2014
Champion of the 38th ACM/ICPC Mid-Central USA Regional, Nashville, 2013
National Scholarship (top 1), Nankai University, 2010
Tianjin Government Scholarship (top 4), Nankai University, 2009