FREJA: A framework for effectively creating programming assignments based on code transformations
Master thesis
View/ Open
Date
2022-11-21Metadata
Show full item recordCollections
- Master theses [218]
Abstract
Programming assignments have become the prevalent method for evaluating programming skills and knowledge of students in computer science courses. Typically, a programming assignment is composed of several independent artefacts, such as the solution code, start code, and assignment description. These artefacts are often created in isolation from each other, but contain a redundancy of information and code between them. Maintaining consistency between the artefacts is a tedious and error-prone task, due to the extensive manual labor required to reflect a change in all the required locations. The work in this thesis has resulted in a new framework, FREJA, that aims to guarantee consistency and reduce redundancy between assignment artefacts. The goal is to make the process of developing programming assignment more efficient, and FREJA tries to achieve this by centralizing the development to a single source. Code transformations and code generation techniques are used to produce the assignment artefacts semi-automatically. FREJA is exclusive to assignments for the Java programming language, however, a small prototype has been developed to determine the possibility of a language agnostic version of FREJA. Analysis of several assignments from computer science courses at the university-level has set the basis for the design and implementation of both frameworks. FREJA was tested on several real-life assignments, and evaluated based on how well it could replicate the original structure and content of each assignment, while still maintaining consistency and reducing redundancy. The evaluation of the language agnostic prototype was similar, but put more emphasis on its ability to manage assignments in an arbitrary programming language. The results of these experiments showed that FREJA significantly reduces the number of elements in an assignment that need to be manually maintained to preserve consistency. The framework did also replicate the target assignments well, suggesting it would be beneficial and effective to incorporate FREJA into the assignment development process. The language agnostic prototype handled several programming languages, but not in a manner that was deemed effective or practical, due to its lack of consistency guarantees.