Using Patterns in the CS Curriculum

A SIGCSE 2000 Workshop Proposal


Over the last few years, a number of computer science (CS) educators have begun to incorporate software patterns into their undergraduate CS courses. Ideas similar to patterns can be traced back to the work of Soloway [14] and Linn and Clancy [8], but consideration of patterns accelerated following the appearance of the pioneering book Design Patterns [5]. The so-called "Gang-of-Four" book documented patterns of object-oriented (OO) design at a time when many CS educators were struggling to master the discipline. Encouraged by the benefits they realized from studying design patterns, some educators began to teach design patterns in their OO courses [6, 1, 10, 13, 3].

CS educators have also begun to document patterns in other types of software and to use the patterns in their courses. Patterns and pattern languages have been written on the subjects of recursion [15], loops [2], OO design [4], "lambda" objects [12], simulating OOP in a functional language [16], and concurrent programming [7]. Other educators are using patterns to organize sections of textbooks [9] and as semester-long themes [11]. In an effort to coordinate some of these explorations and to begin to build a community of support, CS educators have gathered at ChiliPLoP the last two years for the Hot Topic workshops titled Elementary Patterns and their Role in Instruction (1998 and 1999).

However, the prevalence of patterns in undergraduate CS courses does not mean that educators have solved or even come to understand fully the problems created by introducing patterns and pattern languages into the classroom. Merely adding patterns to the course outline does not take advantage of patterns' unique advantages as a teaching tool. How best to integrate patterns into the course's meetings, homework, and exams is not well known. And, even when educators have an idea of how they would like to use patterns in their courses, they face a second dilemma: the need for appropriate patterns and pattern languages for teaching their course content.

To this end, the original ChiliPLoP elementary patterns group proposed and conducted two half-day workshops at SIGCSE'99. These workshops were collaborative sessions addressing two broad issues in this vein:

  1. the effect of using patterns on course organization and content. We called this workshop Incorporating Patterns into CS Courses.

  2. the need to write, critique, improve, and disseminate patterns for use in undergraduate courses. We called this workshop Writing Patterns for CS Courses.

These workshops were, in the estimation of the organizers, very successful. We introduced a number of CS educators to the ideas of elementary patterns, exposed them to the pattern form and to specific patterns for use in their classrooms, and exposed them to the reading and writing culture of the patterns community. Discussions at the workshop ranged wide and deep, and even we organizers learned more about writing patterns and using them in the classroom. On a more objective note, the Friday evening workshop was well-attended, to the capacity of our room, while the Sunday morning workshop drew only four participants in addition to the six organizers. Participants rated both workshops highly on the evaluation forms submitted to conference officials.

We propose to offer one workshop at SIGCSE 2000 along the same lines as last year's workshops. Our goal is again for the workshop to have an immediate effect on participants' ability to use patterns in their own courses.

The Workshop: Using Patterns in the CS Curriculum

Prospective participants will be asked to submit one of the following:

The workshop will consist of readers workshops of existing patterns and pattern languages in use in undergraduate CS courses, discussion of the teaching features of patterns, and collaborative organization of course modules around patterns.

We hope that this process will lead to deeper understanding of patterns' potential benefits and costs, yield practical advice for course designers, and allow us to make progress toward better use of patterns in courses.

Following SIGCSE, we will prepare a report summarizing the workshop and make it available to CS educators via our web repository, along with any other materials that result from the workshops. We will also endeavor to continue working on this issues after the conference has ended.

Primary Workshop Themes

Proposed Agenda

    Introduction and background                                  15 minutes
    Readers workshops (2 @ 30 minutes each)                      60 minutes
    Working sessions on course organization                      60 minutes
    Presentation and discussion of results                       30 minutes
    Strategies for future work                                   15 minutes

Prospective Co-Organizers

We are the six participants from the original ChiliPLoP'98 Hot Topic workshop Elementary Patterns and their Role in Instruction. Among us, we have written several undergraduate CS textbooks, including two of the more popular CS1 books based on C++; we have organized birds-of-a-feather sessions on elementary patterns at previous SIGCSE, OOPSLA, and Pattern Languages conferences; and we have published more than a half dozen papers on patterns and pattern languages, all of which document elementary patterns in use in our classrooms.


  1. Astrachan, Owen, "Design Patterns: An Essential Component of CS Curricula", SIGCSE Bulletin and Proceedings, 30(1):153-160, March 1998.

  2. Astrachan, Owen, and Eugene Wallingford, "Loop Patterns", Proceedings of the Fifth Pattern Languages of Programming Conference, August 12-14, 1998, Allerton Park, Illinois.

  3. Budd, Timothy, Understanding Object-Oriented Programming with Java, Addison-Wesley, New York, 1998.

  4. Deugo, Dwight, "Foundation Patterns", Proceedings of the Fifth Pattern Languages of Programming Conference, August 12-14, 1998, Allerton Park, Illinois.

  5. Gamma, Erich, Richard Helm, Ralph Johnson, and John Vlissides, Design Patterns, Addison-Wesley, New York, 1995.

  6. Goodrich, Michael, Natasha Gelfand, and Roberto Tamassia, "Teaching Data Structure Design Patterns", SIGCSE Bulletin and Proceedings, 30(1):331-335, March 1998.

  7. Lea, Doug, Concurrent Programming in Java, Addison-Wesley, New York, 1997.

  8. Linn, Marcia, and Michael Clancy, "The Case for Case Studies of Programming Problems," Communications of the ACM 35(3):121-132, 1992.

  9. Mercer, Rick, Computing Fundamentals with Standard C++: Object-Oriented Programming and Design, Franklin Beedle and Associates, Wilsonville, Oregon, 1998.

  10. Nguyen, Dung, "Design Patterns for Data Structures", SIGCSE Bulletin and Proceedings, 30(1):336-340, March 1998.

  11. Reed, David, "Incorporating Problem-Solving Patterns in CS1", SIGCSE Bulletin and Proceedings, 30(1):10-14, March 1998.

  12. Sandu, Dorin, and Dwight Deugo, "The Lambda Pattern", Proceedings of the Sixth Pattern Languages of Programming Conference, August 16-18, 1999, Allerton Park, Illinois.

  13. Schmidt, Douglas, "CS 242: Developing Object-Oriented Software with Patterns and Frameworks", on-line course materials,

  14. Soloway, Elliot, "Learning to Program = Learning to Construct Mechanisms and Explanations," Communications of the ACM 29(9):850-858, 1986.

  15. Wallingford, Eugene, "Roundabout, A Pattern Language for Recursive Programming", Proceedings of the Fourth Pattern Languages of Programming Conference, September 3-5, 1997, Allerton Park, Illinois.

  16. Wallingford, Eugene, "Envoy, A Pattern Language for Managing State in a Functional Program", Proceedings of the Sixth Pattern Languages of Programming Conference, August 16-18, 1999, Allerton Park, Illinois.

Eugene Wallingford ==== ==== September 10, 1999