Review what you have learned and learn anew.

Confucius

Instructor Colin Jones
Location 8th Light Chicago
Date 2011-04-14
Price $699 - Early Bird

Clojure: Functional Programming on the JVM

Description

What if there was a dynamic, general-purpose language that made it easier to write multithreaded programs, reason about state, and interoperate with legacy Java applications? What if this language had a vibrant and helpful community and a burgeoning ecosystem of libraries and tools? And what if this language was easy to grasp, with a bit of effort and practice?

It turns out that this language does exist, and it's called Clojure. Built for the JVM, Clojure provides a trusted platform, while at the same time offering the increased development speed and power of Lisp.

In this course, you'll grow your knowledge and skill to the point where you're ready to embark on your first Clojure project. With numerous hands-on exercises and labs, this isn't just a collection of lectures. Practice will ensure that concepts really sink in, and the exercises are a lot of fun to boot!

Who should attend?

Developers who want to:

  • reduce the incidental complexity in their programs
  • make multithreaded programming easier
  • expand their minds to improve day-to-day tasks
  • program at a higher level

Preliminary Schedule

Day 1

The Basics: Clojure Koans

Get acquainted with the basics of syntax and some core Clojure functions with the Clojure Koans, on the start of your path to Clojure enlightenment. With zen-like patience, we'll become comfortable with much of the core language, from sequences to higher-order functions, by filling in the blanks in simple Clojure code examples to make each test pass.

Java Interoperability

Lisp has been around for quite awhile - one of the things that sets Clojure apart is the ease of interoperation with Java. Calling from Clojure into Java and back is relatively painless. In Clojure, we essentially inherit the whole of Java's library ecosystem to use where appropriate.

Concurrency

Clojure's philosophy of immutability by default solves many of the concurrency problems inherent in a language like Java. When modeling state becomes necessary in a program (and it likely will), Clojure provides the var, ref, atom, and agent mechanisms to manage state in a controlled manner.

Day 2

Functional Programming

Object-oriented programming dominates the programming mindshare in many circles, but it's not the only game in town. We can use many of the same principles of software development we already follow, but other concepts are fundamentally different. Using a variety of problems, we'll expand our programming minds to accommodate the functional idiom.

Protocols, Datatypes, and Multimethods

Protocols and datatypes provide one of the primary benefits of object-oriented programming: polymorphic dispatch on type. Multimethods go a step further and provide arbitrary dispatch on function arguments.

Libraries / Tools

Theory and practice take us a long way, but in order to get things done with Clojure, it's best not to reinvent the wheel. We'll get familiar with libraries and frameworks for data crunching, web development, and GUIs.

About the Instructor:

Colin Jones Colin Jones is a software craftsman at 8th Light, the maintainer and a primary author of the Clojure Koans, and contributor to several Clojure projects including Leiningen, the most-used build tool for Clojure, and Clojure itself. He has presented talks and workshops on Clojure at Agile 2010, Chicago Code Camp, Chicago Clojure, and the McHenry Software Craftsmanship Group.