Using Patterns in the CS Curriculum

A Description of Two SIGCSE'99 Workshops


Introduction

We will offer two half-day workshops of collaborative sessions on the topic of using patterns in the computer science curriculum:

  1. Incorporating Patterns into CS Courses, which will foocus on the effect that using patterns can have on course organization and content.

  2. Writing Patterns for CS Courses, which will focus on the need to write, critique, improve, and disseminate patterns for use in undergraduate courses.

We offer these workshops within a shared context of exploring the role of patterns in curriculum. We recognize that not all educators will be able to participate in both workshops, for reasons of timing, interest, and preparation. We have designed the workshops so that participants may take part in either workshop and profit. However, we expect that participants who take part in both will benefit from the synergy between the two.


Context

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 [13] 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, 12, 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 [14], loops [2], OO design [4], 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, six CS educators gathered at ChiliPLoP'98 in March 1998 for the Hot Topic workshop Elementary Patterns and their Role in Instruction.

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.

So, we will offer two half-day workshops of collaborative sessions to address two broad issues in this vein:

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

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


Workshop 1: Incorporating Patterns into CS Courses

Prospective participants are 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.

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


Workshop 2: Writing Patterns for CS Courses

Prospective participants are asked to submit one of the following:

The workshop will consist of collaborative analysis of design and programming problems to identify potential patterns, short sessions of group pattern writing, and writers workshops. The writers workshops will be the centerpiece of this workshop. They provide a valuable way for writers to obtain constructive feedback on their work and also expose participants to a feature of the patterns community that they will encounter as they disseminate their patterns to a wider audience.

We hope that this process will lead to deeper understanding of the patterns that occur in software at our students' level, yield practical advice for those in search of patterns, and allow us to make progress toward better use of patterns in courses.

Proposed Agenda

    Introduction and background                                  15 minutes
    Problem identification                                       30 minutes
    Group working sessions on patterns and pattern languages     60 minutes
    Writers workshops                                            60 minutes
    Strategies for future work                                   15 minutes


Workshop Organizers

We are the six participants from the ChiliPLoP'98 Hot Topic workshop Elementary Patterns and their Role in Instruction:


References

  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. Schmidt, Douglas, "CS 242: Developing Object-Oriented Software with Patterns and Frameworks", on-line course materials, http://www.cs.wustl.edu/~schmidt/cs242/.

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

  14. 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.


Eugene Wallingford ==== wallingf@cs.uni.edu ==== December 21, 1998