Teaching Programming Languages by Experimental and Adversarial Thinking
Justin Pombrio, Shriram Krishnamurthi, Kathi Fisler
Summit on Advances in Programming Languages, 2017
Abstract
We present a new approach to teaching programming language courses. Its essence is to view programming language learning as a natural science activity, where students probe languages experimentally to understand both the normal and extreme behaviors of their features. This has natural parallels to the ‘‘security mindset’’ of computer security, with languages taking the place of servers and other systems. The approach is modular (with minimal dependencies), incremental (it can be introduced slowly into existing classes), interoperable (it does not need to push out other, existing methods), and complementary (since it introduces a new mode of thinking).
Comment
After we published this paper, Matthias Hauswirth kindly pointed out
similarities between this work and the
PL-detective,
a body of work that is very closely related that we did not
previously know. Less similar but also related---and entertainingly
written up---is
smeagol.
Since we published the paper, we have significantly revised the code
repository---mostly by Kuang-Chen Lu. You can find the latest
version of the software
in this repository.
Blog
See our post for a quick overview.Paper
These papers may differ in formatting from the versions that appear in print. They are made available only to support the rapid dissemination of results; the printed versions, not these, should be considered definitive. The copyrights belong to their respective owners.