Most of us learn to program by mutating variables and looping over them. Functional programming asks you to give that up — and hands you something sturdier in return: code that behaves the same way every time you run it, and pieces you can reason about one at a time.

This free course uses Elixir to teach that shift in thinking. You start from the very basics and build up an intuition for immutability, pattern matching, and composing small functions into larger ones — the foundation everything else in Elixir rests on.