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.
While posting my
I realized that my blog gives the impression
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
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
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...