The Clojure for Beginners workshop at the Oakland Workshop Weekend a couple of weekends ago went well. Everyone who came to the workshop came into it curious about Clojure and they all stayed engaged and curious to the end! They all wanted the slides, and after a few fixes, I’ve uploaded them to my Github project page for the presentation here.
Just FYI, here are the considerations I had when creating the slides, from an instructor perspective:
- The workshop was 2 hrs long
- Attendees were told to install Java, Leiningen, and Light Table before they came, but not everyone will, so…
- …time was built into the presentation at the beginning where, for people who needed to install those programs, they could divert their attention without missing critical ideas
- Although the workshop was for Clojure, a brief comparison to other languages in terms of syntax was there to provide a “10,000 ft. view” context of what Clojure offers
- The comparison to Scala is based on what little Scala I know, which is very little. Part of the motivation to include that information is so that I can take the presentation to people at my workplace to show the benefits that Clojure and Scala have in common over Java, but are also able to distinguish Clojure from Scala as well.
- While I want people who have at least some experience programming (which I presume to come from the OOP/imperative world) to have an easier time grasping to the new paradigm through incomplete analogies to what they know already, I did use scare quotes.
- But while incomplete analogies help somewhat, even if you put them in scare quotes, they are still just a crutch and can be harmful if relied on too long (which almost happened on the concept of variables vs. bindings of immutable values). So I thought it important to also include the full details for some concepts for the attendees’ future reference.
- Or for that matter, I wanted to have the full details so that people on the internet can get the full details of the concepts available as they read them at their own pace.
- But I didn’t intend for the workshop attendees to look at nor attempt digest those details. I skipped over the details, since I needed the 2 hrs to cover more significant topics.
- The presentation was designed to be interactive. It is expected that students will spend a fair amount of time trying, exploring, and playing just as they will spend a fair amount listening to the workshop. It helps when the instructor types out the simple examples along with the students, and skips trying the (intentionally) obviously long code examples.