TITLE: ChiliPLoP, The Missing Days AUTHOR: Eugene Wallingford DATE: March 30, 2005 12:45 PM DESC: ChiliPLoP did last for three days. The last two were as fruitful as the first. ----- BODY: While posting my last entry, I realized that my blog gives the impression that ChiliPLoP'05 lasted only one day. Actually, it lasted from Tuesday evening through Friday's lunch. The reason I have not written more is that the conference kept me busy with the work I was there to do! Our hot topic group had a productive three days. On Days 2 and 3, we continued with our work on the examples we began on Day 1, refining the code for use by students and discussing how to build assignments around them. As the conference drew to its close on the last morning, our discussions turned to the broader vision of what a great new first course would be like. By the end of CS1, traditional curricula expose students to lots of complexity in terms of algorithmic patterns: booleans, selection, repetition, collections, and the like. We would like to create a course that does the same for object-oriented programming. Such a course would emphasize: objects, relationships among them, and communication. Concepts like delegation, containment, and substitution would take on prominent roles early in such a course. Current textbooks that put objects front and center fail to take this essential step. For example, they may make a date class, but they don't seem to use Dates to then build more complex objects, such as weeks or calendars, or to let lots of date objects collaborate to solve an interesting problem. Most of the programming focus remains in implementing methods, using the familiar algorithmic patterns. Our desire to do objects right early requires us to find examples for which the OO style is natural and accessible to beginners. Graphical and event-driven programs make it possible, even preferable, to use interesting objects in interesting ways early on, with no explicit flow of control. But what other domains are suitable for CS1, taking into account both the students' academic level and their expectations about the world of computers? Our desire also means that we must frame compelling examples in an object-oriented way, rather than an algorithmic way. For instance, I can imagine all sorts of interesting ways to use the Google API examples I worked on last week to teach loops and collections, including external and internal iterators. But this can easily become a focus on algorithm instead of objects. We need to find ways to inject algorithmic patterns into solutions that are fundamentally based on objects, not the other way around. The conference resulted in a strong start toward our goals. Now, our work goes on... -----