One of the best places to start is with James (Cope) Coplien's Software Patterns at
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.
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.
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.
The international home page of the Pedagogical Patterns Project can be found at:
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.
The home page of the Elementary Patterns Working Group is at:
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
- Understanding Object-Oriented Programming explores polymorphism.
- More on Object-Oriented Design Patterns does more with polymorphism and explores the State and Strategy patterns.
- Strategy, Decorator, and Composite explores those patterns and relates them to the Java libraries.
- Object-Oriented List gives a sophisticated list implementation that uses Visitor, Singleton, and Iterator and provides a vehicle for recursive programming.
- Model-View-Controller Example in Java explores MVC with examples
- 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.
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
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:
- Telecom Patterns (These folks have had more success than most in writing pattern languages).
- Simple Patterns
- 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.
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
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