Education in Programming Languages with Learning Experience
Will Crichton
Progress in Machines and Systems, Vol. 14, No. 1, 2025.
DOI: https://doi.org/10.6025/psm/2025/14/1/27-35
Link: https://www.dline.info/pms/fulltext/v14n1/pmsv14n1_4.pdf
Abstract:
This paper introduced a novel method for instructing a graduate-level course on programming languages
that emphasizes using systems programming concepts and languages such as Web Assembly and Rust to
enhance the understanding of programming language theory. By leveraging studentsâ€™ previous exposure to
low-level programming languages, the course illustrates how type systems and programming language
theory can be employed to prevent common real-world mistakes that students face in practice. We share
insights from the course design and experiences gained over two years of teaching at Stanford, demonstrating
that incorporating systems programming concepts can offer students a more practical and enjoyable learning
experience in programming languages. The course materials are open sources, including curriculum, lecture
notes, and assignments.