GraphChecker is a plugin for Moodle that supports asking open-ended questions where the answer is a discrete graph. Currently we support several different graph types, including (un)directed graphs, (deterministic) finite state automatons, and push-down automatons. The tool offers an intuitive drawing editor for students that directly integrates with Moodle. Behind the scenes the drawn solution is encoded such that it can automatically be queried and tested. The answers are then also tested by checking the properties instead of being compared to a model answer, hence there is no need for a unique solution. In the development of GraphChecker the teacher perspective has received significant attention to make it as easy and efficient as possible to develop exercises. Particularly there is no need for complex programming, instead we offer a standard library of checks.

Each of the graph types comes with a series of pre-made tests that check different properties of the graph supplied by the student. With just a few button presses a combination of checks can be selected to match the desired exercise. Many tests can be parameterized to increase the flexibility. Notably these checks truly determine correctness of the answer. Thus answers need not be unique and supplying a model answer is optional, but not mandatory. It is possible to award partial points based on successful completion of a subset of the checks.

The check selection as offered for undirected graphs is embedded below as a live demo. Click *Add check* to see the list of checks.

GraphChecker contains many more features to allow you to ask diverse question. Examples of these include but are not limited to: highlighting edges or nodes, adding labels, offering pre-built solutions for students to work from, limiting editing capabilities for students, etc. An overview of the different exercise styles this may lead to is shown below.

"Draw an undirected graph with diameter at most 4 and degree sequence (1,1,1,1,1,2,3,3,4,4,4,5)."

"We have run DFS on the graph given below. The start and finish times are written next to each node. Highlight all the cross edges."

"Provide a DFA with no more than 4 states that accepts the language {w in {a,b}* | w has a substring aa and/or a substring bb}."

"Color the graph such that the result is a valid coloring with the minimal number of colors."

"Highlight a set of edges that together form a minimum spanning tree of the given graph."

"Draw the Hasse diagram for the divisibility operation on the given set of elements."