This document introduces functional programming concepts through the Clojure programming language and the Overtone music library. It provides an overview of Clojure data types and collections, installing Leiningen and interacting with the Clojure REPL. Examples are given for working with lists, maps, sets and Java interop. The benefits of functional programming are listed as easier reasoning, composability, separation of concerns. Contact details are provided for further information.