Design patterns: an essential component of CS curricula

The field of software patterns has seen an explosion in interest in the last three years. Work to date has been on the recognition, cataloging, and finding of patterns with little attention to the use of patterns, especially by students and practitioners not well-versed in object-oriented technologies. This project addresses pattern use through the development of several programming and pedagogical frameworks that supply support for using patterns throughout a computer science curriculum. Although we do not claim that patterns are Brooks' silver bullet [10], their use can help cope with the accidental complexity of software development and, we argue, their use is essential for a successful adoption of object-oriented techniques in academic computer science programs. This project addresses practical concerns of the computer science and software engineering communities in using, teaching, and learning patterns. In this paper we argue that patterns are an essential programming and pedagogical tool and report on our work in making them accessible to the educational community.

[1]  Marcia C. Linn,et al.  Supporting Pascal Programming with an On-Line Template Library and Case Studies , 1993, Int. J. Man Mach. Stud..

[2]  David Reed,et al.  AAA and CS 1: the applied apprenticeship approach to CS 1 , 1995, SIGCSE.

[3]  Stephen Travis Pope,et al.  A cookbook for using the model-view controller user interface paradigm in Smalltalk-80 , 1988 .

[4]  Glenn Meter,et al.  Engaging students and teaching modern concepts: literate, situated, object-oriented programming , 1994, SIGCSE.

[5]  Alistair Cockburn,et al.  The interaction of social issues and software architecture , 1996, CACM.

[6]  L. Silverton The Art and Science of Midwifery , 1993 .

[7]  Dung Nguyen Design patterns for data structures , 1998, SIGCSE '98.

[8]  D. Brookshire Conner,et al.  Object-Oriented Programming in Pascal: A Graphical Approach , 1995 .

[9]  James Coplien,et al.  Advanced C++ Programming Styles and Idioms , 1991, Proceedings. Technology of Object-Oriented Languages and Systems, TOOLS 25 (Cat. No.97TB100239).

[10]  Douglas C. Schmidt,et al.  Software patterns , 1996, CACM.

[11]  Richard E. Pattis Teaching OOP in C++ using an artificial life framework , 1997, SIGCSE '97.

[12]  Erich Gamma,et al.  ET++—an object oriented application framework in C++ , 1988, OOPSLA 1988.

[13]  Kent L. Beck Smalltalk best practice patterns , 1996 .

[14]  Owen Astrachan,et al.  An object-oriented, apprenticeship approach to data structures using simulation , 1996, Technology-Based Re-Engineering Engineering Education Proceedings of Frontiers in Education FIE'96 26th Annual Conference.

[15]  Serge Demeyer,et al.  Making design patterns explicit in FACE: a frame work adaptive composition environment , 1997, ESEC '97/FSE-5.

[16]  Owen L. Astrachan,et al.  Application-based modules using apprentice learning for CS 2 , 1997, SIGCSE '97.

[17]  Dirk Riehle,et al.  Pattern Languages of Program Design 3 , 1997 .

[18]  B. F. Castro Buschmann, Frank; Meunier, Regine; Rohnert, Hans; Sommerlad, Peter; Stal, Michael. Pattern-oriented software architecture: a system of patterns, John Wiley & Sons Ltd, 1996 , 1997 .

[19]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[20]  Gerard Meszaros,et al.  Patterns in software architecture , 1997, OOPSLA '97.

[21]  Kate Ehrlich,et al.  Empirical Studies of Programming Knowledge , 1984, IEEE Transactions on Software Engineering.

[22]  Fred P. Brooks,et al.  The Mythical Man-Month , 1975, Reliable Software.

[23]  Jiri Soukup,et al.  Implementing patterns , 1995 .

[24]  Michael T. Goodrich,et al.  Teaching data structure design patterns , 1998, SIGCSE '98.

[25]  Christopher Alexander,et al.  The Timeless Way of Building , 1979 .

[26]  Peter Sommerlad,et al.  Pattern-Oriented Software Architecture: A System of Patterns: John Wiley & Sons , 1987 .

[27]  Brandon Goldfedder,et al.  A training experience with patterns , 1996, CACM.

[28]  J. Philip East,et al.  Pattern Based Programming Instruction , 1996 .

[29]  Mary Shaw,et al.  Some patterns for software architectures , 1996 .

[30]  Susan H. Rodger,et al.  Animation, visualization, and interaction in CS 1 assignments , 1998, SIGCSE '98.

[31]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[32]  Robert S. Rist Schema Creation in Programming , 1989, Cogn. Sci..

[33]  Allen B. Tucker,et al.  Strategic directions in computer science education , 1996, CSUR.

[34]  WallingfordEugene Toward a first course based on object-oriented patterns , 1996 .

[35]  David Lorge Parnas,et al.  On the Design and Development of Program Families , 2001, IEEE Transactions on Software Engineering.

[36]  Owen L. Astrachan Pictures as invariants , 1991, SIGCSE '91.

[37]  Marshall Cline The pros and cons of adopting and applying design patterns in the real world , 1996, CACM.

[38]  Philip Miller,et al.  Engaging students and teaching modern concepts: literate, situated, object-oriented programming , 1994, SIGCSE '94.

[39]  Harriet J. Fell,et al.  Scaling: a design pattern in introductory computer science courses , 1998, SIGCSE '98.

[40]  Jr. Frederick P. Brooks,et al.  The mythical man-month (anniversary ed.) , 1995 .

[41]  Owen L. Astrachan Self-reference is an illustrative essential , 1994, SIGCSE '94.

[42]  James O. Coplien,et al.  Pattern languages of program design , 1995 .

[43]  Elliot Soloway,et al.  Learning to program = learning to construct mechanisms and explanations , 1986, CACM.

[44]  Sally Fincher,et al.  What is a Pattern Language , 2000 .