Flexible Automatic Evaluation of Dynamic and Static Properties of Code

For computer-based assignments, students are typically expected to create programs or code-like artefacts. Such code is often evaluated on multiple parameters including functional correctness, running time, compliance with good coding practices, etc. In this paper, we present a flexible tool that not only evaluates the code's dynamic properties (functional correctness, running time, etc) but also its static properties (such as use of good programming style). Unlike existing tools, the specifics of the execution criteria (like language, result type, etc) are fed to the tool. This makes it a lot more configurable, allowing instructors to specify commands to run code in any language and define customized algorithms for output verification. We demonstrate the flexibility of our tool in two different contexts: for evaluating lab work in a course on Data Structures in C, and for evaluating assignments in SQL.