Chapter 1 Generic programming for domain reasoners Johan Jeuring,1,2 Jose ´ Pedro Magalh˜a es,1 Bastiaan Heeren2 Category: E valuation Abstract: An exercise assistant is a tool that supports students learning p roce- dural skills, such as solving systems of linear equations, or rewriting a logic ex- pression to disjunctive normal form. The domain reasoner is the component of an exercise assistant that deals with tasks that depend on the semantics of a p articular domain. An exercise assistant typically has multiple domain r easoners, and the behavior of each of these is, to a large extent, determined by the domain. Generic programming techniques claim to reduce code duplication, to make