Published: 10th July 2024
DOI: 10.4204/EPTCS.405
ISSN: 2075-2180

EPTCS 405

Proceedings of the Thirteenth Workshop on
Trends in Functional Programming in Education
South Orange, New Jersey, USA, 9th January 2024

Edited by: Stephen Chang

Preface
Stephen Chang
Invited Keynote: Essentials of Compilation: An Incremental Approach in Racket/Python
Jeremy Siek
Teaching Type Systems Implementation with Stella, an Extensible Statically Typed Programming Language
Abdelrahman Abounegm, Nikolai Kudasov and Alexey Stepanov
1
Functional Programming in Learning Electromagnetic Theory
Scott N. Walck
20
Finite-State Automaton To/From Regular Expression Visualization
Marco T. Morazán and Tijana Minić
36
Programming Language Case Studies Can Be Deep
Rose Bohrer
56

Preface

This volume of the Electronic Proceedings in Theoretical Computer Science (EPTCS) contains revised selected papers that were initially presented at the 13th International Workshop on Trends in Functional Programming in Education (TFPIE 2024). The workshop was held at Seton Hall University in South Orange, NJ, USA on January 9, 2024. It was co-located with the 25th International Symposium on Trends in Functional Programming (TFP 2024), which took place on January 10-12, 2024.

The goal of TFPIE is to gather researchers, teachers, and professionals that use, or are interested in the use of, functional programming in education. TFPIE aims to be a venue where novel ideas, classroom-tested ideas, and works-in-progress on the use of functional programming in education are discussed.

TFPIE workshops have previously been held in St Andrews, Scotland (2012), Provo, Utah, USA (2013), Soesterberg, The Netherlands (2014), Sophia-Antipolis, France (2015), College Park, MD, USA (2016), Canterbury, UK (2017), Gothenburg, Sweden (2018), Vancouver, Canada (2019), Krakow, Poland (2020), online due to COVID-19 (2021, 2022, with some talks from TFPIE 2022 also presented in person at the Lambda Days in Krakow, Poland), and Boston, MA, USA (2023, back in-person).

The one-day workshop fosters a spirit of open discussion by having a two-phase, single-blind review process. First, the Programme Committee and Programme Chair lightly screen extended abstract submissions pre-workshop, to ensure that all presentations are within scope and are of interest to participants. After the workshop, presenters incorporate the feedback received pre-workshop and at the workshop, and are invited to submit revised versions of their articles for publication in the journal of Electronic Proceedings in Theoretical Computer Science (EPTCS).

This year we received seven total submissions pre-workshop. Five were presented in person, one online (due to travel issues), and one did not present (due to illness). At the workshop, we also had a keynote presented by Jeremy Siek of Indiana University titled "Essentials of Compilation: An Incremental Approach in Racket/Python". We received post-workshop submissions from five out of seven pre-workshop submissions and accepted four. Each paper received at least two reviews in the pre-workshop round and three reviews in the post-workshop round. The final selections spanned a wide variety of interdisciplinary topics including type systems, programming language education, physics, and theory of computation.

All of this was only possible thanks to the hard work of the authors, the insightful contributions of the Program Committee members, and the thoughtful advice from the TFP/TFPIE steering committee. We also thank Epic Games and Seton Hall University for their financial support. Finally, we acknowledge Jason Hemann, the TFP 2024 chair, for organizing all the events. We thank everyone profusely for making this year's symposium a success.

Program Committee

Stephen Chang
Program Committee Chair and General Chair
University of Massachusetts Boston, USA
May, 2024

Essentials of Compilation: An Incremental Approach in Racket/Python

Jeremy Siek

This talk is an introduction to the joys of teaching and learning about compilers using the incremental approach. The talk provides a sneak-preview of a compiler course based on the new textbook from MIT Press, Essentials of Compilation: An Incremental Approach in Racket/Python. The course takes students on a journey through constructing their own compiler for a small but powerful language. The standard approach to describing and teaching compilers is to proceed one pass at a time, from the front to the back of the compiler. Unfortunately, that approach obfuscates how language features motivate design choices in a compiler. In this course we instead take an incremental approach in which we build a complete compiler every two weeks, starting with a small input language that includes only arithmetic and variables. We add new language features in subsequent iterations, extending the compiler as necessary. Students get immediate positive feedback as they see their compiler passing test cases and then learn important lessons regarding software engineering as they grow and refactor their compiler throughout the semester.