Tim van der Lippe, Thomas Smith, Daniël Alexander Augustijn Pelsmaeker, Eelco Visser. A scalable infrastructure for teaching concepts of programming languages in Scala with WebLab: an experience report. In Aggelos Biboudis, Manohar Jonnalagedda, Sandro Stucki, Vlad Ureche, editors, Proceedings of the 7th ACM SIGPLAN Symposium on Scala, SCALA@SPLASH 2016, Amsterdam, Netherlands, October 30 - November 4, 2016. pages 65-74, ACM, 2016.
In this paper, we report on our experience in teaching a course on
concepts of programming languages at TU Delft based on Krishnamurthi's
PAPL book with the definitional interpreter approach using Scala as
meta-language and using the WebLab learning management system. In
particular, we discuss our experience with encoding of definitional
interpreters in Scala using case classes, pattern matching, and
recursive functions; offering this material in the web-based learning
management system WebLab; automated grading and feedback of
interpreter submissions using unit tests; testing tests to force
students to formulate tests, instead of just implementing
interpreters; generation of tests based on a reference implementation
to reduce the effort of producing unit tests; and the construction of
a product line of interpreters in order to maximize reuse and
consistency between reference implementations.