Program Repair and Automated Programming

10/03/2023, 4pm

Speaker

Abhik Roychoudhury

Abstract

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 automated code generation using tools like Codex and ChatGPT. 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. Automated program repair is also used for reducing exposure of software systems to security vulnerabilities. In the paper "SemFix: Program Repair via Semantic Analysis" written a decade ago, we had proposed, for the first time, the use of semantic or symbolic program analysis techniques to automatically rectify code. These techniques can be employed on manually written code as well as automatically generated code. Apart from the practical value of such techniques, conceptually this gave a new direction to use symbolic reasoning which was previously used for program verification and testing. In our work, 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. Thus symbolic analysis is used to infer specification of intent.rom the first language to support Lisp-style macros without Lisp-style parentheses, Rhombus offers a novel synthesis of macro technology that is practical and expressive. The most significant departure from Racket, apart from the shift away from parentheses, is the use of multiple binding spaces for context-specific sublanguages. For example, expressions, pattern-matching forms, and regular-expression constructions can use the same operators (with different meanings) without creating conflicts. Rhombus "closes the loop" on binding spaces and sublanguages by giving programmers the ability to create their own new spaces and sublanguages.

Bio

Abhik Roychoudhury is a Professor of Computer Science at the National University of Singapore, where he has been since 2001 after receiving his Ph.D. in Computer Science from the State University of New York at Stony Brook in 2000. Abhik's research focuses on software testing and analysis, software security and trust-worthy software construction. Abhik is a member of the Steering committee of the flagship conferences in Software Engineering, International Conference on Software Engineering (ICSE) and Symposium on Foundations of Software Engineering (FSE). His former doctoral students have been placed all over the world as academics (University College London, Max-Planck Institute, University of Melbourne and other places). His team is known for work on automated program repair, and fuzz testing which have been translated to practice. His research was honored with IEEE TCSE New Directions Award in 2022 (awarded jointly with Cristian Cadar) for contributions to symbolic execution, as well as with a Most Influential Paper Award from International Conference on Software Engineering (ICSE).