TITLE: Day 1 at ChiliPLoP: Examples on the Web AUTHOR: Eugene Wallingford DATE: March 24, 2005 11:29 AM DESC: Compelling examples raise issues that we must consciosuly attend to. ----- BODY: Our first day at ChiliPLoP was a success. On our first evening in Carefree, my Hot Topic group decided to focus its energy on examples dealing with programs that interact over a network, when possible with services that provide large access to current or compelling data. We alternately worked individually and in pairs on programs that access the current time from the official clock of the US, interact with Google web services, process streaming XML data, and interact with other students via Rendezvous. In just one day, we wrote some simple programs that are within reach of students learning to program in a first CS course. We kept each other honest with continuous devil's advocacy. In particular, we are sensitive to the fact that examples of this sort run the risk of scaring many CS1 instructors. They are nontraditional but, more, they carry the impression of being complex and "cutting edge", attributes that don't usually work in CS1. If the instructors don't know much about the Google API or Rendezvous, how can we expect students to get them? We decided that we will have to engage this possibility actively. First, we resolved not to use the term "web services" when describing any of our examples, even little-w "web services", in order not to alarm folks before they have a chance to see the simplicity of the programs we create and the value they have for working with students. Second, we know that we will have to be quite clear that learning about Rendezvous or the Google API is not the end goal of these examples. The goal is to help students learn how to write programs in an object-oriented language. We will need to package our examples with curricular materials that identify the programming elements and design ideas they best teach. This packaging is for instructors, not students, though as a result the students will benefit by encountering examples at the right point in their development as programmers. I am again reminded that a big part of our job in the elementary patterns community is educating computer science faculty, as much or more so than educating students! At the end of our day yesterday, we had a nice no-technology discussion out on the veranda of the conference center about our day's work. Devil's advocacy led us into a challenging and sometimes frustrating discussion about the role of "magic" in learning. Some in our group were concerned that the Rendezvous example will look too much like magic to the students, who write very simple objects that interact with very complex objects that we supply. Others argued that students working with objects in a more realistic context is a good thing and, besides, students see magic all the time when learning a language. Java's System.out.println() is serious magic -- bad magic, many of Java-in-CS1's critics would say. But let's be honest: Pascal's writeln() was serious magic, too. Ahh, those critics often say, it's simpler magic (no System.out abstraction) and besides, it's part of the base language. Hence the frustration for me in this discussion, and in so many like it. If too much magic is a deal breaker, then I do not think we can we do compelling examples with our students. These days, compelling examples require rich context, and rich context early in the course requires some magical objects. But I don't think magic is a deal breaker. The real issue is gratuitous magic versus essential magic. In Java,
public static void main( String[] args )
is gratuitous magic. Interacting with powerful and interesting objects is essential magic. It is what object-oriented programming is all about! It's also what can make an example compelling to students raised in an era of instant messaging and Amazon and eBay. What we as instructors need to do is to build suitable boundaries around complexity so that students can explore without fear and ultimately open up the boxes and see that what's inside isn't magic at all but simply more complex examples of the same thing that students have been learning all along: powerful objects sending messages to one another. Right now, we are all expanding on our examples from yesterday. Later, I hope that we have a chance to mine some of the elementary patterns that show up across our examples. We are at a PLoP conference after all! -----