We organized a Clojure workshop. Here’s what went right and what we should do next time.
Writing
Concurrency and Parallelism in the Real World
Concurrency and parallelism are concepts that we make use of every day off of the computer. I give some real world examples and we analyze them for concurrency and parallelism.
Master one skill at a time
Research shows that developing mastery of a large skill is best done by mastering smaller skills that you can achieve 90% accuracy in very quickly. LispCast Introduction to Clojure has broken the skills you need down for you.
Practice as soon as possible
Much of the difficulty of learning a new language is caused by knowing more than you are comfortable doing. It’s so important to get started practicing real programming as soon as possible.
The Importance of Embodied Metaphors
LispCast Introduction to Clojure teaches Clojure with an “interactive bakery simulation”. The reason is that metaphors that you can embody are a great way to learn abstract things like programming.
What are macros?
Macros are one of the most talked about features of Lisp. They are a powerful way to extend the language without modifying the compiler.
Reasoning About Code
Functional programmers often use the term “reason about code”. It’s not very well defined generally, but I use it myself to refer to our ability to use our real-world intuition in our own code.
Immutable Paper
Immutable data appear to contradict our observations of the real world. Things in the world are mutable, so shouldn’t our data be mutable, too? It may be counterintuitive, but immutable data does a better job of modeling many of our expectations of the real world.
Composable parts
Composition is an important idea in programming, and Functional Programming brings it to the forefront. But what does it mean to say things are composable?