• Online, Self-Paced
Course Description

Clojure includes a number of features that enable you to optimize your applications. In this course you'll learn about optimization of Clojure projects with multimethods and hierarchies, parallelism, and macros. You'll also learn about profiling and unit testing of Clojure applications.

Learning Objectives

Multimethods and Hierarchies

  • start the course
  • use multimethods in Clojure
  • use hierarchies in Clojure

Java Interoperability

  • call Java from Clojure and call Clojure from Java
  • use proxy Java classes in Clojure

Parallel Programming

  • use parallelism in Clojure
  • implement concurrency with agents in Clojure
  • use concurrency functions in Clojure
  • work with futures and promises in Clojure


  • understand how macros work in Clojure
  • work with macros in Clojure
  • implement macros in Clojure
  • work with Clojure DSLs

DataTypes and Protocols

  • understand how protocols and datatypes work in Clojure
  • work with protocols and datatypes in Clojure


  • using profiling in Clojure projects
  • optimize Clojure functions


  • perform unit testing in Clojure projects

Practice: Optimizing your Clojure Project

  • apply various techniques to optimize your Clojure code

Framework Connections

The materials within this course focus on the NICE Framework Task, Knowledge, and Skill statements identified within the indicated NICE Framework component(s):

Specialty Areas

  • Software Development