Student answer evaluation
One idea that could be leveraged - use all the model answers and learning material, find some sort of semantic similarity between all that text and the student answer. The higher the similarity with a model answer with a specific grade tag, the higher the probability of assigning that answer that particular grade. You can couple this with a metric of similarity between the student answer and learning material, more similarity between the two, higher probability of a better grade. 

This seems like a very hard problem considering it is still a very active area of research in NLP, Some tools or concepts that might be interesting to you - Latent Semantic Analysis, word embeddings, text/document similarity, semantic coherence.