Human learning is often structured around examples. Interestingly,
example-based reasoning has also been heavily used in computer-aided
programming. In this article, we describe how techniques inspired from example-based
program analysis and synthesis can be used for various tasks in
Education including problem generation, solution generation, and
feedback generation. We illustrate this using recent
research results that have been applied to a variety of STEM subject
domains including logic, automata theory, programming, arithmetic,
algebra, and geometry. We classify these subject domains into procedural
and conceptual content and highlight some general technical principles
as per this classification. These results advance the state-of-the-art in
intelligent tutoring, and can play a significant role in enabling
personalized and interactive education in both
standard classrooms and MOOCs.