This project serves as my Computer Science Honours project, required for completion of my BSc Computer Science and Mathematics degree at the University of St Andrews from September 2025 to April 2026.
The GAP-grader serves as an efficient tool for creating and grading GAP assignments in Jupyter notebooks. It requires Python (any version 3.5+), GAP 4.14.0, GAP JupyterKernel 1.5.1, and notebook 6.5.7 (the JupyterKernel package does not currently work with the newest version of notebook). The required Python libraries can be installed via the requirements.txt file.
To create the student version of a GAP assignment, use the following command:
python main.py create <assignment_path> <created_version_path>
and to automatically grade student responses, use the following command:
python main.py grade <assignment_path> <student_notebooks_path>
where <student_notebooks_path> is a directory, that contains only Jupyter notebooks of student submissions.
For more information and extensive documentation, which includes steps for installation, set-up, creation and grading of assignments, please see the user manual tex file in the Documentation/ folder.
For examples, please see the Examples/ folder. This includes 3 basic assignments that demonstrate the basic functionalities of the tool, a complete assignment example on continued fractions, and a template that provides an informative example on how to create an assignment.
Some example student submissions for the 3 basic assignments and the continued fraction assignment are also given in the Examples/student_responses folders.
The program uses pytest to perform unit tests on the important functionalities. To run the tests, simply run the following command:
pytest