Computer-assisted evaluation of computer code is a work in progress. This paper on a library that tests students’ C++ programs shows both the progress made and the work remaining. The paper substantiates the benefit that students would derive from computer-assisted assessment, describes a solution, outlines its limitations, and suggests future work.
It opens with an overview of the problems associated with evaluating student submissions in C++: opaqueness of error messages and difficulty compiling student code against instructor code. To supplement this analysis, the author presents the results of an empirical study that indicates that students would benefit from a better handling of these problems. He also sets a goal for computer-aided assessment: the graceful handling of the mismatch between student and instructor code.
The proposed solution, Looking Glass, is a C++ library that uses reflection--determining at runtime what classes, methods, and variables are in the program and gaining access to their values--implemented through an open-source library. It is powerful enough to examine nearly all structures in C++. Unions and templates are notable exceptions. All of its functionality is transparent to the student, but there is some overhead for the instructor.
The empirical study indicates that it achieved the primary goal of reflecting the code most frequently used in introductory and intermediate courses in C++, but it only partially met the secondary goal of providing streamlined syntax and ease of setup. The paper ends by suggesting future work such as improving integration with other tools.