Elementary Patterns
and their Role in Instruction

A ChiliPLoP'98 Hot Topic Proposal


Context

There are many ways to look at a pattern. One might think of a pattern as a form of documentation, as a reusable design, or as a mechanism for creating reusable software. An especially useful way to think of patterns is as a tool for teaching. We don't use patterns blindly; we learn them. Patterns are all about learning new techniques, understanding when and how to use them.

Many of the patterns in the published literature teach us about rather advanced techniques in software architecture, design, and implementation. They comprise a powerful design vocabulary and facilitate the development of reliable software in the face of complexity.


Problem

But what about designers and programmers who don't know enough to understand such patterns? How can we help such folks reach a level of competency at which the advanced patterns are useful to them?


Forces

We would like to turn software development into a learning enterprise. If groups of developers are looking at new patterns, discussing them, and applying them, then they will be learning. We may not call this formal "education", but they will be learning from the patterns. When they encounter a pattern beyond their level of expertise or experience, they will need to learn the necessary background material. We could use the pattern form to document and teach the more fundamental methods that underlie the advanced pattern.

Often, though, there is a personal or systemic resistance to writing patterns "that everyone knows". A recurring joke at patterns events involves casting a linked list as a pattern. But some folks have yet to learn about linked lists, when to use them, how to use them, how to implement them in various contexts. If we find patterns useful for telling people about our advanced techniques, perhaps we will find them useful for teaching more basic techniques.

However, the audience for elementary patterns may be significantly less "mature" in their knowledge of software, design, and programming. This may affect how such learners react to the pattern form and how well they are able to learn from it. In particular, such learners may require a more structured learning environment than patterns alone can provide.

"Basic" and "advanced" are relative terms. What seems basic to one developer may seem advanced to another. And determining which of one's ideas will be viewed as basic by others is an imprecise activity. Kent Beck has been quoted as saying "The patterns that I have written with the broadest impact were the ones that I was tempted not to publish because everyone knows that."


Solution

Over the last couple of years, a number of folks have been thinking more and more about the role of patterns in undergraduate computer science courses: What are the patterns we would like our students to learn? How might we use the pattern form to introduce these ideas? In what contexts are patterns effective in a classroom setting?

Such thinking is not limited to the academic community. At PLoP the last two years, I have encountered several developers and trainers in industry who are also interested in "elementary" patterns, or patterns for the novice. Their interest derives either from their own in-house training experiences or from a general interest in how university's can better educate future software professionals. Knowing that there are patterns experts in both industry and academia interested leads me to believe that there is room for collaboration in exploring and developing introductory patterns and techniques for their use.

I believe that there is ample interest to warrant building a ChiliPLoP Hot Topic around the idea of elementary patterns and their role in instruction. I foresee involvement from educators, trainers, and software developers in industry and academia. The workshop would be aimed at folks who have thought about patterns and how to use them to teach novices.

The conversation on this Hot Topic might take a number of forms:

Proposed Workshop Format

Without knowing who has proposed what in response to a call for participation, I'm reluctant to try to get too specific about the workshop plan. But I would propose that we aim for something along these lines:

Pre-Workshop Preparation

Day 1

Day 2

Day 3

I expect that we would be able to attract 6-10 highly motivated and experienced teachers, pattern writers, and software developers to work on this Hot Topic. I already have a list of 4-6 academics and 3-4 industry people whom I would encourage to submit position papers. With competition from other ChiliPLoP Hot Topics and outside events, we are not likely to receive papers from all of them.

In the end, we would want to strive for balance between industry, training consultant, and academia participation to ensure that we adequately represent different points of view on the topic.


Possible Results

This workshop would have potential impact in a number of areas:


To the Elementary Patterns home page

Eugene Wallingford ==== wallingf@cs.uni.edu ==== November 3, 1997