Program Repair and Trusted Automatic Programming

Automated program repair can be seen as automated code generation at a micro-scale. The research done in automated program repair is thus particularly relevant today with the movement towards automatic programming using tools like Github Copilot. Since automatically generated code from natural language descriptions lack understanding of program semantics, using semantic analysis techniques to auto-correct or rectify the code is of value. In our work we have proposed the use of semantic or symbolic program analysis techniques to automatically rectify code. Effectively symbolic analysis is used to generalize tests into specifications of intent. These techniques can be employed on manually written code as well as automatically generated code. The techniques have been used for security vulnerability repair in software (thereby achieving autonomous cybersecurity) as well as for supporting intelligent tutoring systems teaching programming. Apart from the practical value of such techniques, conceptually this gave a new direction to use symbolic reasoning. We use symbolic reasoning to derive a logical constraint which would capture what it means for the program to be “correct” thereby inferring specification about intended program behavior. We will conclude with a forward looking perspective on last mile repair of code generated from large language models, as well as acceptable evidences of correctness for such automatically generated code.

Abhik Roychoudhury (https://abhikrc.com) is Provost’s Chair Professor of Computer Science at the National University of Singapore (NUS), where he leads a research team on Trustworthy and Secure Software (TSS). His research group is known for contributions to automatic programming and automated program repair, as well as to fuzzing and symbolic execution. These have been honored with various awards including an Intl Conf on Software Engineering (ICSE) Most Influential Paper Award (Test-of-time award) for program repair. Doctoral students graduated fom his research team have taken up faculty positions in many academic institutions including Max Planck Institute, University College London, University of Melbourne, Concordia University and NUS. He has served the software engineering research community in various capacities including as chair of the major conferences of the field, ICSE and FSE. Abhik received his PhD in Computer Science from State University of New York at Stony Brook in 2000.