Program Generation
Program generation refers to techniques that automatically produce executable program code rather than requiring humans to write it by hand. It is applied across a wide range of domains, including parallel scientific computing, software engineering automation, and hardware/ CPU fuzzing.
Parallel Program Generation
In scientific and engineering computing, parallel program generation is motivated by the difficulty of writing parallel programs for problems such as large-scale simulation, big-data analysis, and precise visualization. Computer-assisted problem solving, including Problem Solving Environments (PSEs) originating in the 1970s, has been proposed as a route toward a "programming-free" style of computing. One such PSE, P-NCAS, supports computer-assisted generation of parallel programs by integrating human-friendly computational software and hardware for a target class of problems [1].
Language-Model-Based Program Generation
More recently, pre-trained language models such as CodeT5 and CodeGPT have been adopted for automated program generation tasks including code generation, repair, and translation. Empirical evaluations across multiple benchmark datasets show promising performance, but raise concerns about reliability, explainability, and evaluation rigor. Studies have found severe data duplication in benchmarks leading to over-optimistic results, and explainability analyses indicate that while models can recognize code grammar and structural information, they exhibit limited robustness to changes in input sequences. More rigorous evaluation approaches and benchmarks have been called for to enhance the reliability and explainability of automated program generation [2].
Program Generation in CPU Fuzzing (Cascade)
In the hardware security domain, the Cascade system applies intricate program generation to CPU fuzzing. The Cascade artifacts repository documents reproducibility procedures for the USENIX Security 2024 paper "Cascade: CPU Fuzzing via Intricate Program Generation," including the use of a Docker image for reproduction, optional experiments using the Questasim commercial RTL simulator (for comparing simulator coverage against TheHuzz), and configuration of timeout values that demonstrate longer generated programs tend to be more efficient at finding bugs [3].
References
- "Computer Assisted Parallel Program Generation" — arXiv:1503.04501v1.
- "On the Reliability and Explainability of Language Models for Program Generation" — arXiv:2302.09587v3.
- comsec-group/cascade-artifacts — GitHub repository (USENIX Security 2024 artifacts for "Cascade: CPU Fuzzing via Intricate Program Generation").