Advanced Research in Software Engineering
Our goal is to build novel techniques and tools to improve software robustness. For both traditional and AI-based software, we devise novel program analysis techniques to analyze various program behaviors and learn from them by developing advanced AI models. Such models help us building tools that automate program development, bug detection, and program repair at scale.
With the unprecedented growth of Software Engineering related data (e.g., source code, test cases, bug reports, etc.) available through open-source repositories like GitHub, Bitbucket, etc., we build AI models to capture interesting coding patterns and anti-patterns. In particular, we build ML models to automate both static- and dynamic-analysis based bug detection process at scale.
AI models are increasingly being used in safety-critical systems like autonomous vehicles. This comes with the concerns about the quality and reliability of these systems, as several erroneous and sometimes even fatal behaviors have already been reported. However, due to the fundamental architectural differences between AI and traditional software, existing software testing techniques do not apply to them in an obvious way. In fact, companies like Google, Tesla, etc. are increasingly facing all the traditional software testing challenges. To this end, we aim to develop a testing framework for detecting erroneous behaviors for AI systems. So far, we have found thousands of erroneous behaviors in award-winning self-driving car models, many of which could lead to potentially fatal crashes.
DeepInspect got accepted in ICSE 2020. Congrats Yuchi and Ziyuan!
Neutaint got accepted in S&P 2020. Congrats Dongdong!
Neuzz got accepted in S&P 2019. Congrats Dongdong!
DeepTest got accepted in ICSE 2018. Congrats Yuchi!
Our tree-based language model for source code prediction got accepted in ACL 2018. Congrats Saikat!