Teaching Programming Languages by Experimental and Adversarial Thinking

Authors Justin Pombrio, Shriram Krishnamurthi, Kathi Fisler

Thumbnail PDF


  • Filesize: 351 kB
  • 9 pages

Document Identifiers

Author Details

Justin Pombrio
Shriram Krishnamurthi
Kathi Fisler

Cite AsGet BibTex

Justin Pombrio, Shriram Krishnamurthi, and Kathi Fisler. Teaching Programming Languages by Experimental and Adversarial Thinking. In 2nd Summit on Advances in Programming Languages (SNAPL 2017). Leibniz International Proceedings in Informatics (LIPIcs), Volume 71, pp. 13:1-13:9, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2017)


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).
  • mystery languages
  • interpreters
  • paradigms
  • education


  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    PDF Downloads


  1. Harold Abelson and Gerald Jay Sussman. Structure and Interpretation of Computer Programs. MIT Press, 1985. Google Scholar
  2. Gregory H. Cooper, Arjun Guha, Shriram Krishnamurthi, Jay McCarthy, and Robert Bruce Findler. Teaching garbage collection without implementing compilers or interpreters. In ACM Technical Symposium on Computer Science Education, 2013. Google Scholar
  3. Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Eli Barzilay, Jay McCarthy, and Sam Tobin-Hochstadt. The Racket manifesto. In Summit on Advances in Programming Languages, 2015. Google Scholar
  4. Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes. Essentials of Programming Languages. MIT Press. Google Scholar
  5. Samuel Kamin. Programming Languages: An Interpreter-Based Approach. Addison-Wesley. Google Scholar
  6. Shriram Krishnamurthi. Programming Languages: Application and Interpretation. Google Scholar
  7. Shriram Krishnamurthi. Teaching programming languages in a post-Linnaean age. In SIGPLAN Workshop on Undergraduate Programming Language Curricula, 2008. Position paper. Google Scholar
  8. John McCarthy. Recursive functions of symbolic expressions and their computation by machine. Communications of the ACM, 3(3), 1960. Google Scholar
  9. Robert Sebesta. Concepts of Programming Languages. Addison-Wesley, fifth edition. Google Scholar
Questions / Remarks / Feedback

Feedback for Dagstuhl Publishing

Thanks for your feedback!

Feedback submitted

Could not send message

Please try again later or send an E-mail