Pre-West Interview: Elena Machkasova
From OO to Clojure Workshop!
Watch my free workshop to help you learn Clojure faster and shift your paradigm to functional.
Elena Machkasova's talk at Clojure/West is about using Clojure as a teaching language for novice programmers.
Dr. Elena Machkasova teaches at the Univesity of Minnesota, Morris. She is working on a project called ClojureEd to teach Clojure as a teaching language to novice programmers. Read the papers to understand the background. This talk promises to be very interesting in terms of pedagogical techniques (how to teach Clojure and programming) and tooling/setup for beginners.
About Elena Machkasova
This interview was graciously conducted by Nola Stowe. She's a programmer, the co-founder of DevChix, and a prolific teacher. She recently ran ClojureBridge Austin. Please shout out to her and say thanks!
Interview with Elena Machkasova
Nola: How did you first learn Clojure?
Elena: One of my students mentioned Clojure to me in 2009. It sounded really cool, so I included it in a class on functional programming for concurrency and was learning it partly in the summer before the course, and partly as the class was progressing.
Nola: What other languages are good for beginners or do you think clojure is the best?
Elena: To alleviate possible confusion: I don't actually teach Clojure in a beginner-level class because there are currently no tools that would make this experience smooth for new students. I've taught Clojure as a part of a couple of upper-level courses where syntax isn't that much of an issue and students are experienced enough to deal with debugging in Clojure.
Since I haven't yet tried teaching a CS1 class with Clojure, I cannot say whether Clojure is "the best" (or even a reasonable) choice for beginners, but it certainly looks promising, assuming that it is made more beginner-friendly in terms of error messages and IDEs.
Nola: What types of applications do you like to use to teach your students? (i.e., a web app, console app, todo list, recipe list etc)
Elena: So far I mostly taught Clojure at upper level and we were mostly looking into concurrency. A beginner level class is focusing on concepts, but it has to have material that students are interested in as a small project part of the course. Possibilities include data processing and interactions with graphical libraries (animation, data visualization, etc.).
Nola: What clojure libraries do you like to use when teaching clojure?
Elena: We've been looking into incorporating Quil, especially the functional mode. I've also been looking into reducers for upper level courses. Expectations is a nice testing library, definitely worth including in any level course that uses Clojure.
Nola: Why would a Mars Rover would be better programmed in clojure be better than language ___ ?
Elena: Immutable data -> less possibility for error. Also, easy (i.e. less error-prone) approaches to concurrency would make large data processing fast and reliable.
Nola: Thanks for the interview. It was very informative.