sjtuytc / awesome-program

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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 Title Conference Year Link
Latent Attention For If-Then Program Synthesis NIPS 2016 link
Neural Scene De-rendering CVPR 2017 link
Learning Shape Abstractions by Assembling Volumetric Primitives CVPR 2017 link
DeepCoder: Learning to Write Programs ICLR 2017 link
Neuro-Symbolic Program Synthesis ICLR 2017 link
RobustFill: Neural Program Learning under Noisy I/O ICML 2017 link
Differentiable Programs with Neural Libraries ICML 2017 link
pix2code: Generating Code from a Graphical User Interface Screenshot arXiv 2017 link
Seq2SQL: Generating Structured Queries from Natural Language using Reinforcement Learning arXiv 2017 link
CSGNet: Neural Shape Parser for Constructive Solid Geometry CVPR 2018 link
NL2Bash: A Corpus and Semantic Parser for Natural Language Interface to the Linux Operating System ELRA 2018 link
Leveraging Grammar and Reinforcement Learning for Neural Program Synthesis ICLR 2018 link
Towards Synthesizing Complex Programs from Input-Output Examples ICLR 2018 link
Neural Program Synthesis from Diverse Demonstration Videos ICML 2018 link
Improving Neural Program Synthesis with Inferred Execution Traces NeurIPS 2018 link
Automatic Program Synthesis of Long Programs with a Learned Garbage Collector NeurIPS 2018 link
Neural Program Synthesis with Priority Queue Training arXiv 2018 link
Recent Advances in Neural Program Synthesis arXiv 2018 link
Watch, Reason and Code- Learning to Represent Videos Using Program ACM Multimedia 2019 link
Program-Guided Image Manipulators ICCV 2019 link
Execution-Guided Neural Program Synthesis ICLR 2019 link
Learning to Describe Scenes with Programs ICLR 2019 link
Learning to Infer and Execute 3D Shape Programs ICLR 2019 link
Synthetic Datasets for Neural Program Synthesis ICLR 2019 link
Learning to Infer Program Sketches ICML 2019 link
Write, Execute, Assess Program Synthesis with a REPL NeurIPS 2019 link
Ain’t Nobody Got Time For Coding: Structure-Aware Program Synthesis From Natural Language arXiv 2019 link
Learning Compositional Rules via Neural Program Synthesis NeurIPS 2020 link
Synthesize, Execute and Debug: Learning to Repair for Neural Program Synthesis NeurIPS 2020 link
PLANS: Neuro-Symbolic Program Learning from Videos NeurIPS 2020 link
Neural Program Synthesis with a Differentiable Fixer arXiv 2020 link
Learning to Infer Shape Programs Using Self Training arXiv 2020 link
Representing Partial Programs with Blended Abstract Semantics ICLR 2021 link
SpreadsheetCoder: Formula Prediction from Semi-structured Context ICML 2021 link
Latent Programmer: Discrete Latent Codes for Program Synthesis ICML 2021 link
Leveraging Language to Learn Program Abstractions and Search Heuristics ICML 2021 link
A large-scale benchmark for few-shot program induction and synthesis ICML 2021 link
Latent Execution for Neural Program Synthesis Beyond Domain-Specific Languages arXiv 2021 link
Learning to Combine Per-Example Solutions for Neural Program Synthesis arXiv 2021 link
Evaluating Large Language Models Trained on Code arXiv 2021 link
Program Synthesis with Large Language Models arXiv 2021 link

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 Title Conference Year Link
Neural Turing Machines arXiv 2014 link
Learning Simple Algorithms from Examples arXiv 2015 link
Reinforcement Learning Neural Turing Machines-Revised arXiv 2015 link
Neural GPUs Learn Algorithms arXiv 2015 link
Neural Random-Access Machines arXiv 2015 link
Neural Programmer-Interpreters ICLR 2016 link
Extensions and Limitations of the Neural GPU arXiv 2016 link
Neural Program Lattices ICLR 2017 link
Making Neural Programming Architectures Generalize via Recursion ICLR 2017 link
Neural Program Meta-Induction NIPS 2017 link
Using Program Induction to Interpret Transition System Dynamics arXiv 2017 link
Improving the Universality and Learnability of Neural Programmer-Interpreters with Combinator Abstraction ICLR 2018 link
Neural Task Programming: Learning to Generalize Across Hierarchical Tasks ICRA 2018 link
Memory Augmented Policy Optimization for Program Synthesis with Generalization NeurIPS 2018 link
Neural Task Graphs: Generalizing to Unseen Tasks from a Single Video Demonstration CVPR 2019 link
Learning Compositional Neural Programs with Recursive Tree Search and Planning NeurIPS 2019 link
Learning Algorithmic Solutions to Symbolic Planning Tasks with a Neural Computer Architecture arXiv 2019 link
Neural Execution Engines- Learning to Execute Subroutines NeurIPS 2020 link
DreamCoder: Growing generalizable, interpretable knowledge with wake-sleep Bayesian program learning arXiv 2020 link
Strong Generalization and Efficiency in Neural Programs arXiv 2020 link
A large-scale benchmark for few-shot program induction and synthesis ICML 2021 link

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.

  • 10 papers
Paper Title Conference Year Link
Learning to Execute arXiv 2014 link
Modular Multitask Reinforcement Learning with Policy Sketches ICML 2017 link
Zero-Shot Task Generalization with Multi-Task Deep Reinforcement Learning ICML 2017 link
Programmable Agents NIPS 2017 link
A Composable Specification Language for Reinforcement Learning Tasks NeurIPS 2019 link
Program Guided Agent ICLR 2020 link
Learning to Execute Programs with Instruction Pointer Attention Graph Neural Networks NeurIPS 2020 link
Reinforcement Learning of Implicit and Explicit Control Flow in Instructions ICML 2021 link
Latent Execution for Neural Program Synthesis Beyond Domain-Specific Languages arXiv 2021 link
Program Synthesis Guided Reinforcement Learning arXiv 2021 link

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 Title Conference Year Link
SemFix: Program Repair via Semantic Analysis ICSE 2013 link
DynaMoth: Dynamic Code Synthesis for Automatic Program Repair AST 2016 link
Leveraging syntax-related code for automated program repair ASE 2017 link
Contract-Based Program Repair without the Contracts ASE 2017 link
Shaping program repair space with existing patches and similar code ACM SIGSOFT 2018 link
LSRepair: Live Search of Fix Ingredients for Automated Program Repair APSEC 2018 link
Automated Program Repair CACM 2019 link
Sorting and Transforming Program Repair Ingredients via Deep Learning Code Similarities SANER 2019 link
FixMiner: Mining Relevant Fix Patterns for Automated Program Repair ESEJ 2020 link
Graph-based, Self-Supervised Program Repair from Diagnostic Feedback ICML 2020 link
DLFix: Context-based Code Transformation Learning for Automated Program Repair ICSE 2020 link

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.

  • 9 papers
Paper Title Conference Year Link
Programmable Reinforcement Learning Agents NIPS 2000 link
Programmatically Interpretable Reinforcement Learning ICML 2018 link
Verifiable Reinforcement Learning via Policy Extraction NeurIPS 2018 link
Towards Mixed Optimization for Reinforcement Learning with Program Synthesis arXiv 2018 link
Synthesizing Programmatic Policies that Inductively Generalize ICLR 2019 link
Learning Finite State Representations of Recurrent Policy Networks ICLR 2019 link
Imitation-Projected Programmatic Reinforcement Learning NeurIPS 2019 link
Discovering symbolic policies with deep reinforcement learning ICML 2021 link
Learning to Synthesize Programs as Interpretable and Generalizable Policies arXiv 2021 link

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},
}

About

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