TITLE: Pleasant Surprises
AUTHOR: Eugene Wallingford
DATE: October 04, 2004 5:44 PM
DESC: Sometimes, students surprise you and ask to program in Scheme.
My Agile Software Development class is doing a big course project.
The students are creating the beginnings of a content management
system for me, with an initial eye toward me writing content for
a book and their program generating a web site for the content.
I don't know how far we will get this semester, but that is part
of the fun of the project.
Most of our students have spent a year learning Java and a semester
learning Ada, so those tend to be the languages in which they
want to program. I expected most folks to want to work in Java,
given all of the tools that support agile development in that
language, starting with
but extending to
and others. (Actually, I knew that a few would probably want to
program in C, but tool support for agile approaches in C is still
Go, Ale, go!)
Imagine my surprise when a four-person team asked me if they
could use Scheme. They had all learned Scheme in my Programming
Languages course, so this wasn't an impossible request. But
only rarely does Scheme attract a student's fancy in my course...
The language is just so different from what they know that, even
if they come to appreciate its power, they usually don't grok how
they might use it as a development language on a "real" project.
These students had all done well in the Scheme part of Programming
Languages, but they hadn't expressed any deep love for the language
at the time.
So my initial reaction was, "Are you jerking my chain?" But they
insisted they weren't, that Scheme seemed like the right tool for
the job at hand: transforming data from one form to another, with
flexible parsing underneath. So I let out a little bit more
chain and said, "Well, you'll have to get a unit testing framework
so that you can write your tests first..." I had mentioned
in passing earlier in the course but hadn't told them just how
nice unit testing can be in a dynamically typed and highly flexible
language like Scheme. They said, "No problem."
They did it. The team submitted the build of its first iteration
last Friday. They have three dozen or so tests and three of four
domain modules. The code looks good. We'll see what happens by
the end of the first "official" release of their code -- two more
iterations to go -- but I've graduated from cynical skepticism to
This is enough to restore my faith in humanity. To quote ranch owner
from one of my favorite movies,
I'm as happy as a puppy with two peters.