tips on teaching types and functions
Many beginning students of functional programming have difficulty understanding higher-order functions and their types. Experienced functional programmers have such a close familiarity and intuitive grasp of these crucial concepts that they may find it hard to "bridge the gap," so as to provide their students with a firm understanding of these ideas. I describe a loosely-related cluster of tips and techniques which address the pedagogy of higher-order functions and types, for students with varying degrees of mathematical background and different learning styles - these techniques include tabular presentations, code tools, visual metaphors and an abstract algebra. Although the underlying ideas will be familiar to experts, I believe these presentations can help educators bring important ideas in functional programming to a broader range of students, with less pain and with a deeper understanding.
higher-order functions pedagogy punch-hole diagrams function types power rings