TITLE: Agile Courses AUTHOR: Eugene Wallingford DATE: November 13, 2004 9:03 AM DESC: We teach agile methodologies as content. But maybe we should use agile methodologies for the process by which we teach... ----- BODY: Continuing with our theme of trying new things in the classroom, I smiled when I read Kevin Rutherford's story about giving a lecture on agile software development as an agile presentation project. I had considered a similar idea while planning for my agile software development course: periodically stop the course and have the students help me set the direction for the next 'iteration'. Indeed, a couple of years ago, I outlined a paper that I wanted to write about applying XP practices to the teaching of a course: I could imagine a spike solution, and using the planning game to steer the course. What would it be like to teach 'test-first', with merciless refactoring? How would the other XP disciplines map onto how I teach, and how my students learn? As with many of my wilder ideas, I have not yet followed through. It's heartening to know that someone like Kevin has tried this idea out and found it workable on a smaller scale. Running a whole course in this way promises some interesting benefits and raises some potential problems. By allowing students to to help steer, it may help to keep them more engaged with the material they are learning. The most concrete benefit might be the periodic feedback the instructor receives. Even if only the professor drives the course, at least he would be able to do so with some knowledge of what the students think about what they have learned. One of the potential problems lies in the fact that students are exactly like the clients in an agile software project. First, students typically don't know all that much about the content of the courses they take. I've occasionally asked students questions at the beginning of a semester to elicit ideas for course direction, and I have found them relatively unaware. But why should they be? At the beginning of a course on algorithms, they have no reason to know all that much about what an algorithms course should or could be like, or even what kinds of algorithms there are. But this problem can be addressed in a reasonable way, and Kevin's article shows how: Start the course with a few pre-written story cards that form the basis of the first iteration. That way, the instructor can lay out some foundation material, present a broad view of the course material, and give the students some ideas about where the course can go. The key to doing the course in an agile way is to keep the number of pre-written cards to a minimum, so that you can get into client interaction as soon as possible. Selecting good starting stories would become an important teaching skill. The second problem is that students are not the only clients of the course. Many different people hold a stake in your courses, including: