With Tims Gardner

This class is about making expressive user interfaces and graphics without any object-oriented malarky getting in the way. Dynamic functional programming abandons the usual rigid, pre-compiled, sprawling class hierarchies of statically typed, syntactically baroque imperative code. In doing so, it approaches the expressivity of mathematics or poetry.

We’ll see how to implement functional display lists; event listeners; particle systems; matrix mathematics; 3D graphics; physics simulations; and animations, all in a fraction of the code, a fraction of the time, and a massive multiple of the elegance associated with their object-oriented counterparts. When we wash our hands of incidental complexity, we can finally address our ideas on their own terms.

This class is intended for people bored or frustrated with the creative potential of mainstream languages. We’ll be using Clojure’s Quil library. No prior experience of Clojure, functional programming, or Lisp is required.