### A Trace-based Framework for Analyzing and Synthesizing Educational Progressions

### Abstract

A key challenge in teaching a procedural skill is finding an effective
progression of example problems that the learner can
solve in order to internalize the procedure. In many learning
domains, generation of such problems is typically done
by hand and there are few tools to help automate this process.
We reduce this effort by borrowing ideas from test case
generation in software engineering and show how we can use
execution traces as a framework for abstracting the characteristics
of a given procedure and defining a partial ordering that
reflects the relative difficulty of two traces. We also show how
we can use this framework to analyze the completeness of
expert-designed progressions and fill in holes. Furthermore,
we demonstrate how our framework can automatically synthesize
new problems by generating large sets of problems
for elementary and middle school mathematics. We present
the results of a user study with a popular algebra-learning
game confirming that our partial ordering can accurately predict
user evaluation of procedural difficulty.