Abstract
In the present day, computer programs are written in high
level languages and parsed syntactically as part of a compilation process.
These parsers are defined with context-free grammars (CFGs), a
language recogniser for the respective programming language. Formal
grammars in general are used for language recognition or generation.
In this paper, we present the automatic generation of procedural programs
in Python using a CFG. We have defined CFG rules to model
program templates and implemented these rules to produce infinitely
many distinct practice programs in Python. Each generated program is
designed to test a novice programmer’s knowledge of functions, expressions,
loops, and/or conditional statements. The CFG rules are highly
generic and can be extended to generate programs in other procedural
languages. The resulting programs can be used as practice, test or
examination problems in introductory programming courses. 500,000 iterations
of generated programs can be found at: https://tinyurl.com/
pythonprogramgenerator. A survey of 103 students’ perception showed
that 93.1% strongly agreed that these programs can help them in practice
and improve their programming skills.