Clojure/conj | Raleigh, NC Nov 7 - 12, 2011 Clojure/conj 2011

(with-training Clojure/conj) Registration Info

Early Registration
Ends: 9/23 $1995
Regular Registration
Available: 9/24 - 10/28 $2295
Late Registration
Available: 10/29 - 11/07 $2595
Spots Limited Register Now »

(with-training Clojure/conj)

Sign up for 3 days of Classes Nov. 7th, 8th & 9th
Clojure/conj Nov. 10 - 12 included.

Learn to program Clojure from experienced Clojure programmers and authors in this three-day programming course.

If you're a Java programmer, if you care about concurrency, or if you enjoy working in low-ceremony languages such as Ruby or Python, Clojure is for you.

Clojure is a general-purpose language with direct support for Java, a modern Lisp dialect, and support in both the language and data structures for functional programming. Learn Clojure and you'll become a better all-around programmer. But this is more than an academic exercise. You'll also be able to write applications that have the beauty and elegance of a good scripting language, the power and reach of the JVM, and a modern, concurrency-safe functional style.

Expand your programming toolbox by learning functional programming with a general-purpose language.

Eliminate incidental complexity in your programs using pure functions, multimethods, and macros.

Write applications that are expressed in a concurrency-safe, functional style and that run on the Java Virtual Machine with efficient access to Java.

You've heard about functional programming. This is your chance to really get into it and learn directly from the experts!

What Will I Learn?

How to program Clojure like the pros. This isn't a language reference course or bullet-list overview of Clojure. It's a hands-on programming course where you'll learn Clojure by actually writing Clojure code to solve many common problems.

Topics include:

  • Functional programming:

    Functional programs use immutable values and pure functions to produce programs that are expressive, easy to read, easy to test,and easy to compose into larger systems. Learn to replace variables, branches and loops with more powerful constructs: values, higher-order functions, and sequence comprehensions.
  • Lisp syntax:

    Clojure code is data: once you know Clojure's data structures you know the syntax. The simplicity and regularity of this approach makes code easier to read, write, generate, and automate. Scared of parentheses? After you learn the joys of paredit you will have nothing to fear.
  • The sequence library:

    In Clojure, it is a virtue to have a small number of nouns (data structures) that can work a large and flexible set of verbs (pure functions). The centerpiece of this approach is the sequence library, a set of functions that work with all of Clojure's aggregate data types. Learn to use compose Clojure's lazy sequences to solve complex problems without having to introduce any new data types.
  • Concurrency:

    A sane approach to concurrency cannot be an afterthought, it has to permeate language design. Once it does, many common concurrency problems are surprisingly simple. Learn to use Clojure's software transactional memory, agent, and atoms to write simple programs that will work correctly with multiple threads and cores.
  • Java interop:

    Adopting Clojure does not mean abandoning the development mainstream. Clojure's Java interop is first-class: it combines easy syntax with proxyless invocation for high performance. Learn to create and call Java objects from Clojure, and to call Clojure code from Java.
  • Multimethods:

    Polymorphism is a specific solution to a general problem: associating functions with the objects they consume. Learn to use multimethods, which are a general solution to the same problem.
  • Macros:

    No language is complete, or perfect. But Lisp dialects like Clojure can extend themselves through macros. If you have ever been burdened with duplicate code, or "blessed" with unnecessary design patterns, you will appreciate the unique ability of macros to extend and improve a language to meet your specific domain needs.
  • OO Revisited:

    Protocols and types allow Clojure programs to deliver on the failed promise of OO: reuse by composition. While at a glance these features appear to be just another variant of interfaces and classes, protocols and types are different beasts altogether, fixing subtle problems that have plagued reuse in mainstream OO languages.
  • The Clojure ecosystem:

    Learn how to integrate Clojure with Swing, web applications, and databases. Also, Clojure is quickly becoming a language of choice for working with the most innovative new Java libraries. See how to use Clojure with libraries such as Cascading+Hadoop, RabbitMQ+swarmiji and incanter.
  • Clojure.Next:

    Review upcoming enhancements to Clojure with the Clojure/core developers who are leading development for the next release.

Who Teaches the Course?

Stuart Halloway

Stuart is the author of Programming Clojure. He advises the Clojure/core team on matters of training and practical development with Clojure.

Aaron Bedra

Aaron Bedra has led the development of several commercial projects using Clojure and Compojure. He is a regular speaker on Clojure at conferences such as DevNation and the No Fluff, Just Stuff symposium series.

Stuart Sierra

Stuart Sierra is the author of several popular open-source Clojure libraries, including clojure.test, various I/O utilities, and an HTTP client. He is the co-author, with Luke VanderHart, of the book Practical Clojure, just released from Apress. Stuart received his M.S. in Computer Science from Columbia University.

Who's It For?

Experienced Programmers. This course will be a good fit for you if...

  • You have 5+ years experience in a mainstream software development language.
  • You have experience with at least one of: (1) Java, (2) some dialect of Lisp, (3) concurrent systems, (4) functional programming.
  • You are a self-starter comfortable installing and building open-source software.

Your Registration Includes

  • A continental breakfast served at 8am each morning
  • Training runs from 9-5 each day.
  • Lunch served at noon.
  • All the example source code to refer back to later
  • Internet connectivity and power during the class