Pre-West Interview: 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!
Introduction
Elena Machkasova is the next interview participant. She is giving a talk at Clojure/West about adapting clojure to the classroom. The background to her talk is available, if you like.
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.
Beginner CS students need to focus on concepts, develop problem solving techniques, and learn to think in an abstract, modular, data-driven way. A solution needs to be developed as a series of short, clearly defined functions). A language that supports this process without getting students distracted by unnecessary details or unpredictable behavior would be a reasonable choice. Lisp languages, including Clojure, fit into this category. We currently use Racket ( a language in the Lisp family). Python is another appropriate first language. Statically typed languages, especially object-oriented ones (Java, C++), are too complex for beginners. Languages with complex interactions with memory or their environment (C, Javascript) are not a good choice either.
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.
This post is one of a series called Pre-West Prep, which is also published by email. It's all about getting ready for the upcoming Clojure/West, organized by Cognitect. Conferences are ongoing conversations and explorations. Speakers discuss trends, best practices, and the future by drawing on the rich context built up in past conferences and other media.
That rich context is what Pre-West Prep is about. I want to enhance everyone's experience at the conference by surfacing that context. With just a little homework, we can be better prepared to understand and enjoy the talks and the hallway conversations.
Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.