TITLE: Pleasant Surprises AUTHOR: Eugene Wallingford DATE: October 04, 2004 5:44 PM DESC: Sometimes, students surprise you and ask to program in Scheme. ----- BODY: 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 JUnit but extending to Eclipse, Ant, 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 weak. 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 SchemeUnit 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 guarded optimism. This is enough to restore my faith in humanity. To quote ranch owner Clay Stone from one of my favorite movies, City Slickers, I'm as happy as a puppy with two peters. -----