This repository contains prototypes for parts of Apollo++, a tool for automated assessment of programming projects. The prototype works for projects in Java, as well as Processing projects through a pre-processing step. These parts are divided across four folders:
- extractor: extracts graph representations from code. Currently, it creates a typegraph (with classes, methods, fields and their relations) for each project. This part is written in Rascal.
- graphmatcher: matches typegraphs created by the extractors with defined code patterns. The tool includes a batch functionality to run the patterns on a set of target projects and a watch-mode to run patterns on a set of targets each time the patternfile changes. The latter is useful to quickly see some results and get suggestions for extensions while writing the pattern definitions. This part is written in F#.
- pre_process contains a few scripts used to anonymize student projects used for evaluation, prepare the dataset for analysis and to convert Processing projects to Java code. These scripts are written in Python.
- suggest_llm: commandline tool based on TypeChat to get suggestions from ChatGPT for patterns based on asssessment criteria.
The folder criteria contains the patterns for some of the assessment criteria for the courses we considered in the research.