shaohua0116/awesome-program

A curated list of papers related to program synthesis, program induction, program execution, program and code repair, and programmatic reinforcement learning.

169

17 commits

updated Oct 6, 2021

See the code

README

Awesome Program

Description

This repo contains a curated list of papers related to program synthesis, program induction, program execution, program and code repair, and programmatic reinforcement learning. This list is maintained by Shao-Hua Sun.

You are more than welcome to contribute by suggesting changes to make the list more comprehensive or correcting errors. Please simply create a pull request or contact me via email. If you find this repo useful for your research, please consider citing this list.

Content

Program Synthesis

The goal of program synthesis is to construct a human-readable program that satisfies task specifications represented as input/output pairs, demonstrations, natural language instructions, etc. Recent works also explore representing images and 3D shapes using programs, allowing applications such as editing, scene understanding, analogy-making, reverse engineering, etc.

  • 41 papers
Paper TitleConferenceYearLink
Latent Attention For If-Then Program SynthesisNIPS2016link
Neural Scene De-renderingCVPR2017link
Learning Shape Abstractions by Assembling Volumetric PrimitivesCVPR2017link
DeepCoder: Learning to Write ProgramsICLR2017link
Neuro-Symbolic Program SynthesisICLR2017link
RobustFill: Neural Program Learning under Noisy I/OICML2017link
Differentiable Programs with Neural LibrariesICML2017link
pix2code: Generating Code from a Graphical User Interface ScreenshotarXiv2017link
Seq2SQL: Generating Structured Queries from Natural Language using Reinforcement LearningarXiv2017link
CSGNet: Neural Shape Parser for Constructive Solid GeometryCVPR2018link
NL2Bash: A Corpus and Semantic Parser for Natural Language Interface to the Linux Operating SystemELRA2018link
Leveraging Grammar and Reinforcement Learning for Neural Program SynthesisICLR2018link
Towards Synthesizing Complex Programs from Input-Output ExamplesICLR2018link
Neural Program Synthesis from Diverse Demonstration VideosICML2018link
Improving Neural Program Synthesis with Inferred Execution TracesNeurIPS2018link
Automatic Program Synthesis of Long Programs with a Learned Garbage CollectorNeurIPS2018link
Neural Program Synthesis with Priority Queue TrainingarXiv2018link
Recent Advances in Neural Program SynthesisarXiv2018link
Watch, Reason and Code- Learning to Represent Videos Using ProgramACM Multimedia2019link
Program-Guided Image ManipulatorsICCV2019link
Execution-Guided Neural Program SynthesisICLR2019link
Learning to Describe Scenes with ProgramsICLR2019link
Learning to Infer and Execute 3D Shape ProgramsICLR2019link
Synthetic Datasets for Neural Program SynthesisICLR2019link
Learning to Infer Program SketchesICML2019link
Write, Execute, Assess Program Synthesis with a REPLNeurIPS2019link
Ain’t Nobody Got Time For Coding: Structure-Aware Program Synthesis From Natural LanguagearXiv2019link
Learning Compositional Rules via Neural Program SynthesisNeurIPS2020link
Synthesize, Execute and Debug: Learning to Repair for Neural Program SynthesisNeurIPS2020link
PLANS: Neuro-Symbolic Program Learning from VideosNeurIPS2020link
Neural Program Synthesis with a Differentiable FixerarXiv2020link
Learning to Infer Shape Programs Using Self TrainingarXiv2020link
Representing Partial Programs with Blended Abstract SemanticsICLR2021link
SpreadsheetCoder: Formula Prediction from Semi-structured ContextICML2021link
Latent Programmer: Discrete Latent Codes for Program SynthesisICML2021link
Leveraging Language to Learn Program Abstractions and Search HeuristicsICML2021link
A large-scale benchmark for few-shot program induction and synthesisICML2021link
Latent Execution for Neural Program Synthesis Beyond Domain-Specific LanguagesarXiv2021link
Learning to Combine Per-Example Solutions for Neural Program SynthesisarXiv2021link
Evaluating Large Language Models Trained on CodearXiv2021link
Program Synthesis with Large Language ModelsarXiv2021link

Program Induction

Unlike program synthesis works that are designed to explicitly synthesize programs, program induction methods aim to implicitly induce the underlying programs to mimic the desired behaviors demonstrated in task specifications (e.g. execution traces) to solve algorithmic tasks such as digit addition and string transformations and achieve better generalization.

  • 21 papers
Paper TitleConferenceYearLink
Neural Turing MachinesarXiv2014link
Learning Simple Algorithms from ExamplesarXiv2015link
Reinforcement Learning Neural Turing Machines-RevisedarXiv2015link
Neural GPUs Learn AlgorithmsarXiv2015link
Neural Random-Access MachinesarXiv2015link
Neural Programmer-InterpretersICLR2016link
Extensions and Limitations of the Neural GPUarXiv2016link
Neural Program LatticesICLR2017link
Making Neural Programming Architectures Generalize via RecursionICLR2017link
Neural Program Meta-InductionNIPS2017link
Using Program Induction to Interpret Transition System DynamicsarXiv2017link
Improving the Universality and Learnability of Neural Programmer-Interpreters with Combinator AbstractionICLR2018link
Neural Task Programming: Learning to Generalize Across Hierarchical TasksICRA2018link
Memory Augmented Policy Optimization for Program Synthesis with GeneralizationNeurIPS2018link
Neural Task Graphs: Generalizing to Unseen Tasks from a Single Video DemonstrationCVPR2019link
Learning Compositional Neural Programs with Recursive Tree Search and PlanningNeurIPS2019link
Learning Algorithmic Solutions to Symbolic Planning Tasks with a Neural Computer ArchitecturearXiv2019link
Neural Execution Engines- Learning to Execute SubroutinesNeurIPS2020link
DreamCoder: Growing generalizable, interpretable knowledge with wake-sleep Bayesian program learningarXiv2020link
Strong Generalization and Efficiency in Neural ProgramsarXiv2020link
A large-scale benchmark for few-shot program induction and synthesisICML2021link

Program Execution

Program execution works explore domains such as utilizing programs as instructions to guide reinforcement learning agents and improving program synthesis performance by executing partially generated programs.

  • 11 papers
Paper TitleConferenceYearLink
Learning to ExecutearXiv2014link
Modular Multitask Reinforcement Learning with Policy SketchesICML2017link
Zero-Shot Task Generalization with Multi-Task Deep Reinforcement LearningICML2017link
Programmable AgentsNIPS2017link
A Composable Specification Language for Reinforcement Learning TasksNeurIPS2019link
Program Guided AgentICLR2020link
Learning to Execute Programs with Instruction Pointer Attention Graph Neural NetworksNeurIPS2020link
Reinforcement Learning of Implicit and Explicit Control Flow in InstructionsICML2021link
ProTo: Program-Guided Transformer for Program-Guided TasksNeurIPS2021link
Latent Execution for Neural Program Synthesis Beyond Domain-Specific LanguagesarXiv2021link
Program Synthesis Guided Reinforcement LearningarXiv2021link

Program and Code Repair

Program and code repair methods aim to automatically identify bugs in code and potentially propose solutions to fix them to alleviate the burden of programmers.

  • 11 papers
Paper TitleConferenceYearLink
SemFix: Program Repair via Semantic AnalysisICSE2013link
DynaMoth: Dynamic Code Synthesis for Automatic Program RepairAST2016link
Leveraging syntax-related code for automated program repairASE2017link
Contract-Based Program Repair without the ContractsASE2017link
Shaping program repair space with existing patches and similar codeACM SIGSOFT2018link
LSRepair: Live Search of Fix Ingredients for Automated Program RepairAPSEC2018link
Automated Program RepairCACM2019link
Sorting and Transforming Program Repair Ingredients via Deep Learning Code SimilaritiesSANER2019link
FixMiner: Mining Relevant Fix Patterns for Automated Program RepairESEJ2020link
Graph-based, Self-Supervised Program Repair from Diagnostic FeedbackICML2020link
DLFix: Context-based Code Transformation Learning for Automated Program RepairICSE2020link

Programmatic Reinforcement Learning

To solve tasks described by MDPs, the goal of programmatic reinforcement learning is to learn programmatic policies that are more structured, verifiable, interpretable, and generalizable. The following papers represent programmatic policies using representations such as decision trees, finite state machines, or programs structured in domain-specific languages.

  • 10 papers
Paper TitleConferenceYearLink
Programmable Reinforcement Learning AgentsNIPS2000link
Programmatically Interpretable Reinforcement LearningICML2018link
Verifiable Reinforcement Learning via Policy ExtractionNeurIPS2018link
Towards Mixed Optimization for Reinforcement Learning with Program SynthesisarXiv2018link
Synthesizing Programmatic Policies that Inductively GeneralizeICLR2019link
Learning Finite State Representations of Recurrent Policy NetworksICLR2019link
Neural logic reinforcement learningICML2019link
Imitation-Projected Programmatic Reinforcement LearningNeurIPS2019link
Discovering symbolic policies with deep reinforcement learningICML2021link
Learning to Synthesize Programs as Interpretable and Generalizable PoliciesNeurIPS2021link

Cite this list

@misc{sun2021programpaperlist,
    author = {Sun, Shao-Hua},
    title = {Program paper list: program synthesis, program induction, program execution, program and code repair, and programmatic reinforcement learning},
    year = {2021},
    journal = {GitHub repository},
    url = {https://github.com/shaohua0116/awesome-program},
}

Contributors

shaohua0116

10 commits

jesbu1

4 commits

sjtuytc

3 commits

shaohua0116/awesome-program

A curated list of papers related to program synthesis, program induction, program execution, program and code repair, and programmatic reinforcement learning.

169

17 commits

updated Oct 6, 2021

See the code

README

Awesome Program

Description

This repo contains a curated list of papers related to program synthesis, program induction, program execution, program and code repair, and programmatic reinforcement learning. This list is maintained by Shao-Hua Sun.

You are more than welcome to contribute by suggesting changes to make the list more comprehensive or correcting errors. Please simply create a pull request or contact me via email. If you find this repo useful for your research, please consider citing this list.

Content

Program Synthesis

The goal of program synthesis is to construct a human-readable program that satisfies task specifications represented as input/output pairs, demonstrations, natural language instructions, etc. Recent works also explore representing images and 3D shapes using programs, allowing applications such as editing, scene understanding, analogy-making, reverse engineering, etc.

  • 41 papers
Paper TitleConferenceYearLink
Latent Attention For If-Then Program SynthesisNIPS2016link
Neural Scene De-renderingCVPR2017link
Learning Shape Abstractions by Assembling Volumetric PrimitivesCVPR2017link
DeepCoder: Learning to Write ProgramsICLR2017link
Neuro-Symbolic Program SynthesisICLR2017link
RobustFill: Neural Program Learning under Noisy I/OICML2017link
Differentiable Programs with Neural LibrariesICML2017link
pix2code: Generating Code from a Graphical User Interface ScreenshotarXiv2017link
Seq2SQL: Generating Structured Queries from Natural Language using Reinforcement LearningarXiv2017link
CSGNet: Neural Shape Parser for Constructive Solid GeometryCVPR2018link
NL2Bash: A Corpus and Semantic Parser for Natural Language Interface to the Linux Operating SystemELRA2018link
Leveraging Grammar and Reinforcement Learning for Neural Program SynthesisICLR2018link
Towards Synthesizing Complex Programs from Input-Output ExamplesICLR2018link
Neural Program Synthesis from Diverse Demonstration VideosICML2018link
Improving Neural Program Synthesis with Inferred Execution TracesNeurIPS2018link
Automatic Program Synthesis of Long Programs with a Learned Garbage CollectorNeurIPS2018link
Neural Program Synthesis with Priority Queue TrainingarXiv2018link
Recent Advances in Neural Program SynthesisarXiv2018link
Watch, Reason and Code- Learning to Represent Videos Using ProgramACM Multimedia2019link
Program-Guided Image ManipulatorsICCV2019link
Execution-Guided Neural Program SynthesisICLR2019link
Learning to Describe Scenes with ProgramsICLR2019link
Learning to Infer and Execute 3D Shape ProgramsICLR2019link
Synthetic Datasets for Neural Program SynthesisICLR2019link
Learning to Infer Program SketchesICML2019link
Write, Execute, Assess Program Synthesis with a REPLNeurIPS2019link
Ain’t Nobody Got Time For Coding: Structure-Aware Program Synthesis From Natural LanguagearXiv2019link
Learning Compositional Rules via Neural Program SynthesisNeurIPS2020link
Synthesize, Execute and Debug: Learning to Repair for Neural Program SynthesisNeurIPS2020link
PLANS: Neuro-Symbolic Program Learning from VideosNeurIPS2020link
Neural Program Synthesis with a Differentiable FixerarXiv2020link
Learning to Infer Shape Programs Using Self TrainingarXiv2020link
Representing Partial Programs with Blended Abstract SemanticsICLR2021link
SpreadsheetCoder: Formula Prediction from Semi-structured ContextICML2021link
Latent Programmer: Discrete Latent Codes for Program SynthesisICML2021link
Leveraging Language to Learn Program Abstractions and Search HeuristicsICML2021link
A large-scale benchmark for few-shot program induction and synthesisICML2021link
Latent Execution for Neural Program Synthesis Beyond Domain-Specific LanguagesarXiv2021link
Learning to Combine Per-Example Solutions for Neural Program SynthesisarXiv2021link
Evaluating Large Language Models Trained on CodearXiv2021link
Program Synthesis with Large Language ModelsarXiv2021link

Program Induction

Unlike program synthesis works that are designed to explicitly synthesize programs, program induction methods aim to implicitly induce the underlying programs to mimic the desired behaviors demonstrated in task specifications (e.g. execution traces) to solve algorithmic tasks such as digit addition and string transformations and achieve better generalization.

  • 21 papers
Paper TitleConferenceYearLink
Neural Turing MachinesarXiv2014link
Learning Simple Algorithms from ExamplesarXiv2015link
Reinforcement Learning Neural Turing Machines-RevisedarXiv2015link
Neural GPUs Learn AlgorithmsarXiv2015link
Neural Random-Access MachinesarXiv2015link
Neural Programmer-InterpretersICLR2016link
Extensions and Limitations of the Neural GPUarXiv2016link
Neural Program LatticesICLR2017link
Making Neural Programming Architectures Generalize via RecursionICLR2017link
Neural Program Meta-InductionNIPS2017link
Using Program Induction to Interpret Transition System DynamicsarXiv2017link
Improving the Universality and Learnability of Neural Programmer-Interpreters with Combinator AbstractionICLR2018link
Neural Task Programming: Learning to Generalize Across Hierarchical TasksICRA2018link
Memory Augmented Policy Optimization for Program Synthesis with GeneralizationNeurIPS2018link
Neural Task Graphs: Generalizing to Unseen Tasks from a Single Video DemonstrationCVPR2019link
Learning Compositional Neural Programs with Recursive Tree Search and PlanningNeurIPS2019link
Learning Algorithmic Solutions to Symbolic Planning Tasks with a Neural Computer ArchitecturearXiv2019link
Neural Execution Engines- Learning to Execute SubroutinesNeurIPS2020link
DreamCoder: Growing generalizable, interpretable knowledge with wake-sleep Bayesian program learningarXiv2020link
Strong Generalization and Efficiency in Neural ProgramsarXiv2020link
A large-scale benchmark for few-shot program induction and synthesisICML2021link

Program Execution

Program execution works explore domains such as utilizing programs as instructions to guide reinforcement learning agents and improving program synthesis performance by executing partially generated programs.

  • 11 papers
Paper TitleConferenceYearLink
Learning to ExecutearXiv2014link
Modular Multitask Reinforcement Learning with Policy SketchesICML2017link
Zero-Shot Task Generalization with Multi-Task Deep Reinforcement LearningICML2017link
Programmable AgentsNIPS2017link
A Composable Specification Language for Reinforcement Learning TasksNeurIPS2019link
Program Guided AgentICLR2020link
Learning to Execute Programs with Instruction Pointer Attention Graph Neural NetworksNeurIPS2020link
Reinforcement Learning of Implicit and Explicit Control Flow in InstructionsICML2021link
ProTo: Program-Guided Transformer for Program-Guided TasksNeurIPS2021link
Latent Execution for Neural Program Synthesis Beyond Domain-Specific LanguagesarXiv2021link
Program Synthesis Guided Reinforcement LearningarXiv2021link

Program and Code Repair

Program and code repair methods aim to automatically identify bugs in code and potentially propose solutions to fix them to alleviate the burden of programmers.

  • 11 papers
Paper TitleConferenceYearLink
SemFix: Program Repair via Semantic AnalysisICSE2013link
DynaMoth: Dynamic Code Synthesis for Automatic Program RepairAST2016link
Leveraging syntax-related code for automated program repairASE2017link
Contract-Based Program Repair without the ContractsASE2017link
Shaping program repair space with existing patches and similar codeACM SIGSOFT2018link
LSRepair: Live Search of Fix Ingredients for Automated Program RepairAPSEC2018link
Automated Program RepairCACM2019link
Sorting and Transforming Program Repair Ingredients via Deep Learning Code SimilaritiesSANER2019link
FixMiner: Mining Relevant Fix Patterns for Automated Program RepairESEJ2020link
Graph-based, Self-Supervised Program Repair from Diagnostic FeedbackICML2020link
DLFix: Context-based Code Transformation Learning for Automated Program RepairICSE2020link

Programmatic Reinforcement Learning

To solve tasks described by MDPs, the goal of programmatic reinforcement learning is to learn programmatic policies that are more structured, verifiable, interpretable, and generalizable. The following papers represent programmatic policies using representations such as decision trees, finite state machines, or programs structured in domain-specific languages.

  • 10 papers
Paper TitleConferenceYearLink
Programmable Reinforcement Learning AgentsNIPS2000link
Programmatically Interpretable Reinforcement LearningICML2018link
Verifiable Reinforcement Learning via Policy ExtractionNeurIPS2018link
Towards Mixed Optimization for Reinforcement Learning with Program SynthesisarXiv2018link
Synthesizing Programmatic Policies that Inductively GeneralizeICLR2019link
Learning Finite State Representations of Recurrent Policy NetworksICLR2019link
Neural logic reinforcement learningICML2019link
Imitation-Projected Programmatic Reinforcement LearningNeurIPS2019link
Discovering symbolic policies with deep reinforcement learningICML2021link
Learning to Synthesize Programs as Interpretable and Generalizable PoliciesNeurIPS2021link

Cite this list

@misc{sun2021programpaperlist,
    author = {Sun, Shao-Hua},
    title = {Program paper list: program synthesis, program induction, program execution, program and code repair, and programmatic reinforcement learning},
    year = {2021},
    journal = {GitHub repository},
    url = {https://github.com/shaohua0116/awesome-program},
}

Contributors

shaohua0116

10 commits

jesbu1

4 commits

sjtuytc

3 commits