Resources for Learning Patterns

Joseph Bergin
Pace University
jbergin@pace.edu
http://csis.pace.edu/~bergin

Start Here

One of the best places to start is with James (Cope) Coplien's Software Patterns at

http://www.rcnchicago.com/~jcoplien/Patterns/WhitePaper/

A good introduction to the ideas and much of the terminology of patterns can be found at:

Patterns and Software: Essential Concepts and Terminology by Brad Appleton is at http://www.enteract.com/~bradapp/docs/patterns-intro.html

Here is some background on Christopher Alexander whose patterns for architecture is the original inspiration for software patterns.

http://g.oswego.edu/dl/ca/ca/ca.html

Hillside Group

The Hillside Group sponsors many patterns activities, incluing several of the conferences shown below. The Hillside Group is a nonprofit corporation dedicated to improving human communication about computers by encouraging people to codify common programming and design practice. They sponsor conferences (like PLoP, EuroPLoP, UP, and ChiliPLoP) and also host the patterns home page.

Their site has many resources, including pattern mailing lists and how to join them as well as many links. The general patterns-discussion list is a good place to start as it has a variety of material, including philosophical material on the meaning of patterns.

Portland Pattern Repository and the WIKI

The Portland Pattern Repository (http://c2.com/ppr/index.html) and its famous Wiki Wiki Web( http://c2.com/cgi/wiki) is a marvelous source for learning about patterns and interacting with the patterns community.

The Wiki is an iteractive site in which readers can become authors. Many items of interest to the patterns community appear here first. The Wiki is maintained by Ward Cunningham, one of the pioneers of patterns of software.

The Wiki is a MUST VISIT site.

Pedagogical Patterns

The international home page of the Pedagogical Patterns Project can be found at:

http://www.pedagogical patterns.org.

The project used to be at http://www-lifia.info.unlp.edu.ar/ppp/ and some older resources are still there.

Pedagogical patterns are involved with the practice of teaching. Most, but not all, focus on teaching Object Technology. Mary Lynn Manns (University of North Carolina, Asheville http://www.cs.unca.edu/~manns/) is the lead person in this group.

Professor Bergin's Pedagogical patterns can be found at: http://csis.pace.edu/~bergin/PedPat1.3.html with a few others linked from his home page: http://csis.pace.edu/~bergin/. The paper Fourteen Pedagogical Patterns is a first attempt at a pattern language for course design. Bergin has another set of pedagogical patterns using a different form at: http://csis.pace.edu/~bergin/patterns/fewpedpats.html

A very nice pattern language for creation and running of seminars is Fricke & Völter's Seminars paper at http://www.voelter.de/seminars.

Elementary Patterns

The home page of the Elementary Patterns Working Group is at:

http://www.cs.uni.edu/~wallingf/patterns/elementary/

This group is involved both in writing patterns for (mostly) university teaching of Computer Science and in showing how more standard Design Patterns, such as those in GoF can be used in the curriculum.

Some patterns written specifically for beginners can be found at: http://csis.pace.edu/~bergin/patterns/index.html These include patterns for selection and loops as well as for polymorphism and Java events. The selection and looping papers are examples of pattern languages. Another example is Eugene Wallingford's Roundabout pattern language for teaching recursion at: http://www.cs.uni.edu/~wallingf/patterns/recursion.html

Some papers using standard patterns can also be found at the above link and on Dr. Bergin's home page. Specifically

  1. Understanding Object-Oriented Programming explores polymorphism.
  2. More on Object-Oriented Design Patterns does more with polymorphism and explores the State and Strategy patterns.
  3. Strategy, Decorator, and Composite explores those patterns and relates them to the Java libraries.
  4. Object-Oriented List gives a sophisticated list implementation that uses Visitor, Singleton, and Iterator and provides a vehicle for recursive programming.
  5. Model-View-Controller Example in Java explores MVC with examples
  6. Simple Java Coding Patterns intended for novice programmers.

The elementary patterns group meets several times a year as well as in cyberspace. We have a mailing list that can be joined by visiting the home page. It might be possible to have a working group on elementary patterns at ITiCSE 2001 in Canterbury, GB.

Writing Patterns and Pattern Workshop Patterns

Gerard Meszaros and Jim Doble have written a pattern language for pattern writing. It appears in [PLOPD 3] and here: http://webclass.cqu.edu.au/Patterns/Resources/writers/language/

Jim Coplien (Cope) has written a pattern language for the running of a pattern workshop. Pattern workshops are sometimes called conferences, but they are run on a completely different model. http://www.bell-labs.com/~cope/Patterns/WritersWorkshops/

Additionally here is a pdf file that talks about how to shepherd a paper prior to a conference: http://jerry.cs.uiuc.edu/~plop/plop2k/shepherding.pdf

Links to Pages of Links

Doug Lea's home page:http://g.oswego.edu/dl/. Doug was an early adopter of patterns in education.

Jim Coplien's Home Page (http://www.bell-labs.com/~cope/) Cope is one of the best sources for the meaning of patterns. He has also done significant work on:

  1. Telecom Patterns (These folks have had more success than most in writing pattern languages).
  2. Simple Patterns
  3. Pattern Languages. A Development Process Generative Pattern Language This language is about structuring the organization and its work. Organizational Patterns are an important sub field. The new version is here.

AG Communications http://www.agcs.com/patterns/ is heavily involved in patterns and manages ChiliPLoP.

Books

The Timeless Way of Builiing; Alexander, Oxford, 1979

A Pattern Language; Alexander, Oxford, 1977

Notes on the Synthesis of Form; Alexander, Harvard, 1964

Design Patterns; Gamma, Helm, Johnson, and Vlissides, Addison-Wesley, 1995 (Gang of Four = GoF)

Patterns in Java; Grand, Wiley, 1998 (Similar to GoF, but with the expression in Java instead of C++)

Pattern-oriented Software Architecture; Buschmann, Meunier, Rohnert, Sommerlad,and Stal, Wiley, 1996

The Patterns Handbook, Rising, Cambridge, 1998

Analysis Patterns, Fowler, Addison Wesley, 1997

Pattern Languages of Program Design, Coplien and Schmidt (editors), Addison Wesley 1995

Pattern Languages of Program Design 2, Vlissides, Coplien and Kerth (editors), Addison Wesley 1996

Pattern Languages of Program Design 3, Martin, Riehle, and Buschmann(editors), Addison Wesley 1998

Pattern Languages of Program Design 4, Harrison, Foote, and Rohenert(editors), Addison Wesley 2000

Conferences

PLoP: Held in Illinois each August http://jerry.cs.uiuc.edu/plop/plop2k/

EuroPLoP: Held in Irsee, Germany each July http://www.coldewey.com/europlop2000/

KoalaPLoP: Hopes to be held in Melbourne Australia each May: http://www.cs.rmit.edu.au/KoalaPLoP/

ChiliPLoP: Has been held in Wickenburg, AZ each March http://www.agcs.com/patterns/chiliplop/

 

Last Updated: June 2, 2002