In this day of lectures we will discuss how software technology can contribute to learning and teaching. In particular, we will discuss how we can support learning using digital technologies: learning environments, intelligent tutoring systems, serious games, etc. Such environments diagnose or assess student actions or student products, and give hints or worked-out solutions to a student. In all of these environments, we need to encode what constitutes desirable behavior of a student. Based on a description of a desirable way to solve an exercise, we need to find out if a student is making progress, or strays away from the goal. We use rewrite strategies and parsing techniques to diagnose the steps from a student. Student actions are interpreted as rewrite steps, and we parse these steps against rewriting strategies, possibly including buggy steps or strategies.