The goal of the project is to develop an application to automatically generate small programming exercises and guided solutions, addressing specific programming concepts based on learned user parameters. Exercises will be generated at the algorithmic level using automated AI planning techniques and converted into the syntax of two target programming languages: Java and Python. The application will be evaluated in case studies with undergraduate CS students learning Java and Postgraduate students without a programming background learning Python.
The best way to learn programming is to practice writing code. If an instructor discovers that a class is struggling with a particular concept, they might write more examples and exercises to address this concept. Solving diverse minimal example problems builds confidence in students who struggle with programming. However, it is time consuming to generate new exercises and tailor these to specific students.
There exist online sources for programming exerises such as leetcode, Project Euler, Khan Academy, Hacker Rank, and others. These are excellent resources for supplementing learning but have two major limitations: most exercises are at a level too high to be accessible for beginners, and the exercises are not tailored to the student. Tackling these limitations is difficult - it is not feasible for the student to find appropriate exercises on their own as they don't know what level or focus is most appropriate. A source of accessible and tailored problems for beginner programmers is desperately required to support STEM courses that assume a base level of programming as prerequisite.