Programming as the evaluation of functions, not the mutation of state. Purity and immutability, higher-order functions and closures, folds and algebraic data types, laziness, and the mysterious-sounding-but-friendly monad.
This subject course follows the topic vertically, across the years it spans. The lessons are still being written — each is shown as a placeholder.