Dr. Vadim Zaytsev, also known as @grammarware.
When it comes to FP in education, my curriculum vitae is not that long:
- Python Programming (2002, Russia): a course design for introducing programming to first year applied mathematics students by exposing them to Python. The first two lectures were introductory, lecture 3 was about the interpreter, the “hello world” and the I/O, lecture 4 introduced types (in a dynamically typed language!), lecture 5 was about data structures, lecture 6 about branching and control flow, lecture 7 about functions, lecture 8 was dedicated to λ-calculus, lecture 9 about OOP, etc. Only many years later I realised how subconsciously biased I was.
- Practicum Programming Languages (2005, The Netherlands): I supervised and graded students in the Smalltalk part of a course that was meant to shock BSc CS students with an idea that there is life beyond C and even C++.
- Programming Paradigms and Formal Semantics (2009–2010, Germany): I was the lab assistant and lab supervisor for Ralf Lämmel’s awesome course that covered learning Haskell and Prolog from scratch, as well as implementing definite clause grammars, operational semantics (both big step and small step), denotational semantics, λ-calculus (both typed and untyped), program analysis, constraints and calculus of communicating systems. Yes, all in one course. Yes, some students survived.
- Software Evolution (2011–2014, The Netherlands): lab assistance and grading for a metaprogramming course in Rascal.
- Software Specification and Testing (2013–2014, The Netherlands): lab supervision and course redesign in using Haskell on MSc SE students in a hope to open the doors for logical reasoning, automated testing, model checking, verification, etc.
All study materials that survived over the years, are collected on my webpage under learning activities.