TITLE: Looking for Engaging Examples
AUTHOR: Eugene Wallingford
DATE: March 13, 2005 11:35 AM
DESC: I'm getting ready for ChiliPLoP 2005. Do you have a simple program that can engage students and teach them about the world of computing while they are learning to program?
-----
BODY:
Some of my favorite colleagues and I will be getting
together in a week or so for
ChiliPLoP 2005,
where we will continue to work on our longstanding
project, to produce a different sort of textbook
for the CS 1 course. We'd like to create a set
of instructional units built around engaging and
instructive applications. In a first course,
these applications will have to be rather small,
but we believe students can learn more and better
about how to program when their code has a context.
In many ways,
Mike Clancy's
and
Marcia Linn's
classic Designing Pascal Solutions
serves as my goal. Clancy and Linn did for
structured programming and Pascal what I'd
like for our work to do for object-oriented
programming and Java (or whatever succeeds it).
Their case studies focus on simple yet complete
programs such as a calendar generator, a Roman
numeral calculator, and a text processor, using
them as the context in which students learn the
basics of computation and Pascal syntax. Along
the way, they also learn to something about how
to write programs which is, in many ways, the
central point of the course. This book, and its
data structures follow-up, implement a wonderful
teaching idea well. I think we can do this for
OOP, and can use what we've learned about patterns
in the intervening 15 years to do it in an
especially effective way.
Such an approach requires that we identify and work
out in some detail several such examples. The old
examples worked great in a text-oriented world in
which students' experience with computers was rather
limited, but we can surely do better. Our students
come to the university with broad experience
interacting with computer systems. Cell phones,
iPods,
and
TiVo
are a part of the fabric of their lives. Besides,
objects and languages like Java bring graphical
apps, client-server apps, web apps, and other more
sophisticated programs within reach.
A canonical first example for a graphical OOP
introduction to programming is the ball world,
a framework for simple programs in which balls
and other graphical elements move about some
simulated world, interacting in increasingly
sophisticated ways. The folks at Brown and
Duke have been developing this line of examples
for a decade or more, and
Tim Budd
wrote a successful book aimed at students in a
second or third course in which this is the first
"real" Java program students see.
But ball world is tired, and besides it doesn't
make much of a connection to the real world of
computing these days. It might work fine to
introduce students to the basics of Java graphics,
but it needs serious work as an example that can
both be used as early in CS 1 and engage many
different students.
This is drifting dangerously toward a longer and
different essay that I've been meaning to write
for a while now, but I don't have the time this
morning. That essay will have to wait until
tomorrow. In the meantime, I'll leave you with
a catchphrase that
Owen Astrachan
was touting at OOPSLA last fall: Problems are
the thing. Owen's right.
Returning to the more immediate issue of
ChiliPLoP 2005
and our
Hot Topic,
if you have an idea for a motivating example
that might engage beginning programmers long
enough for us to help them learn a bit about
programming and objects, please
pass it on.
Maybe we can make it one of our working examples!
-----