My interests are in the broad area of Programming Languages. More specifically, my group attempts to design new algorithms and develop automated tools to answer the following questions:
Analysis: What interesting properties hold on this program?
Verification: Is this program correct?
Optimization: Can the program run faster?
Testing: Can we produce an input to make the program fail?
Synthesis: Can we automatically create a program for this given task?
Profiling: What interesting properties frequently hold on this program?
Debugging: What is the bug in the program?
Towards solving these problems, we use techniques from compiler design theory and formal methods (logic and automata theory).