Clojure School

09 Dec 2013

My company Likely hosted a Clojure School for four weeks from 12th November 2013. Targeted at professional software developers, it aimed to teach the fundamentals of the Clojure programming language in a practical way.


Each class focused on a particular aspect of the Clojure language or its libraries and walked students from the absolute basics to implementing a multiplayer browser based game over WebSockets.

The topics for each week were presented as on slides with regular Q&A and breaks for exercises. The org documents from which the slides were generated are linked below.

  • Part 1
    • Setting up with Leiningen & the REPL
    • Data types
    • Collection types
    • Functions
    • Higher-order functions
    • Example code
  • Part 2
    • Web development with Clojure
    • Ring, Compojure, Hiccup
    • Mutable state and STM
    • Atoms, Agents, Refs
    • Multithreading with Future
  • Part 3
    • Macros
    • Techniques for managing concurrency
    • Core.async and CSP
    • ClojureScript
    • Homework template
  • Part 4
    • Polymorphism in Clojure
    • Protocols
    • Multimethods
    • Websockets and channels
    • Building a multiplayer game of snake!
    • Example code


Clojure School was part of a series of courses organised with help from Dactic.