Dynamic Neural Program Embedding for Program Repair
Not on the map. Why?
Abstract (arXiv)
Neural program embeddings have shown much promise recently for a variety of program analysis tasks, including program synthesis, program repair, fault localization, etc. However, most existing program embeddings are based on syntactic features of programs, such as raw token sequences or abstract syntax trees. Unlike images and text, a program has an unambiguous semantic meaning that can be difficult to capture by only considering its syntax (i.e. syntactically similar pro- grams can exhibit vastly different run-time behavior), which makes syntax-based program embeddings fundamentally limited. This paper proposes a novel semantic program embedding that is learned from program execution traces. Our key insight is that program states expressed as sequential tuples of live variable values not only captures program semantics more precisely, but also offer a more natural fit for Recurrent Neural Networks to model. We evaluate different syntactic and semantic program embeddings on predicting the types of errors that students make in their submissions to an introductory programming class and two exercises on the CodeHunt education platform. Evaluation results show that our new semantic program embedding significantly outperforms the syntactic program embeddings based on token sequences and abstract syntax trees. In addition, we augment a search-based program repair system with the predictions obtained from our se- mantic embedding, and show that search efficiency is also significantly improved.
Key facts. Cited by 23 papers in the map (data through 14 Oct 2026). First posted on arXiv 20 Nov 2017.
Builds on
No reference list yet.
Built on by
Citing papers per year: 2021: 7; 2022: 6; 2023: 8; 2024: 1; 2025: 0; 2026: 1.
23 papers.
Sort:
By area:
- 2023Teaching Large Language Models to Self-Debugcited by 988
- 2023Is Self-Repair a Silver Bullet for Code Generation?cited by 197
- 2021Leveraging Automated Unit Tests for Unsupervised Code Translationcited by 82
- 2024If LLM Is the Wizard, Then Code Is the Wand: A Survey on How Code Empowers Large Language Models to Serve as Intelligent Agentscited by 79
- 2021Break-It-Fix-It: Unsupervised Learning for Program Repaircited by 71
- 2021DOBF: A Deobfuscation Pre-Training Objective for Programming Languagescited by 68
- 2021Learning to Synthesize Programs as Interpretable and Generalizable Policiescited by 59
- 2023SelfEvolve: A Code Evolution Framework via Large Language Modelscited by 43
- 2023Learning Deep Semantics for Test Completioncited by 31
- 2022Repairing Bugs in Python Assignments Using Large Language Modelscited by 28
- 2023RunBugRun -- An Executable Dataset for Automated Program Repaircited by 11
- 2022Improving Automated Program Repair with Domain Adaptationcited by 10
11 more
- 2023Syntax and Domain Aware Model for Unsupervised Program Translationcited by 7
- 2022Multi-View Graph Representation for Programming Language Processing: An Investigation into Algorithm Detectioncited by 6
- 2021Embedding API Dependency Graph for Neural Code Generationcited by 5
- 2021Predicting Patch Correctness Based on the Similarity of Failing Test Casescited by 4
- 2022Test2Vec: An Execution Trace Embedding for Test Case Prioritizationcited by 3
- 2022NeuDep: Neural Binary Memory Dependence Analysiscited by 3
- 2023Learning Generalizable Program and Architecture Representations for Performance Modelingcited by 2
- 2021WheaCha: A Method for Explaining the Predictions of Models of Codecited by 1
- 2022LAMNER: Code Comment Generation Using Character Language Model and Named Entity Recognitioncited by 1
- 2023Graph Neural Networks For Mapping Variables Between Programs -- Extended Versioncited by 0
- 2026Complexity-based code embeddingscited by 0
- 2026Complexity-based code embeddings1 Jan 2026
- 2024If LLM Is the Wizard, Then Code Is the Wand: A Survey on How Code Empowers Large Language Models to Serve as Intelligent Agents1 Jan 2024
- 2023Learning Generalizable Program and Architecture Representations for Performance Modeling25 Oct 2023
- 2023Graph Neural Networks For Mapping Variables Between Programs -- Extended Version24 Jul 2023
- 2023Is Self-Repair a Silver Bullet for Code Generation?16 Jun 2023
- 2023SelfEvolve: A Code Evolution Framework via Large Language Models5 Jun 2023
- 2023Teaching Large Language Models to Self-Debug11 Apr 2023
- 2023RunBugRun -- An Executable Dataset for Automated Program Repair3 Apr 2023
- 2023Learning Deep Semantics for Test Completion20 Feb 2023
- 2023Syntax and Domain Aware Model for Unsupervised Program Translation8 Feb 2023
- 2022Improving Automated Program Repair with Domain Adaptation21 Dec 2022
- 2022NeuDep: Neural Binary Memory Dependence Analysis4 Oct 2022
11 more
- 2022Repairing Bugs in Python Assignments Using Large Language Models29 Sep 2022
- 2022Test2Vec: An Execution Trace Embedding for Test Case Prioritization28 Jun 2022
- 2022LAMNER: Code Comment Generation Using Character Language Model and Named Entity Recognition5 Apr 2022
- 2022Multi-View Graph Representation for Programming Language Processing: An Investigation into Algorithm Detection25 Feb 2022
- 2021Leveraging Automated Unit Tests for Unsupervised Code Translation13 Oct 2021
- 2021Learning to Synthesize Programs as Interpretable and Generalizable Policies31 Aug 2021
- 2021Predicting Patch Correctness Based on the Similarity of Failing Test Cases28 Jul 2021
- 2021Break-It-Fix-It: Unsupervised Learning for Program Repair11 Jun 2021
- 2021Embedding API Dependency Graph for Neural Code Generation29 Mar 2021
- 2021DOBF: A Deobfuscation Pre-Training Objective for Programming Languages15 Feb 2021
- 2021WheaCha: A Method for Explaining the Predictions of Models of Code9 Feb 2021
- 2023Teaching Large Language Models to Self-Debugcited by 988
- 2023Teaching Large Language Models to Self-Debug11 Apr 2023
- 2023Is Self-Repair a Silver Bullet for Code Generation?cited by 197
- 2021Leveraging Automated Unit Tests for Unsupervised Code Translationcited by 82
- 2021Break-It-Fix-It: Unsupervised Learning for Program Repaircited by 71
- 2021DOBF: A Deobfuscation Pre-Training Objective for Programming Languagescited by 68
- 2021Learning to Synthesize Programs as Interpretable and Generalizable Policiescited by 59
- 2023SelfEvolve: A Code Evolution Framework via Large Language Modelscited by 43
- 2023Learning Deep Semantics for Test Completioncited by 31
- 2022Repairing Bugs in Python Assignments Using Large Language Modelscited by 28
- 2023RunBugRun -- An Executable Dataset for Automated Program Repaircited by 11
- 2022Improving Automated Program Repair with Domain Adaptationcited by 10
- 2023Syntax and Domain Aware Model for Unsupervised Program Translationcited by 7
- 2022Multi-View Graph Representation for Programming Language Processing: An Investigation into Algorithm Detectioncited by 6
12 most cited of 21 All 21 (JSON)
- 2026Complexity-based code embeddings1 Jan 2026
- 2023Learning Generalizable Program and Architecture Representations for Performance Modeling25 Oct 2023
- 2023Graph Neural Networks For Mapping Variables Between Programs -- Extended Version24 Jul 2023
- 2023Is Self-Repair a Silver Bullet for Code Generation?16 Jun 2023
- 2023SelfEvolve: A Code Evolution Framework via Large Language Models5 Jun 2023
- 2023RunBugRun -- An Executable Dataset for Automated Program Repair3 Apr 2023
- 2023Learning Deep Semantics for Test Completion20 Feb 2023
- 2023Syntax and Domain Aware Model for Unsupervised Program Translation8 Feb 2023
- 2022Improving Automated Program Repair with Domain Adaptation21 Dec 2022
- 2022NeuDep: Neural Binary Memory Dependence Analysis4 Oct 2022
- 2022Repairing Bugs in Python Assignments Using Large Language Models29 Sep 2022
- 2022Test2Vec: An Execution Trace Embedding for Test Case Prioritization28 Jun 2022
12 newest of 21 All 21 (JSON)