The FMT-based open source tool GROOVE can transform graphs (using user-provided rules describing the transformations) by adding and removing nodes and edges. Since the graphs can stand for pretty much any kind of system, ranging from computer networks to games, this is a very powerful and versatile modelling formalism.
However, the graphs are rendered in GROOVE in a very boring, uniform way, only using boxes to represent graph nodes and arrows to represent edges. Graph changes just result in the (dis)appearance of nodes and edges, without any relayouting or other types of visual effects.
This assignment involves the design and implementation of a wrapper around GROOVE that offers cool, visually attractive representations of graphs and their changes. This can be achieved using an event-based perspective of the existing engine, where the events correspond to the application of rules and are used as triggers for the animation. As part of the assignment, more flexible and versatile forms of abstract syntax should be supported.