Research
Click a card to learn more about each research area
We pioneered the use of genetic programming and other stochastic search methods for automatic program repair. This line of work combines lightweight program analyses with evolutionary computation to find patches for real bugs in existing software. We study the search operators, fitness functions, and representations that make heuristic repair effective, and evaluate the quality and generalizability of the patches produced.
Tools & Frameworks
Recent Publications
- The Evolution of Automated Software Repair — Claire Le Goues, ThanhVu Nguyen, Stephanie Forrest et al., IEEE Trans. Software Eng. (2025)
- Quality of Automated Program Repair on Real-World Defects — Manish Motwani, Mauricio Soto, Yuriy Brun et al., TSE (2022)
- VarFix: balancing edit expressiveness and search effectiveness in automated program repair — Chu-Pan Wong, Priscila Santiesteban, Christian Kästner et al., ESEC/FSE '21: 29th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (2021)
- Automatic Program Repair — Claire Le Goues, Michael Pradel, Abhik Roychoudhury et al., IEEE Softw. (2021)
- Towards s/engineer/bot: Principles for Program Repair Bots — Rijnard van Tonder, Claire Le Goues, 2019 IEEE/ACM 1st International Workshop on Bots in Software Engineering (BotSE) (2019)
- Automated Program Repair — Claire Le Goues, Michael Pradel, Abhik Roychoudhury, Commun. ACM (2019)
- Leveraging Program Invariants to Promote Population Diversity in Search-Based Automatic Program Repair — Zhen Yu Ding, Yiwei Lyu, Christopher S. Timperley et al., Genetic Improvement Workshop (2019)
- A Novel Fitness Function for Automated Program Repair Based on Source Code Checkpoints — Eduardo Faria de Souza, Claire Le Goues, Celso Goncalves Camilo-Junior, Proceedings of the Genetic and Evolutionary Computation Conference (2018)
We develop repair techniques that use static analysis, semantic reasoning, and code search to produce high-quality patches with correctness guarantees. This includes semantic code search over repositories of candidate snippets, constraint-based synthesis, and deductive verification of repairs.
Tools & Frameworks
Recent Publications
- Vulnerability Repair via Concolic Execution and Code Mutations — Ridwan Shariffdeen, Christopher Steven Timperley, Yannic Noller et al., ACM Trans. Softw. Eng. Methodol. (2025)
- Patching Locking Bugs Statically with Crayons — Juan Alfredo Cruz-Carlon, Mahsa Varshosaz, Claire Le Goues et al., ACM Trans. Softw. Eng. Methodol. (2023)
- FrameFix: Automatically Repairing Statically-Detected Directive Violations in Framework Applications — Zack Coker, Joshua Sunshine, Claire Le Goues, 28th IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER) (2021)
- SOSRepair: Expressive Semantic Search for Real-World Program Repair — Afsoon Afzal, Manish Motwani, Kathryn Stolee et al., TSE (2021)
- Static Automated Program Repair for Heap Properties — Rijnard van Tonder, Claire Le Goues, International Conference on Software Engineering (2018)
- S3: Syntax- and Semantic-Guided Repair Synthesis via Programming by Examples — Xuan-Bach D. Le, Duc Hiep Chu, David Lo et al., Joint Meeting of the European Software Engineering Conference and the Symposium on the Foundations of Software Engineering (2017)
- JFIX: Semantics-Based Repair of Java programs via Symbolic PathFinder — Xuan-Bach D. Le, Duc Hiep Chu, David Lo et al., International Symposium on Software Testing and Analysis (2017)
- Enhancing Automated Program Repair with Deductive Verification — Xuan-Bach D. Le, Quang Loc Le, David Lo et al., International Conference on Software Maintenance and Evolution (2016)
We investigate how large language models can be applied to program repair and code transformation. This includes using LLMs for fault localization, patch generation, adversarial reasoning about program intent, and repairing the output of language-model-based transpilation.
Recent Publications
- When Fine-Tuning LLMs Meets Data Privacy: An Empirical Study of Federated Learning in LLM-Based Program Repair — Wenqiang Luo, Jacky W. Keung, Boyang Yang et al., ACM Trans. Softw. Eng. Methodol. (2026)
- MORepair: Teaching LLMs to Repair Code via Multi-Objective Fine-Tuning — Boyang Yang, Haoye Tian, Jiadong Ren et al., ACM Trans. Softw. Eng. Methodol. (2026)
- AdverIntent-Agent: Adversarial Reasoning for Repair Based on Inferred Program Intent — He Ye, Aidan Z. H. Yang, Chang Hu et al., Proc. ACM Softw. Eng. 2.ISSTA (2025)
- Revisiting Unnaturalness for Automated Program Repair in the Era of Large Language Models — Aidan Z. H. Yang, Sophia Kolak, Vincent J. Hellendoorn et al., Proceedings of the 47th IEEE/ACM International Conference on Software Engineering (ICSE) (2025)
- BatFix: Repairing language model-based transpilation — Daniel Ramos, Inês Lynce, Vasco Manquinho et al., ACM Transactions on Software Engineering and Methodology (2024)
- Large language models for test-free fault localization — Aidan ZH Yang, Claire Le Goues, Ruben Martins et al., Proceedings of the 46th IEEE/ACM International Conference on Software Engineering (2024)
Robotics and autonomous systems are becoming increasingly prevalent. These systems present new quality assurance challenges, which we both study and attempt to address via new testing and analysis techniques.
Recent Publications
- ROSpec: A Domain-Specific Language for ROS-based Robot Software — Paulo Canelas, Bradley Schmerl, Alcides Fonseca et al., Proceedings of the ACM on Programming Languages, OOPSLA (2025)
- Software Engineering for Robotics: Future Research Directions; Report from the 2023 Workshop on Software Engineering for Robotics — Claire Le Goues, Sebastian G. Elbaum, David J. Anthony et al., CoRR (2024)
- Active Learning Omnivariate Decision Trees for Fault Diagnosis in Robotic Systems — Casidhe Hutchison, Milda Zizyte, David Guttendorf et al., Proceedings of the 54th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN), Supplemental Volume (2024)
- Is it a Bug? Understanding Physical Unit Mismatches in Robot Software — Paulo Canelas, Trenton Tabor, John-Paul Ore et al., International Conference on Robotics and Automation (2024)
- ROSInfer: Statically Inferring Behavioral Component Models for ROS-based Robotics Systems — Tobias Dürschmid, Christopher Steven Timperley, David Garlan et al., Proceedings of the IEEE/ACM 46th International Conference on Software Engineering (2024)
- Mithra: Anomaly Detection as an Oracle for Cyberphysical Systems — Afsoon Afzal, Claire Le Goues, Christopher Steven Timperley, IEEE Trans. Software Eng. (2022)
- ROSDiscover: Statically Detecting Run-Time Architecture Misconfigurations in Robotics Systems — Christopher S. Timperley, Tobias Dürschmid, Bradley Schmerl et al., Proceedings of the 19th IEEE International Conference on Software Architecture. (2022)
- START: A Framework for Trusted and Resilient Autonomous Vehicles (Practical Experience Report) — Kevin Leach, Christopher Steven Timperley, Kevin Angstadt et al., IEEE 33rd International Symposium on Software Reliability Engineering, ISSRE 2022, Charlotte, NC, USA, October 31 - Nov. 3, 2022 (2022)
We improve reverse engineering tools and workflows, with a focus on making decompiler output more readable and useful. This includes neural approaches to variable naming and type recovery, studies of decompiler fidelity, and techniques for vulnerability detection and repair. We also work on binary analysis and crash bucketing for security applications.
Recent Publications
- FrameShift: Resizing Fuzzer Inputs Without Breaking Them — Harrison Green, Claire Le Goues, Fraser Brown, Proceedings of the 48th IEEE/ACM International Conference on Software Engineering (ICSE) (2026)
- Idioms: A Simple and Effective Framework for Turbo-Charging Local Neural Decompilation with Well-Defined Types — Luke Dramko, Claire Le Goues, Edward J. Schwartz, Proceedings of the Network and Distributed System Security Symposium (NDSS) (2026)
- Interpretable Vulnerability Detection Reports — Cláudia Mamede, José Campos, Claire Le Goues et al., Proceedings of the 40th IEEE/ACM International Conference on Automated Software Engineering (ASE) (2025)
- A Human Study of Automatically Generated Decompiler Annotations — Yuwei Yang, Skyler Grandel, Jeremy Lacomis et al., Proceedings of the 55th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN) (2025)
- Quantifying and Mitigating the Impact of Obfuscations on Machine-Learning-Based Decompilation Improvement — Luke Dramko, Deniz Bölöni-Turgut, Claire Le Goues et al., Proceedings of the 22nd International Conference on the Detection of Intrusions and Malware, and Vulnerability Assessment (DIMVA) (2025)
- Vulnerability Repair via Concolic Execution and Code Mutations — Ridwan Shariffdeen, Christopher Steven Timperley, Yannic Noller et al., ACM Trans. Softw. Eng. Methodol. (2025)
- A Taxonomy of C Decompiler Fidelity Issues — Luke Dramko, Jeremy Lacomis, Edward J Schwartz et al., 33rd USENIX Security Symposium (2024)
- DIRE and its Data: Neural Decompiled Variable Renamings with respect to Software Class — Luke Dramko, Jeremy Lacomis, Pengcheng Yin et al., ACM Trans. Softw. Eng. Methodol. (2023)
Our work leverages advances in AI to develop new development tools and QA approaches to improve testing and program transformation.
Tools & Frameworks
Recent Publications
- Idioms: A Simple and Effective Framework for Turbo-Charging Local Neural Decompilation with Well-Defined Types — Luke Dramko, Claire Le Goues, Edward J. Schwartz, Proceedings of the Network and Distributed System Security Symposium (NDSS) (2026)
- Interpretable Vulnerability Detection Reports — Cláudia Mamede, José Campos, Claire Le Goues et al., Proceedings of the 40th IEEE/ACM International Conference on Automated Software Engineering (ASE) (2025)
- AdverIntent-Agent: Adversarial Reasoning for Repair Based on Inferred Program Intent — He Ye, Aidan Z. H. Yang, Chang Hu et al., Proc. ACM Softw. Eng. 2.ISSTA (2025)
- A Human Study of Automatically Generated Decompiler Annotations — Yuwei Yang, Skyler Grandel, Jeremy Lacomis et al., Proceedings of the 55th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN) (2025)
- Quantifying and Mitigating the Impact of Obfuscations on Machine-Learning-Based Decompilation Improvement — Luke Dramko, Deniz Bölöni-Turgut, Claire Le Goues et al., Proceedings of the 22nd International Conference on the Detection of Intrusions and Malware, and Vulnerability Assessment (DIMVA) (2025)
- LWDIFF: an LLM-Assisted Differential Testing Framework for Webassembly Runtimes — Shiyao Zhou, Jincheng Wang, He Ye et al., Proceedings of the 47th IEEE/ACM International Conference on Software Engineering (ICSE) (2025)
- Revisiting Unnaturalness for Automated Program Repair in the Era of Large Language Models — Aidan Z. H. Yang, Sophia Kolak, Vincent J. Hellendoorn et al., Proceedings of the 47th IEEE/ACM International Conference on Software Engineering (ICSE) (2025)
- Are Large Language Models Memorizing Bug Benchmarks? — Daniel Ramos, Cláudia Mamede, Kush Jain et al., IEEE/ACM International Workshop on Large Language Models for Code, LLM4Code@ICSE 2025 (2025)
We develop general-purpose code transformation tools and apply them to testing and software maintenance. This includes lightweight, polyglot syntax transformation, mutation testing, fuzzing, and API migration. Our work on Comby and PolyglotPiranha provides language-agnostic approaches to large-scale code refactoring.
Tools & Frameworks
Recent Publications
- FrameShift: Resizing Fuzzer Inputs Without Breaking Them — Harrison Green, Claire Le Goues, Fraser Brown, Proceedings of the 48th IEEE/ACM International Conference on Software Engineering (ICSE) (2026)
- LWDIFF: an LLM-Assisted Differential Testing Framework for Webassembly Runtimes — Shiyao Zhou, Jincheng Wang, He Ye et al., Proceedings of the 47th IEEE/ACM International Conference on Software Engineering (ICSE) (2025)
- BatFix: Repairing language model-based transpilation — Daniel Ramos, Inês Lynce, Vasco Manquinho et al., ACM Transactions on Software Engineering and Methodology (2024)
- Syntax Is All You Need: A Universal-Language Approach to Mutant Generation — Sourav Deb, Kush Jain, Rijnard van Tonder et al., Proceedings of the 32nd ACM International Conference on the Foundations of Software Engineering (FSE) (2024)
- A Lightweight Polyglot Code Transformation Language — Ameya Ketkar, Daniel Ramos, Lazaro Clapp et al., Proceedings of the ACM on Programming Languages (2024)
- Mind the Gap: The Difference Between Coverage and Mutation Score Can Guide Testing Efforts — Kush Jain, Goutamkumar Tulajappa Kalburgi, Claire Le Goues et al., 2023 IEEE 34th International Symposium on Software Reliability Engineering (ISSRE) (2023)
- Contextual Predictive Mutation Testing — Kush Jain, Uri Alon, Alex Groce et al., Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (2023)
- MELT: Mining Effective Lightweight Transformations from Pull Requests — Daniel Ramos, Hailie Mitchell, Inês Lynce et al., IEEE/ACM International Conference on Automated Software Engineering (2023)
We have developed frameworks and datasets for evaluating program repair, and conducted empirical evaluations of repair along a number of axes.
Tools & Frameworks
Recent Publications
- Are Large Language Models Memorizing Bug Benchmarks? — Daniel Ramos, Cláudia Mamede, Kush Jain et al., IEEE/ACM International Workshop on Large Language Models for Code, LLM4Code@ICSE 2025 (2025)
- Automated Program Repair, What Is It Good For? Not Absolutely Nothing! — Hadeel Eladawy, Claire Le Goues, Yuriy Brun, ICSE (2024)
- PreciseBugCollector: Extensible, Executable and Precise Bug-Fix Collection: Solution for Challenge 8: Automating Precise Data Collection for Code Snippets with Bugs, Fixes, Locations, and Types — He Ye, Zimin Chen, Claire Le Goues, 2023 38th IEEE/ACM International Conference on Automated Software Engineering (ASE) (2023)
- Quality of Automated Program Repair on Real-World Defects — Manish Motwani, Mauricio Soto, Yuriy Brun et al., TSE (2022)
- A Panel Data Set of Cryptocurrency Development Activity on GitHub — Rijnard van Tonder, Asher Trockman, Claire Le Goues, 2019 IEEE/ACM 16th International Conference on Mining Software Repositories (MSR) (2019)
- Poster: BugZoo: A Platform for Studying Software Bugs — Christopher Steven Timperley, Susan Stepney, Claire Le Goues, International Conference on Software Engineering: Companion Proceedings (2018)
- Overfitting in Semantics-Based Automated Program Repair — Xuan-Bach D. Le, Ferdian Thung, David Lo et al., International Conference on Software Engineering (2018)
- Crashing Simulated Planes is Cheap: Can Simulation Detect Robotics Bugs Early? — Christopher Steven Timperley, Afsoon Afzal, Deborah Katz et al., International Conference on Software Testing, Validation and Verification (2018)
Our interest in applying AI to software engineering started with search-based techniques. We have looked at the application of GP and related search-based approaches for self-adaptive systems and knowledge reuse at the model level.
Recent Publications
- Information Reuse and Stochastic Search: Managing Uncertainty in Self-* Systems — Cody Kinneer, David Garlan, Claire Le Goues, ACM Trans. Auton. Adapt. Syst. (2021)
- Building Reusable Repertoires for Stochastic Self-* Planners — Cody Kinneer, Rijnard van Tonder, David Garlan et al., IEEE International Conference on Autonomic Computing and Self-Organizing Systems (ACSOS) (2020)
- Modeling Observability in Adaptive Systems to Defend against Advanced Persistent Threats — Cody Kinneer, Ryan Wagner, Fei Fang et al., Proceedings of the 17th ACM-IEEE International Conference on Formal Methods and Models for System Design (MEMOCODE) (2019)
- Leveraging Program Invariants to Promote Population Diversity in Search-Based Automatic Program Repair — Zhen Yu Ding, Yiwei Lyu, Christopher S. Timperley et al., Genetic Improvement Workshop (2019)
- A Novel Fitness Function for Automated Program Repair Based on Source Code Checkpoints — Eduardo Faria de Souza, Claire Le Goues, Celso Goncalves Camilo-Junior, Proceedings of the Genetic and Evolutionary Computation Conference (2018)
- Improved Representation and Genetic Operators for Linear Genetic Programming for Automated Program Repair — Vinicius Paulo L. Oliveira, Eduardo F. Souza, Claire Le Goues et al., Empirical Software Engineering (2018)
- A Turing Test for Genetic Improvement — Afsoon Afzal, Jeremy Lacomis, Claire Le Goues et al., Genetic Improvement Workshop (2018)
- Managing Uncertainty in Self-Adaptive Systems with Plan Reuse and Stochastic Search — Cody Kinneer, Zack Coker, Jiacheng Wang et al., Software Engineering for Adaptive and Self-Managing Systems (2018)
To produce tools that are useful to developers, it is important to understand current software development practices. We study developers and the software and artifacts they produce to understand both the current state of software quality and which factors affect software quality.
Recent Publications
- ROSpec: A Domain-Specific Language for ROS-based Robot Software — Paulo Canelas, Bradley Schmerl, Alcides Fonseca et al., Proceedings of the ACM on Programming Languages, OOPSLA (2025)
- Automated Program Repair, What Is It Good For? Not Absolutely Nothing! — Hadeel Eladawy, Claire Le Goues, Yuriy Brun, ICSE (2024)
- What Is a `Bug'? — David Gray Widder, Claire Le Goues, Commun. ACM (2024)
- Is it a Bug? Understanding Physical Unit Mismatches in Robot Software — Paulo Canelas, Trenton Tabor, John-Paul Ore et al., International Conference on Robotics and Automation (2024)
- An Empirical Study of OSS-Fuzz Bugs — Zhen Yu Ding, Claire Le Goues, International Conference on Mining Software Repositories (2021)
- Understanding and improving artifact sharing in software engineering research — Christopher Steven Timperley, Lauren Herckis, Claire Le Goues et al., Empir. Softw. Eng. (2021)
- A Study on Challenges of Testing Robotic Systems — Afsoon Afzal, Claire Le Goues, Michael Hilton et al., International Conference on Software Testing, Validation and Verification (2020)
- It Takes a Village to Build a Robot: An Empirical Study of The ROS Ecosystem — Sophia Kolak, Afsoon Afzal, Claire Le Goues et al., IEEE International Conference on Software Maintenance and Evolution (2020)