Richard,
It sounds like you've got a good handle on your data. Before you choose an engine, I recommend you figure out how you will query it. What are the questions you are asking of the data?
If you have particularly graphy questions, such as ones where you focused on the network of students & exercise (measures of centrality or influencers) or a variable number of hops, then by all means go with a graph db and Neo4j is a great engine.
However, if your questions are fairly simple (what students struggled with exercise 37, how many more exercises does Johnny have to do?) then I don't think that the type of db really matters. More important may be what language you are more comfortable using (SQL vs Cypher). Or you may want to use it as an excuse to learn a new technology, like graph.
I find that figuring out how the data is to be queried is more critical when picking an engine and than the data itself. Also, knowing the questions you need to answer helps in designing your logical & physical data model.
Cheers,
Josh