Submitted:
21 March 2025
Posted:
24 March 2025
You are already at the latest version
Abstract
Keywords:
1. Introduction
2. Background and Related Work
2.1. Program Synthesis in Automated Code Generation
2.2. Search-Based Program Synthesis
2.3. Reviews Related to Search-Based Program Synthesis
3. Methodology
3.1. Definition of Research Questions
- RQ1: What are the main techniques and trends in SBPS?
-
RQ2: What are the guiding principles of SBPS algorithms?
- −
- RQ2.1: What type of user intent/input is used to guide the SBPS search process?
- −
- RQ2.2: What search space representation is used by SBPS algorithms?
- RQ3: What are the types of programming tasks targetted by each SBPS algorithm?
3.2. Search For Relevant Papers

3.3. Paper Screening and Selection
4. Analysis
4.1. Main SBPS Techniques and Trends (RQ1)
- Uninformed: denotes an algorithmic approach that systematically explores a given search space in a predetermined order, devoid of any heuristic strategies or domain-specific knowledge. Such algorithms adhere to a straightforward exploration pattern, sequentially examining potential solutions without incorporating any informed guidance or optimisation criteria.
- Heuristic: is an AI-based technique that is built for efficient search through large search spaces instead of using traditional exhaustive search methods. This type of algorithm often uses certain heuristics or rules to guide the search process towards the solution.
- Metaheuristic: is a higher-level search strategy that is designed to find optimal solutions for a wider range of problems instead of focusing on one particular task. This type of algorithm is often inspired by natural phenomena or human behaviour to guide the search. Metaheuristics often guide the search process using an iterative process in an attempt to reach better solutions.
- Other: category encompasses search-based program synthesis algorithms that cannot be classified within the previously defined categories. For instance, our survey identified a subset of papers that employ a pre-built database search approach for iterative program synthesis. Notably, these algorithms do not adhere to standard search techniques, and we have grouped them under this distinct category.
| Category | Subcategories | Papers | Count | ||
|---|---|---|---|---|---|
| Uninformed | Random search | [85] | 1 | 16 | |
| Enumerative search | [10,13,77,78,79,80,81] | 7 | |||
| Best-first search | [9,15,82] | 3 | |||
| Depth-first search | [17] | 1 | |||
| Top-down search | [7,83] | 2 | |||
| Bottom-up search | [84] | 1 | |||
| Breadth-first search | [86] | 1 | |||
| Heuristic | A* search | [8,65,66] | 3 | 14 | |
| Probability-based search | [69] | 1 | |||
| Neurally-guided search | [70] | 1 | |||
| Bidirectional search | [71] | 1 | |||
| Divide and conquer search | [67,68] | 2 | |||
| Gradient-descent search | [72] | 1 | |||
| Back-tracking search | [73] | 1 | |||
| Lenses with priority queue | [12] | 1 | |||
| Trace-guided search | [74] | 1 | |||
| Expert rules tree search | [75] | 1 | |||
| Proof search | [76] | 1 | |||
| Metaheuristic | Local search | [60,61,62,63] | 4 | 34 | |
| Gravitational search | [5] | 1 | |||
| Swarm Intelligence | [1,2] | 2 | |||
| Biogeography-Based Programming | [64] | 1 | |||
| Evolution | Push GP | [38,57,58] | 3 | ||
| Grammatical Evolution | [4,6,51,52] | 4 | |||
| Code-building GP | [53,54,55] | 3 | |||
| Tree-based GP | [3,46,47,48,49,50] | 6 | |||
| Counter-example guided GP | [14,56] | 2 | |||
| Linear GP | [11,59] | 2 | |||
| GP combined with other technique | [16,23,43,44,45,91] | 6 | |||
| Other | Database-based iterative search | [22,87,88] | 3 | 5 | |
| API search | [89,90] | 2 | |||

4.2. Guiding Principles of SBPS Algorithms (RQ2)
4.2.1. Analysis of SBPS Algorithms Input Type (RQ2.1)
4.2.2. Representation of SBPS Search Space (RQ2.2)
- The most common approach for representing search space for the metaheuristic approaches is a tree representation, which was reported in 14 out of 33 publications.
- It is also the same for non-evolutionary metaheuristic approaches that tree representation is identified as the most used approach in this category.
- The representation type for heuristic algorithms are evenly distributed on tree, rule-based, linear code sequence and graph. However, no selected paper reported a heuristic algorithm using string or stack representation.
- SBPS approaches using an uninformed search algorithm are more likely to use a tree or rule-based representation. No paper has been reported using an uninformed search with graph, string, or stack representation.
- For other SBPS algorithms, linear code sequence seems to be the promising way to synthesise the program, while all 5 studies in this category reported using linear code sequence as a representation method.
- Rule-based representation is mainly utilised in the uninformed search algorithms, while string and stack representations are utilised in the evolutionary metaheuristic approach.

4.3. Type of Task Targeted by Each SBPS Algorithm (RQ3)
- Symbolic Regression: This type of problem aims to discover mathematical expressions or symbolic representations that model the relationship within a given dataset.
- String Manipulation: It involves the task of generating or transforming strings based on specific rules or requirements.
- Circuit Transformation: This problem type targets automatically modifying or optimising electronic circuits based on a digital specification of certain circuits.
- Array/Vector Transformation: Similar to other transformation tasks, this problem type aims to manipulate or transform elements within arrays or vectors.
- Programming: This category of problem type generally aims to solve programming tasks using high-level programming languages like Python, Java, etc.
- Others: In this problem type, we have collected relatively challenging real-world problems which can not be included in previous categories.

5. Existing Challenge in SBPS
5.1. Bridging Theory and Practice
5.2. Advancing Algorithms: Tools, Strategies, and Evolution
5.2.1. Absence of a Common Benchmark
5.3. Computational Challenges in Search-Based Program Synthesis
6. Conclusion
Acknowledgement
References
- Hara, A.; Kushida, J.i.; Tanabe, S.; Takahama, T. Parallel Ant Programming using genetic operators. In Proceedings of the 2013 IEEE 6th International Workshop on Computational Intelligence and Applications (IWCIA), 2013, pp. 75–80.
- Nekoei, M.; Moghaddas, S.A.; Mohammadi Golafshani, E.; Gandomi, A.H. Introduction of ABCEP as an automatic programming method. Information Sciences 2021, 545, 575–594. [CrossRef]
- Hosseini Amini, S.M.H.; Abdollahi, M.; Amir Haeri, M. Rule-centred genetic programming (RCGP): an imperialist competitive approach. Applied Intelligence 2020, 50, 2589–2609. [CrossRef]
- Kim, H.T.; Kang, H.K.; Ahn, C.W. A Conditional Dependency Based Probabilistic Model Building Grammatical Evolution. IEICE Transactions on Information and Systems 2016, E99.D, 1937–1940. [CrossRef]
- Mahanipour, A.; Nezamabadi-Pour, H. GSP: an automatic programming technique with gravitational search algorithm. Applied Intelligence 2019, 49, 1502–1516. [CrossRef]
- Lopes, R.L.; Costa, E. GEARNet: Grammatical Evolution with Artificial Regulatory Networks. In Proceedings of the Proceedings of the 15th Annual Conference on Genetic and Evolutionary Computation, New York, NY, USA, 2013; GECCO ’13, p. 973–980.
- Bowers, M.; Olausson, T.X.; Wong, L.; Grand, G.; Tenenbaum, J.B.; Ellis, K.; Solar-Lezama, A. Top-Down Synthesis for Library Learning. Proc. ACM Program. Lang. 2023, 7. [CrossRef]
- Lee, W.; Heo, K.; Alur, R.; Naik, M. Accelerating Search-Based Program Synthesis Using Learned Probabilistic Models. In Proceedings of the Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation, New York, NY, USA, 2018; PLDI 2018, p. 436–449.
- Ameen, S.; Lelis, L.H. Program synthesis with best-first bottom-up search. Journal of Artificial Intelligence Research 2023, 77, 1275–1310. [CrossRef]
- Guria, S.N.; Foster, J.S.; Van Horn, D. Absynthe: Abstract Interpretation-Guided Synthesis. Proc. ACM Program. Lang. 2023, 7. [CrossRef]
- Yuan, Y.; Banzhaf, W. Iterative genetic improvement: Scaling stochastic program synthesis. Artificial Intelligence 2023, 322, 103962. [CrossRef]
- Miltner, A.; Fisher, K.; Pierce, B.C.; Walker, D.; Zdancewic, S. Synthesizing Bijective Lenses. Proc. ACM Program. Lang. 2017, 2. [CrossRef]
- Valizadeh, M.; Berger, M. Search-Based Regular Expression Inference on a GPU. Proc. ACM Program. Lang. 2023, 7. [CrossRef]
- Helmuth, T.; Frazier, J.G.; Shi, Y.; Abdelrehim, A.F. Human-Driven Genetic Programming for Program Synthesis: A Prototype. In Proceedings of the Proceedings of the Companion Conference on Genetic and Evolutionary Computation, New York, NY, USA, 2023; GECCO ’23 Companion, p. 1981–1989.
- Cropper, A.; Dumančić, S. Learning large logic programs by going beyond entailment. arXiv preprint arXiv:2004.09855 2020.
- Arcuri, A.; Yao, X. Co-evolutionary automatic programming for software development. Information Sciences 2014, 259, 412–432. [CrossRef]
- Botelho Guerra, H.; Ferreira, J.F.; Costa Seco, J. Hoogle: Constants and Lambda-abstractions in Petri-net-based Synthesis using Symbolic Execution. In Proceedings of the 37th European Conference on Object-Oriented Programming (ECOOP 2023); Ali, K.; Salvaneschi, G., Eds., Dagstuhl, Germany, 2023; Vol. 263, Leibniz International Proceedings in Informatics (LIPIcs), pp. 4:1–4:28.
- Tao, N.; Ventresque, A.; Saber, T. Program synthesis with generative pre-trained transformers and grammar-guided genetic programming grammar. In Proceedings of the LA-CCI. IEEE, 2023, pp. 1–6.
- Tao, N.; Ventresque, A.; Saber, T. Assessing similarity-based grammar-guided genetic programming approaches for program synthesis. In Proceedings of the OLA. Springer, 2022.
- Tao, N.; Ventresque, A.; Saber, T. Many-objective Grammar-guided Genetic Programming with Code Similarity Measurement for Program Synthesis. In Proceedings of the IEEE LACCI, 2023.
- Tao, N.; Ventresque, A.; Saber, T. Multi-objective grammar-guided genetic programming with code similarity measurement for program synthesis. In Proceedings of the IEEE CEC, 2022.
- Saha, R.K.; Ura, A.; Mahajan, S.; Zhu, C.; Li, L.; Hu, Y.; Yoshida, H.; Khurshid, S.; Prasad, M.R. SapientML: Synthesizing Machine Learning Pipelines by Learning from Human-Writen Solutions. In Proceedings of the Proceedings of the 44th International Conference on Software Engineering, New York, NY, USA, 2022; ICSE ’22, p. 1932–1944.
- Poliansky, R.; Sipper, M.; Elyasaf, A. From Requirements to Source Code: Evolution of Behavioral Programs. Applied Sciences 2022, 12. [CrossRef]
- Beltramelli, T. pix2code: Generating code from a graphical user interface screenshot. In Proceedings of the Proceedings of the ACM SIGCHI Symposium on Engineering Interactive Computing Systems, 2018, pp. 1–6.
- Li, Y.; Choi, D.; Chung, J.; Kushman, N.; Schrittwieser, J.; Leblond, R.; Eccles, T.; Keeling, J.; Gimeno, F.; Dal Lago, A.; et al. Competition-Level Code Generation with AlphaCode, 2022. [CrossRef]
- Jesse, K.; Ahmed, T.; Devanbu, P.T.; Morgan, E. Large language models and simple, stupid bugs. In Proceedings of the IEEE/ACM MSR. IEEE, 2023, pp. 563–575.
- Asare, O.; Nagappan, M.; Asokan, N. Is github’s copilot as bad as humans at introducing vulnerabilities in code? Empirical Software Engineering 2023, 28, 129.
- Schuster, R.; Song, C.; Tromer, E.; Shmatikov, V. You autocomplete me: Poisoning vulnerabilities in neural code completion. In Proceedings of the USENIX Security 21, 2021, pp. 1559–1575.
- Stechly, K.; Marquez, M.; Kambhampati, S. GPT-4 Doesn’t Know It’s Wrong: An Analysis of Iterative Prompting for Reasoning Problems. arXiv 2023.
- Krishna, S.; Agarwal, C.; Lakkaraju, H. Understanding the Effects of Iterative Prompting on Truthfulness. arXiv 2024.
- Pinna, G.; Ravalico, D.; Rovito, L.; Manzoni, L.; De Lorenzo, A. Enhancing Large Language Models-Based Code Generation by Leveraging Genetic Improvement. In Proceedings of the European Conference on Genetic Programming (Part of EvoStar). Springer, 2024, pp. 108–124.
- Hemberg, E.; Moskal, S.; O’Reilly, U.M. Evolving Code with A Large Language Model. arXiv preprint arXiv:2401.07102 2024. [CrossRef]
- Hemberg, E.; Jorgensen, S.; O’Reilly, U.M. Survey of Genetic Programming and Large Language Models. In Genetic Programming Theory and Practice XXI; Springer, 2025; pp. 67–86.
- Tao, N.; Ventresque, A.; Nallur, V.; Saber, T. Grammar-obeying program synthesis: A novel approach using large language models and many-objective genetic programming. Computer Standards & Interfaces 2025, 92, 103938. [CrossRef]
- Tao, N.; Ventresque, A.; Nallur, V.; Saber, T. Enhancing Program Synthesis with Large Language Models Using Many-Objective Grammar-Guided Genetic Programming. Algorithms 2024, 17, 287. [CrossRef]
- Batouta, Z.I.; Dehbi, R.; Talea, M.; Hajoui, O. Automation in code generation: Tertiary and systematic mapping review. In Proceedings of the 2016 4th IEEE International Colloquium on Information Science and Technology (CiSt), 2016, pp. 200–205.
- Sobania, D.; Schweim, D.; Rothlauf, F. A Comprehensive Survey on Program Synthesis With Evolutionary Algorithms. IEEE Transactions on Evolutionary Computation 2023, 27, 82–97. [CrossRef]
- Helmuth, T.; Spector, L. General program synthesis benchmark suite. In Proceedings of the GECCO, 2015.
- Olmo, J.L.; Romero, J.R.; Ventura, S. Swarm-based metaheuristics in automatic programming: a survey. WIREs Data Mining and Knowledge Discovery 2014, 4, 445–469. [CrossRef]
- Bodík, R.; Jobstmann, B. Algorithmic program synthesis: introduction. International journal on software tools for technology transfer 2013, 15, 397–411.
- Gulwani, S.; Polozov, O.; Singh, R.; et al. Program synthesis. Foundations and Trends® in Programming Languages 2017, 4, 1–119.
- Alur, R.; Singh, R.; Fisman, D.; Solar-Lezama, A. Search-based program synthesis. Communications of the ACM 2018, 61, 84–93. [CrossRef]
- Correia, A.; Iyoda, J.; Mota, A. A family of multi-concept program synthesisers in Alloy⁎. Science of Computer Programming 2021, 201, 102536. [CrossRef]
- Correia, A.; Iyoda, J.; Mota, A. Combining model finder and genetic programming into a general purpose automatic program synthesizer. Information Processing Letters 2020, 154, 105866. [CrossRef]
- Virgolin, M.; Alderliesten, T.; Witteveen, C.; Bosman, P.A.N. Scalable Genetic Programming by Gene-Pool Optimal Mixing and Input-Space Entropy-Based Building-Block Learning. In Proceedings of the Proceedings of the Genetic and Evolutionary Computation Conference, New York, NY, USA, 2017; GECCO ’17, p. 1041–1048.
- Igwe, K.; Pillay, N. Automatic programming using genetic programming. In Proceedings of the 2013 Third World Congress on Information and Communication Technologies (WICT 2013), 2013, pp. 337–342.
- Fernandes, M.C.; de França, F.O.; Francesquini, E. HOTGP–Higher-Order Typed Genetic Programming. arXiv preprint arXiv:2304.03200 2023.
- Xu, M.; Mei, Y.; Zhang, F.; Zhang, M. Genetic Programming with Lexicase Selection for Large-scale Dynamic Flexible Job Shop Scheduling. IEEE Transactions on Evolutionary Computation 2023, pp. 1–1. [CrossRef]
- Islam, M.; Kharma, N.N.; Grogono, P. Expansion: A Novel Mutation Operator for Genetic Programming. In Proceedings of the IJCCI, 2018, pp. 55–66.
- Tao, N.; Ventresque, A.; Saber, T. Multi-objective Grammar-guided Genetic Programming with Code Similarity Measurement for Program Synthesis. In Proceedings of the 2022 IEEE Congress on Evolutionary Computation (CEC), 2022, pp. 1–8.
- Schweim, D.; Hemberg, E.; Sobania, D.; O’Reilly, U.M.; Rothlauf, F. Using Knowledge of Human-Generated Code to Bias the Search in Program Synthesis with Grammatical Evolution. In Proceedings of the Proceedings of the Genetic and Evolutionary Computation Conference Companion, New York, NY, USA, 2021; GECCO ’21, p. 331–332.
- Chennpati, G.; Azad, R.M.A.; Ryan, C. On the Automatic Generation of Efficient Parallel Iterative Sorting Algorithms. In Proceedings of the Proceedings of the Companion Publication of the 2015 Annual Conference on Genetic and Evolutionary Computation, New York, NY, USA, 2015; GECCO Companion ’15, p. 1369–1370.
- Pantridge, E.; Spector, L. Code Building Genetic Programming. In Proceedings of the Proceedings of the 2020 Genetic and Evolutionary Computation Conference, New York, NY, USA, 2020; GECCO ’20, p. 994–1002.
- Pantridge, E.; Helmuth, T. Solving Novel Program Synthesis Problems with Genetic Programming using Parametric Polymorphism. In Proceedings of the Proceedings of the Genetic and Evolutionary Computation Conference, New York, NY, USA, 2023; GECCO ’23, p. 1175–1183.
- Pantridge, E.; Helmuth, T.; Spector, L. Functional Code Building Genetic Programming. In Proceedings of the Proceedings of the Genetic and Evolutionary Computation Conference, New York, NY, USA, 2022; GECCO ’22, p. 1000–1008.
- Krawiec, K.; Blkadek, I.; Swan, J. Counterexample-Driven Genetic Programming. In Proceedings of the Proceedings of the Genetic and Evolutionary Computation Conference, New York, NY, USA, 2017; GECCO ’17, p. 953–960.
- Ahmad, H.; Helmuth, T. A Comparison of Semantic-Based Initialization Methods for Genetic Programming. In Proceedings of the Proceedings of the Genetic and Evolutionary Computation Conference Companion, New York, NY, USA, 2018; GECCO ’18, p. 1878–1881.
- Helmuth, T.; Kelly, P. PSB2: the second program synthesis benchmark suite. In Proceedings of the Proceedings of the Genetic and Evolutionary Computation Conference, 2021, pp. 785–794.
- Serruto, W.F.; Alfaro, L. Many-Objective Cooperative Co-evolutionary Linear Genetic Programming Applied to the Automatic Microcontroller Program Generation. International Journal of Advanced Computer Science and Applications 2019, 10. [CrossRef]
- Nguyen, S.; Zhang, M.; Johnston, M.; Tan, K.C. Automatic Programming via Iterated Local Search for Dynamic Job Shop Scheduling. IEEE Transactions on Cybernetics 2015, 45, 1–14. [CrossRef]
- Rosin, C.D. Stepping stones to inductive synthesis of low-level looping programs. In Proceedings of the Proceedings of the AAAI Conference on Artificial Intelligence, 2019, pp. 2362–2370.
- Bornholt, J.; Torlak, E.; Grossman, D.; Ceze, L. Optimizing Synthesis with Metasketches. In Proceedings of the Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, New York, NY, USA, 2016; POPL ’16, p. 775–788.
- Feser, J.; Dillig, I.; Solar-Lezama, A. Inductive Program Synthesis Guided by Observational Program Similarity. Proc. ACM Program. Lang. 2023, 7. [CrossRef]
- Golafshani, E.M. Introduction of Biogeography-Based Programming as a new algorithm for solving problems. Applied Mathematics and Computation 2015, 270, 1–12. [CrossRef]
- Jin, Z.; Anderson, M.R.; Cafarella, M.; Jagadish, H.V. Foofah: Transforming Data By Example. In Proceedings of the Proceedings of the 2017 ACM International Conference on Management of Data, New York, NY, USA, 2017; SIGMOD ’17, p. 683–698.
- Jin, Z.; Anderson, M.R.; Cafarella, M.; Jagadish, H.V. Foofah: A Programming-By-Example System for Synthesizing Data Transformation Programs. In Proceedings of the Proceedings of the 2017 ACM International Conference on Management of Data, New York, NY, USA, 2017; SIGMOD ’17, p. 1607–1610.
- Cropper, A. Learning logic programs though divide, constrain, and conquer. In Proceedings of the Proceedings of the AAAI Conference on Artificial Intelligence, 2022, pp. 6446–6453.
- Chen, H.; Wang, A.; Loo, B.T. Towards Example-Guided Network Synthesis. In Proceedings of the Proceedings of the 2nd Asia-Pacific Workshop on Networking, New York, NY, USA, 2018; APNet ’18, p. 65–71.
- Liu, B.B.; Dong, W.; Liu, J.X.; Zhang, Y.T.; Wang, D.Y. Prosy: Api-based synthesis with probabilistic model. Journal of Computer Science and Technology 2020, 35, 1234–1257. [CrossRef]
- Wong, C.; Ellis, K.M.; Tenenbaum, J.; Andreas, J. Leveraging language to learn program abstractions and search heuristics. In Proceedings of the International conference on machine learning. PMLR, 2021, pp. 11193–11204.
- Yoon, Y.; Lee, W.; Yi, K. Inductive program synthesis via iterative forward-backward abstract interpretation. Proceedings of the ACM on Programming Languages 2023, 7, 1657–1681. [CrossRef]
- Cui, G.; Zhu, H. Differentiable synthesis of program architectures. Advances in Neural Information Processing Systems 2021, 34, 11123–11135.
- Hua, J.; Khurshid, S. EdSketch: Execution-Driven Sketching for Java. In Proceedings of the Proceedings of the 24th ACM SIGSOFT International SPIN Symposium on Model Checking of Software, New York, NY, USA, 2017; SPIN 2017, p. 162–171.
- Yuan, Y.; Radhakrishna, A.; Samanta, R. Trace-Guided Inductive Synthesis of Recursive Functional Programs. Proc. ACM Program. Lang. 2023, 7. [CrossRef]
- Herrmann, M.; Mayer, C.; Radig, B. Automatic generation of image analysis programs. Pattern recognition and image analysis 2014, 24, 400–408. [CrossRef]
- Osera, P.M.; Zdancewic, S. Type-and-example-directed program synthesis. SIGPLAN Not. 2015, 50, 619–630. [CrossRef]
- Polozov, O.; Gulwani, S. FlashMeta: A Framework for Inductive Program Synthesis. In Proceedings of the Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, New York, NY, USA, 2015; OOPSLA 2015, p. 107–126.
- Zhang, T.; Chen, Z.; Zhu, Y.; Vaithilingam, P.; Wang, X.; Glassman, E.L. Interpretable program synthesis. In Proceedings of the Proceedings of the 2021 CHI Conference on Human Factors in Computing Systems, 2021, pp. 1–16.
- Feng, Y.; Martins, R.; Van Geffen, J.; Dillig, I.; Chaudhuri, S. Component-based synthesis of table consolidation and transformation tasks from examples. SIGPLAN Not. 2017, 52, 422–436.
- Feser, J.K.; Chaudhuri, S.; Dillig, I. Synthesizing data structure transformations from input-output examples. SIGPLAN Not. 2015, 50, 229–239. [CrossRef]
- Polikarpova, N.; Kuraj, I.; Solar-Lezama, A. Program synthesis from polymorphic refinement types. SIGPLAN Not. 2016, 51, 522–538. [CrossRef]
- Chen, H.; Wu, C.; Zhao, A.; Raghothaman, M.; Naik, M.; Loo, B.T. Synthesizing Formal Network Specifications From Input-Output Examples. IEEE/ACM Transactions on Networking 2023, 31, 994–1009.
- Ye, X.; Chen, Q.; Dillig, I.; Durrett, G. Optimal neural program synthesis from multimodal specifications. arXiv preprint arXiv:2010.01678 2020.
- Barke, S.; Peleg, H.; Polikarpova, N. Just-in-time learning for bottom-up enumerative synthesis. Proc. ACM Program. Lang. 2020, 4. [CrossRef]
- Heule, S.; Sridharan, M.; Chandra, S. Mimic: Computing Models for Opaque Code. In Proceedings of the Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering, New York, NY, USA, 2015; ESEC/FSE 2015, p. 710–720.
- Ren, H.; Mo, W.; Zhao, G.; Ren, D.; Liu, S. Breadth First Search Based COSINE Software Code Framework Automation Algorithm. In Proceedings of the ASME Power Conference. American Society of Mechanical Engineers, 2015, Vol. 56604, p. V001T07A003.
- Fix, S.; Probst, T.; Ruggli, O.; Hanne, T.; Christen, P. Automatic Programming As An Open-Ended Evolutionary System. International Journal of Computer Information Systems & Industrial Management Applications 2022, 14.
- Shimonaka, K.; Higo, Y.; Matsumoto, J.; Naito, K.; Kusumoto, S. Towards automated generation of Java methods: A way of automated reuse-based programming. In Proceedings of the 2018 IEEE 12th International Workshop on Software Clones (IWSC), 2018, pp. 30–36.
- Liu, J.; Dong, W.; Liu, B. Boosting Component-Based Synthesis with API Usage Knowledge. In Proceedings of the Proceedings of the 35th IEEE/ACM International Conference on Automated Software Engineering, New York, NY, USA, 2021; ASE ’20, p. 91–97.
- Liu, J.; Liu, B.; Dong, W.; Zhang, Y.; Wang, D. How Much Support Can API Recommendation Methods Provide for Component-Based Synthesis? In Proceedings of the 2020 IEEE 44th Annual Computers, Software, and Applications Conference (COMPSAC), 2020, pp. 872–881.
- Liventsev, V.; Härmä, A.; Petković, M. Neurogenetic programming framework for explainable reinforcement learning. In Proceedings of the Proceedings of the Genetic and Evolutionary Computation Conference Companion, 2021, pp. 329–330.
- Ryan, C.; Collins, J.J.; Neill, M.O. Grammatical evolution: Evolving programs for an arbitrary language. In Proceedings of the Genetic Programming: First European Workshop, EuroGP’98 Paris, France, April 14–15, 1998 Proceedings 1. Springer, 1998, pp. 83–96.
- Spector, L.; Robinson, A. Genetic programming and autoconstructive evolution with the push programming language. Genetic Programming and Evolvable Machines 2002, 3, 7–40. [CrossRef]
- Pantridge, E.; Spector, L. PyshGP: PushGP in python. In Proceedings of the GECCO, 2017.
- Feng, Y.; Martins, R.; Wang, Y.; Dillig, I.; Reps, T.W. Component-based synthesis for complex APIs. In Proceedings of the Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages, 2017, pp. 599–612.




| Criteria | Description |
|---|---|
| Inclusion (IC1) | The work focuses on program synthesis using a search-based algorithm. |
| Exclusion (EC1) | The work is not written in English. |
| Exclusion (EC2) | The work published before January 2013. |
| Exclusion (EC3) | The work is a secondary study. |
| Exclusion (EC4) | The work is a minor incremental improvement of the approach. |
| Representation | Count | Papers |
|---|---|---|
| Tree | 26 | [1,2,3,7,9,11,16,17,23,46,47,48,49,50,56,60,63,64,71,74,76,78,79,83,84,86] |
| Rule-based | 13 | [8,10,12,15,23,61,68,72,73,77,80,81,82] |
| Linear Code Sequence | 12 | [22,43,44,62,67,70,75,85,88,89,90,91] |
| Graph | 6 | [53,54,55,65,66,69] |
| String | 9 | [4,5,6,13,14,45,51,52,59] |
| Stack | 3 | [38,57,58] |
| Representation | Uninformed | Heuristic | Metaheuristic | Other | |
|---|---|---|---|---|---|
| Non-Evolution | Evolution | ||||
| Tree | [7,9,17,78,79,83,84,86] | [71,76] | [1,2,60,63] | [3,11,16,23,46,47,48,49,50,56] | |
| Rule-based | [10,15,77,80,81,82] | [8,72,73] | [61] | [23] | |
| Linear Code Sequence | [85] | [67,75] | [62] | [43,44,91] | [22,87,88,89,90] |
| Graph | [65,66,69] | [53,54,55] | |||
| String | [5] | [4,6,14,45,51,52,59] | |||
| Stack | [38,57,58] | ||||
| Problem Type | Dataset | Count | Papers | |
|---|---|---|---|---|
| Symbolic Regression | Custom Benchmark | 9 | [1,2,3,4,5,6,7,45,49] | |
| String Manipulation | SyGuS | 10 | 5 | [8,9,10,11,84] |
| Custom Benchmark | 5 | [12,13,14,15,83] | ||
| Circuit Transformation | SyGuS | 6 | 3 | [8,71,84] |
| Custom Benchmark | 3 | [1,4,59] | ||
| Array/Vector Transformation |
OpenAI Gym toolkit | 18 | 1 | [91] |
| Sorting | 2 | [16,52] | ||
| SyGuS | 9 | [8,9,11,62,71,84,62,62,84] | ||
| Custom Benchmark | 6 | [17,43,45,76,80,81] | ||
| Programming | Apache dataset (JAVA) | 29 | 1 | [88] |
| SyPet (JAVA) | 3 | [69,89,90] | ||
| PSB1 | 7 | [38,47,50,53,55,57,61] | ||
| PSB2 | 1 | [58] | ||
| Algebra Calculation | 6 | [14,16,17,43,44,56] | ||
| Computer Vision | 1 | [75] | ||
| Array.prototype (Java Script) | 1 | [85] | ||
| java.util(Java) | 1 | [73] | ||
| Custom Benchmark | 8 | [7,14,46,51,54,67,74,90] | ||
| Other | ASCII Art | 21 | 1 | [15] |
| Path Finding | 2 | [6,15] | ||
| ML Pipeline | 1 | [22] | ||
| Custom Real-World Problem | 4 | [3,4,68,72] | ||
| Game of Tic-Tac-Toe | 1 | [23] | ||
| Data Transformation | 5 | [10,65,66,79,80] | ||
| Job Shop Scheduling | 2 | [48,60] | ||
| User Study | 1 | [78] | ||
| Feature Construction | 1 | [5] | ||
| Network Analysis | 1 | [82] | ||
| Inverse Constructive Solid Geometry | 1 | [63] | ||
| Nuclear Power Software Development | 1 | [86] | ||
| Problem Type | Uninformed | Heuristic | Metaheuristic | Other | |
|---|---|---|---|---|---|
| Non-Evolution | Evolution | ||||
| Symbolic Regression | [1,2,5] | [3,4,6,49] | |||
| String Manipulation | [7,9,10,15,83,84] | [8] | [11,14] | ||
| Circuit Transformation | [84] | [8,71] | [1] | [4] | |
| Array/Vector Transformation | [9,17,80,81,84] | [8,71,76] | [61,62] | [11,16,43,52,91] | |
| Programming | [7,17,85] | [67,69,73] | [61] | [14,16,38,43,44,45,46,47,50,51,53,54,55,56,57,58] | [87,88,89,90] |
| Other | [10,15,78,79,80,82,86] | [65,66,72,75] | [5,60,63] | [3,4,6,23,48,59] | [22] |
| Problem Type | Tree | Rule-based | Linear Code Sequence | Graph | String | Stack |
|---|---|---|---|---|---|---|
| Symbolic Regression | [1,2,3,5,49,71] | [4,5,6] | ||||
| String Manipulation | [7,9,83,84] | [8,10,11,12,15] | [13,14] | |||
| Circuit Transformation | [1,71,84] | [8] | [4,59] | |||
| Array/Vector Transformation | [9,11,16,17,76,84] | [80] | [8,43,62,81,91] | [62] | [45,52] | |
| Programming | [7,16,17,46,47,50,56,74] | [61,73] | [43,44,67,75,85,88,89,90] | [53,54,55,69] | [14,51] | [38,58] |
| Other | [3,4,5,15,23,48,60,63,78,79,86] | [15,23,61,68,72,80,82] | [22,67] | [65,66] | [5,6] | [57] |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2025 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/).
