Extended abstract: As many have
learned by experience, teaching a CS 1 course in Java requires an entirely
new approach. Because it is an object-oriented language, it is difficult
to teach it in the style used for imperative languages like Pascal, C,
and C++. Many have proposed teaching Java in an objects-first way,
but others have complained that too many concepts must be introduced before
students can understand the construction of classes and objects.
This three hour workshop is focused on a new approach to teaching Java
that we have developed at Williams College over the last two years that
overcomes these problems. Our design goals in developing the course were:
-
Use an object-first approach, requiring students to think from the start
about the programming process with a focus on methods and objects.
-
Use graphics and animation extensively.
-
Introduce event-driven programming early.
-
Introduce concurrency early as a natural extension of single-threaded execution
and as a way to simplify the interaction of objects.
We have developed a library that introduces an object-oriented set of graphic
objects and that simplifies the the introduction of event-handling and
concurrency to novices, while still remaining faithful to the underlying
Java model. Using the library, event-driven programming is introduced
in the first week of classes, and concurrency is introduced by week four.
Yet the style of programming is similar enough to standard Java that by
halfway through the term, students are using standard Java GUI components
and listeners.