Going through batches of homework can be an arduous task especially when there are tens to hundreds of students in every class and only that many teachers. In a world where more and more aspects of our lives are being automated by machines there is no reason why computers could not help teachers with this task as well.
While I cannot offer a miracle that solves all such problems, the goal of this thesis is to provide tooling to make going through coding assignment solutions less taxing on whoever is in charge of grading.
This goal is split into two parts, an analyzer library and a command line interface.
The analyzer library offers a variety of pattern checkers that can be combined to describe our expectation about how the solution should be structured. These can be used to run automated tests on the solutions submitted by the students filtering out those that require attention.
The command line interface offers a simple and easy to use tool to run analyses on several students’ homework. Although it is tailored to the needs of one specific class, it is not specific to the point that it cannot be adapted by others as well.
This document starts off with a quick introduction of the task itself and the technologies that it relies on, which most notably includes the .Net Compiler Platform, a new Microsoft SDK that offers several APIs for static code analysis. It then continues with the detailed specification of the analyzer library and the command line interface. Finally, it ends with the development of these two projects as well as going into the details of implementation that give an insight into how to use the aforementioned .Net Compiler Platform.
Even though the focus of this thesis is the analysis of coding assignments, it also offers knowledge on how to use the .Net Compiler Platform which can be useful for different situations as well.