Clojure 101 Course – 2nd batch

by Satish Talim on September 14, 2010

About RubyLearning

RL offers online courses in Ruby programming, Git & GitHub, Shoes, JRuby and Sinatra. Since 2005, over 25,000 participants spread across 140+ countries have learned Ruby and other Ruby related timely topics. This has been possible due to the extensive support provided by the mentors of these courses. RL strives hard to improve the methodology and course content based on the extensive and critical feedback we receive. Thanks to YOU and people like Fabio Akita who make this possible. Our Alumni are our best ambassadors.

You kept asking for it and so here it is – the second batch of the intensive, online course that helps you get started with Clojure programming.


Object Computing, Inc. (OCI)

Our special thanks go to Rich Hickey for providing us with this exciting new language as well as Mark Volkmann from Object Computing, Inc. for generously giving us permission to use his articles as teaching material for this course.

What’s Clojure?


According to Wikipedia: “Clojure is a modern dialect of the Lisp programming language. It is a general-purpose language supporting interactive development that encourages a functional programming style, and simplifies multithreaded programming. Clojure runs on the Java Virtual Machine and the Common Language Runtime. Clojure honors the code-as-data philosophy and has a sophisticated Lisp macro system.”

Stuart Halloway in his Programming Clojure book says – “Clojure feels like a general-purpose language beamed back from the near future. Its support for functional programming and software trans-actional memory is well beyond current practice and is well suited for multicore hardware. At the same time, Clojure is well grounded in the past and the present. It brings together Lisp and the Java Virtual Machine. Lisp brings wisdom spanning most of the history of programming, and Java brings the robustness, extensive libraries, and tooling of the dominant platform available today.”

What Will I Learn?

In this course, you will learn the essential features of Clojure that you will end up using every day. The course topics are tentative and could change with the feedback received:

  • Week 0 – Getting started (no exercises)
    • Getting started
    • REPL
    • Functional Programming
  • Week 1 – The basics
    • Clojure Overview
    • Clojure Syntax
    • Bindings
    • Defining functions
    • Destructuring
  • Week 2 – Data
    • Collections
    • StructMaps
    • Sequences
    • Concurrency
    • Reference Types
  • Week 3 – Control Flow
    • Conditional Processing
    • Iteration
    • Recursion
    • Predicates
    • Input/Output
  • Week 4 – Advanced topics and tying it all together
    • Namespaces
    • Metadata
    • Macros
    • Java Interoperability
    • AOT Compiling

Who’s It For?

Anyone with an intermediate programming experience. People who have no previous exposure to Lisp and/or Clojure can get up-to-speed with Clojure with these Clojure Notes.


Michael Kohl

Michael KohlMichael Kohl (Twitter / blog) in his day job, works as a Ruby on Rails programmer for in Vienna, Austria. Michael fell in love with Clojure on first sight sometime in early 2009, but unfortunately never seems to have as much time to work with it as he wants to and started being a mentor for in early 2009. His interests include mathematics, literature, travelling, foreign languages, chess and so much more that he really wishes he wouldn’t need to sleep.

Daniel Solano Gómez

Daniel Solano Gómez

Daniel Solano Gómez (Twitter / blog) is the founder of Sattvik Software & Technology Resources, a software development company based in Houston, Texas. He studied mathematics at the University of Texas at Austin, but he discovered his passion for programming and computers as a child. Daniel has been developing software professionally for over a decade, primarily with C++ and Java. He started learning about and developing with Clojure in late 2009.

Michał Marczyk

Michał Marczyk is a PhD student doing research in logic / universal algebra in Kraków, Poland, always trying to coerce the computer into proving his theorems for him. His programming background is predominantly in functional programming; mostly in Scheme, Haskell and Clojure, which is rapidly becoming his favourite language.

Anthony Simpson

Anthony Simpson

Anthony Simpson (Twitter / Blog) is a young, ambitious programmer in Eldridge, Alabama. His first language having been Haskell, the majority of his time with programming has been with functional programming languages, most of which has been spent with Clojure. A language person, he enjoys learning about new languages and improvements they make on existing languages. Non-computer-related interests include, (roller)skating, all aspects of music, and hacking life.

Isaac Hodes

Isaac Hodes

Isaac (Twitter / Blog) is a Math major studying just about anything he can get his hands on. He likes to program, cook, and read as much as possible in his spare time. Programming in Clojure is what he does on vacation; it’s that much fun.


The course starts on Monday, 4th Oct. 2010 and runs for a month.

How do I register?

  • You first create an account on the site (see right-hand top corner of the site). An email will be sent to your registered email address. This email contains a link to confirm your account. Please click on that link.
  • Once your registration has been confirmed, login to the site and enroll into the Clojure 101 course.
  • Update your profile (with photo) and introduce yourself at the Course Social Forum.

Course Fees

The course fee is US$ 5 per participant. The course fee goes towards maintaining RubyLearning and helps provide quality content to you.

Hurry, registrations have started.

At the end of this course you should have all the knowledge to explore the wonderful world of Clojure on your own.


Many of you wrote in asking for details on how the course works. Here are some details:


Once the course starts, you can login and start with the lessons any day and time and post your queries in the forum under the relevant lessons. Someone shall always be there to answer them. Just to set the expectations correctly, there is no real-time ‘webcasting’.


  • The Mentors shall give you URL’s of pages and sometimes some additional notes; you need to read through. Read the pre-class reading material at a convenient time of your choice – the dates may be specified only as a guideline. While reading, please make a note of all your doubts, queries, questions, clarifications, comments about the lesson and after you have completed all the pages, post these on the forum under the relevant lesson. There may be some questions that relate to something that has not been mentioned or discussed by the mentors thus far; you could post the same too. Please remember that with every post, do mention the operating system of your computer.
  • The mentor shall highlight the important points that you need to remember for that week’s session.
  • There could be exercises for that week. Please do them.
  • Participate in the forum for asking and answering questions or starting discussions. Share knowledge, and exchange ideas amongst yourselves during the course period. Participants are strongly encouraged to post technical questions, interesting articles, tools, sample programs or anything that is relevant to the class / lesson. Please do not post a simple "Thank you" note or "Hello" message to the forum. This forum is subscribed by several hundred people, so please be aware that these messages are considered as noises by many people.

Outline of Work Expectations:

  1. The course starts on a Monday and the new course material will be available every Monday.
  2. Most of the weeks, you will have exercises to solve. These are there to help you assimilate whatever you have learned till then.
  3. Some weeks may have some mid-week additional assignments / food for thought articles / programs
  4. Above all, do participate in the relevant forums. Past participants will confirm that they learned the best by active participation.

Some Commonly Asked Questions

  • Qs. Is there any specific time when I need to be online?
    Ans. No. You need not be online at a specific time of the day.
  • Qs. Is it important for me to participate in the course forums?
    Ans. YES. You must Participate in the forum(s) for asking and answering questions or starting discussions. Share knowledge, and exchange ideas amongst yourselves (participants) during the course period. Participants are strongly encouraged to post technical questions, interesting articles, tools, sample programs or anything that is relevant to the class / lesson. Past participants will confirm that they learned the best by active participation.
  • Qs. How much time do I need to spend online for a course, in a day?
    Ans. This will vary from person to person. All depends upon your comfort level and the amount of time you want to spend on a particular lesson or task.
  • Qs. Is there any specific set time for feedback (e.g., any mentor responds to me within 24 hours?)
    Ans. Normally somebody should answer your query / question within 24 – 48 hours.
  • Qs. What happens if nobody answers my questions / queries?
    Ans. Normally, that will not happen. In case you feel that your question / query is not answered, then please post the same in the thread – “Any UnAnswered Questions / Queries”.
  • Qs. What happens to the class (or forums) after a course is over? Can you keep it open for a few more days so that students can complete and discuss too?
    Ans. The course and its forum is open for a month after the last day of the course.

Remember, the idea is to have fun learning Clojure.

Technorati Tags: , ,

Posted by Satish Talim

Previous post:

Next post: