3 Focus

This course has the following purposes:
  • To thoroughly understand the space of notional machines proposed in the education literature.

  • To analyze these notional machines through the lenses of both formal semantics and linguistic depth and diversity: e.g., do the notional machines scale when the language grows larger, and do they even apply under different paradigms of languages?

  • To generate a “feature space” of these models, both to classify the existing literature and to identify weaknesses in it.

  • To distill research problems out of the above studies.

In addition to notional machines, we also want to understand the literature on teaching recursion. While these are technically distinct:
  • Many of the proposed means of teaching recursion are “mechanical”, and therefore implicitly or explicitly employ some kind of semantic model.

  • For us, at least, recursion is so central to programming that we couldn’t really imagine models that don’t lead up to and provide a useful account of it.

  • Finally, in terms of under-explored topics, the knowledge about recursion that is embedded deeply in the functional programming community has not yet made it into mainstream programming education; in return, there may be problem types that are in the education literature that have not been explored enough in functional programming because they’re a poor fit. Therefore, there are, again, opportunities in both directions.