The Problem: Correcting, grading, and providing feedback to students on sophisticated software projects is difficult and requires significant amounts teacher resources.
The Idea: In an effort to reduce load on teaching resources, and even more important, improve the quality of student feedback and fairness in grading of lab projects, in this project the student(s) should develop a system to automate grading and testing of lab exercises. The system can potentially be used in many different courses, where software testing can be applied.
Survey: Prior to starting development of this system, a thorough web search should be conducted to identify possibly existing systems that are either open source or otherwise accessible, or for purchase. If such systems exists, an evaluation of their suitability for our needs (see below) should be conducted. An evaluation of possible integration with existing course management systems may also be relevant in this context.
Features: The Automated Lab Grader system should have the following features:
Store lab submissions in a repository to which the course team has access and can run manual tests on lab hand ins.
Allow students to submit their lab exercises for automatic testing to obtain feedback that they can use to fix their solution if it does not pass some of the tests. This can be repeated many times prior to final submission deadline.
Allow submitting for grading. This evaluation may be based on another set of test cases than those exposed to students for their own feedback.
Simplify handling of deadlines and late days.
Allow automatic detection of cheating.
Integration with a continuous integration framework and version control (e.g. git).
Allow running custom filters and checkers on submitted files: f.ex. go fmt, go race, go doc (to produce documentation), check that source files are in UTF-8 format and so on.
Front-end for managing students and groups and creating lab reports.
In addition to developing a Lab Grader system with these features, we wish to use the different lab exercises in DAT320 OpSys as a base case for the system. To do this, this project must also develop a set of specific test cases to be used with the specific projects we are using in OpSys, in order to validate the systems capabilities.
The system must be documented for both students that will interact with the lab grader, and we must also document the inner workings so that it can be reused in other relevant courses.