A scalable infrastructure for teaching concepts of programming languages in Scala with WebLab: an experience report

Tim van der Lippe, Thomas Smith, Daniƫl 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. [doi]

Abstract

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.