jGrader: Development of a Software System to Grade Object-Oriented Programs


A first course in computing (CS 1) typically involves learning the basics of expressing an algorithm in code: variables, conditionals, repetition, functions, and arrays. A second course (CS 2) typically covers the basics of object-oriented programming (OOP) where the goal is to learn how to create classes (and abstract classes and interfaces) and relationships between classes as the building blocks for developing software systems. CS 1 assignments are relatively small and it is relatively straightforward to grade them – run the code and observe if the output is correct. As a result, there is software, mostly proprietary for automating the grading process. In CS 2, the situation is different, assignments are much larger and assessment is concerned with the correct construction and composition of classes so that they collaborate to produce any number of correct results. We have developed a software system for auto-grading OO systems, jGrader. An instructor who uses jGrader must do three things in advance of grading. First, they must have a correct implementation of the software, called the solution. Next, the instructor must write test cases as individual methods in a TestSuite class and assign point values in a particular format. Finally, the instructor must run the jGrader against the solution in order to obtain the correct (expected) results. To grade student assignments, the instructor simply runs jGrader against each student solution which compares their results to the expected results. jGrader produces a report for each student showing the expected and actual output for each test case, whether the test succeed or failed, the incremental points awarded, and the final tally of points. This work describes the architecture of jGrader and the markup used to write the test cases.

This document is currently not available here.