I am most interested in reasoning about computer programs for practical purposes. Among many practical applications of program reasoning, I am currently focusing on program repair whereby correct program behavior is inferred from specifications (e.g., reference programs, test cases, and documents), based on which the buggy program is automatically fixed through various techniques such as program synthesis and deep learning.
The dual of program repair is program verification, which checks whether the program satisfies available specifications. In our lab, we use various automated verification techniques, from lightweight ones such as fuzzing to more systematic ones such as symbolic execution.
Below are the research areas I have been working on:
Program repair [ISSTA23, TOSEM22, IST22, EMSE18, FSE17, ICSE16, ICSE15]