Expertise and Instruction in Software Development

Publisher Summary This chapter surveys the research of the late 1980s and early 1990s on the nature of software development expertise and approaches to teaching software development skills. This literature shows that several complementary developments address the limitations of the early work. The chapter reviews how a cognitive science perspective was employed to develop a theoretical framework for interpreting and refining the empirical studies. Instead of focusing on the efficacy of particular features, research began to characterize the knowledge and skill of programmers and how that knowledge and skill is acquired and developed. Further, the chapter reviews how studies of software expertise have raised the level of analysis from individual lines of code to the design of software systems and to the teamwork involved in such activities. Finally, the chapter examines research and development of programming and design instruction that incorporates these new perspectives on software development expertise.

[1]  Mary Beth Rosson,et al.  Active Programming Strategies in Reuse , 1993, ECOOP.

[2]  Michael Cohen,et al.  Throwing, Pitching and Catching Sound: Audio Windowing Models and Modes , 1993, Int. J. Man Mach. Stud..

[3]  Kate Ehrlich,et al.  An empirical investigation of the tacit plan knowledge in programming , 1984 .

[4]  Marian Petre,et al.  Issues Governing the Suitability of Programming Languages for Programming Tasks , 1988, BCS HCI.

[5]  Rachel K. E. Bellamy,et al.  Parsing and Gnisrap: a model of device use , 1987 .

[6]  A. Newell Reasoning, problem solving, and decision processes: the problem space as a fundamental category , 1993 .

[7]  Raj Tewari,et al.  A Framework for Incorporating Object-Oriented Software Engineering in the Undergraduate Curriculum , 1993, Comput. Sci. Educ..

[8]  Yoelle Maarek,et al.  Integrating information retrieval and domain specific approaches for browsing and retrieval in object-oriented class libraries , 1991, OOPSLA '91.

[9]  Richard G. Epstein,et al.  Introducing Object-Orientedness into a Breadth-First Introductory Curriculum , 1993, Comput. Sci. Educ..

[10]  Robert Simon Rist Knowledge creation and retrieval in program design: a comparison of novice and experienced programmers , 1989 .

[11]  David J. Gilmore,et al.  Expert Programming Knowledge: A Strategic Approach , 1990 .

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

[13]  Mary Beth Rosson,et al.  Climbing the smalltalk mountain , 1990, SGCH.

[14]  Niklaus Wirth,et al.  Program development by stepwise refinement , 1971, CACM.

[15]  Linden J. Ball,et al.  Structured and opportunistic processing in design: a critical discussion , 1995, Int. J. Hum. Comput. Stud..

[16]  Nancy Pennington,et al.  Comprehension strategies in programming , 1987 .

[17]  Robert S. Rist Knowledge Creation and Retrieval in Program Design: A Comparison of Novice and intermediate Student Programmers , 1991, Hum. Comput. Interact..

[18]  Bill Curtis,et al.  Breakdowns and processes during the early activities of software design by professionals , 1987 .

[19]  Bill Curtis,et al.  Communication breakdowns and boundary spanning activities on large programming projects , 1987 .

[20]  Jean Scholtz,et al.  The Role of Planning in Learning a New Programming Language , 1992, Int. J. Man Mach. Stud..

[21]  Bob Rehder,et al.  Cognitive activities and levels of abstraction in procedural and object-oriented design , 1995 .

[22]  Raymonde Guindon Designing the design process: exploiting opportunistic thoughts , 1990 .

[23]  Mary Beth Rosson,et al.  Scaffolded examples for learning object-oriented design , 1996, CACM.

[24]  Willemien Visser Strategies in programming programmable controllers: a field study on a professional programmer , 1987 .

[25]  Bill Curtis,et al.  Five Paradigms in the Psychology of Programming , 1988 .

[26]  D. C. Merrill,et al.  Tutoring: Guided Learning by Doing , 1995 .

[27]  James C. McKim,et al.  Teaching Object-Oriented Programming and Design , 1992, TOOLS.

[28]  Robin Jeffries,et al.  The Processes Involved in Designing Software. , 1980 .

[29]  Susan Wiedenbeck,et al.  Beacons in Computer Program Comprehension , 1986, Int. J. Man Mach. Stud..

[30]  Karlheinz Kautz,et al.  User Participation and Participatory Design: Topics in Computing Education , 1996, Hum. Comput. Interact..

[31]  Bill Curtis,et al.  The Psychology of Programming in the Large: Team and Organizational Behaviour , 1990 .

[32]  T.R.G. Green,et al.  Programming Languages as Information Structures , 1990 .

[33]  Mary Beth Rosson,et al.  Problem-solution mapping in object-oriented design , 1989, OOPSLA 1989.

[34]  B. Adelson When Novices Surpass Experts: The Difficulty of a Task May Increase With Expertise , 1984 .

[35]  Simon P. Davies,et al.  Models and Theories of Programming Strategy , 1993, Int. J. Man Mach. Stud..

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

[37]  Hermann Hüni,et al.  Teaching OO Software Engineering by Example: The Games Factory , 1993, Comput. Sci. Educ..

[38]  Françoise Détienne Design strategies and knowledge in object-oriented programming: effects of experience , 1995 .

[39]  Gerhard Fischer,et al.  Cognitive View of Reuse and Redesign , 1987, IEEE Software.

[40]  Bill Curtis,et al.  A field study of the software design process for large systems , 1988, CACM.

[41]  Dov Dori,et al.  Analysis and Representation of the Image Understanding Environment Using the Object-Process Methodology , 1996, J. Object Oriented Program..

[42]  Robert S. Rist Variability in Program Design: The Interaction of Process with Knowledge , 1990, Int. J. Man Mach. Stud..

[43]  John C. Thomas,et al.  Clinical— experimental analysis of design problem solving , 1979 .

[44]  Martin Osborne Computing Curricula 1991 and the Case for Object-Oriented Methodology , 1993, Comput. Sci. Educ..

[45]  B. Adelson,et al.  The Role of Domain Expenence in Software Design , 1985, IEEE Transactions on Software Engineering.

[46]  Ted G. Lewis,et al.  Guest Editors' Introduction: The Challenge of Software Development , 1990 .

[47]  Iris Vessey,et al.  Expertise in Debugging Computer Programs: A Process Analysis , 1984, Int. J. Man Mach. Stud..

[48]  Judith S. Olson,et al.  Small Group Design Meetings: An Analysis of Collaboration , 1992, Hum. Comput. Interact..

[49]  John R. Anderson,et al.  Skill Acquisition and the LISP Tutor , 1989, Cogn. Sci..

[50]  Robert S. Rist Program Structure and Design , 1995, Cogn. Sci..

[51]  John R. Anderson,et al.  Learning to Program in LISP , 1984, Cogn. Sci..

[52]  Iris Vessey,et al.  On Matching Programmers' Chunks with Program Structures: An Empirical Investigation , 1987, Int. J. Man Mach. Stud..

[53]  Marcia C. Linn,et al.  Can Experts' Explanations Help Students Develop Program Design Skills? , 1992, Int. J. Man Mach. Stud..

[54]  Scott P. Robertson,et al.  Expert problem solving strategies for program comprehension , 1991, CHI.

[55]  Wilf R. LaLonde Making Object-Oriented Concepts Play a Central Role in Academic Curricula , 1993, Comput. Sci. Educ..

[56]  Willemien Visser,et al.  More or Less Following a Plan During Design: Opportunistic Deviations in Specification , 1990, Int. J. Man Mach. Stud..

[57]  Seymour Papert,et al.  Mindstorms: Children, Computers, and Powerful Ideas , 1981 .

[58]  Elliot Soloway,et al.  Preprogramming Knowledge: A Major Source of Misconceptions in Novice Programmers , 1985, Hum. Comput. Interact..

[59]  James D. Herbsleb,et al.  The Structure of Activity During Design Meetings , 1996 .

[60]  Mary Shaw,et al.  Prospects for an engineering discipline of software , 1990, IEEE Software.

[61]  R. Mayer Different problem-solving competencies established in learning computer programming with and without meaningful models. , 1975 .

[62]  Marcia C. Linn,et al.  The Demands and Requirements of Computer Programming: A Literature Review , 1985 .

[63]  Ruven E. Brooks,et al.  Towards a Theory of the Comprehension of Computer Programs , 1983, Int. J. Man Mach. Stud..

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

[65]  Marian Petre,et al.  Expert Programmers and Programming Languages , 1990 .

[66]  Jeffrey G. Bonar,et al.  A visual programming language for novices , 1990 .

[67]  Mary Beth Rosson,et al.  Building a history of the Blacksburg Electronic Village , 1995, Symposium on Designing Interactive Systems.

[68]  Elliot Soloway,et al.  Delocalized Plans and Program Comprehension , 1986, IEEE Software.

[69]  Carl Martin Allwood,et al.  Error Detection Processes in Statistical Problem Solving , 1984, Cogn. Sci..

[70]  J. Gregory Trafton,et al.  Effective Tutoring Techniques: A Comparison of Human Tutors and Intelligent Tutoring Systems , 1992 .

[71]  Albert T. Corbett,et al.  Intelligent Tutoring Systems , 1985, Science.

[72]  Peter Pirolli,et al.  A Cognitive Model and Computer Tutor for Programming Recursion , 1987, SGCH.

[73]  John R. Anderson,et al.  Feedback Control and Learning To Program with the CMU Lisp Tutor. , 1991 .

[74]  Robert S. Rist Plans in programming: definition, demonstration, and development , 1986 .

[75]  Mary Beth Rosson,et al.  Introduction to Special Issue: The OOPSLA'92 Educators' Symposium , 1993, Comput. Sci. Educ..

[76]  Mary Beth Rosson,et al.  The reuse of uses in Smalltalk programming , 1996, TCHI.

[77]  Frederick P. Brooks,et al.  No Silver Bullet: Essence and Accidents of Software Engineering , 1987 .

[78]  James D. Herbsleb,et al.  Object-oriented analysis and design in software project teams , 1995 .

[79]  Herbert A. Simon,et al.  The Structure of Ill Structured Problems , 1973, Artif. Intell..

[80]  Barbara Hayes-Roth,et al.  A Cognitive Model of Planning , 1979, Cogn. Sci..

[81]  Simon P. Davies,et al.  Knowledge restructuring and the acquisition of programming expertise , 1994, Int. J. Hum. Comput. Stud..

[82]  James C. Spohrer,et al.  Empirical Studies of Programmers: Fifth Workshop , 1993 .

[83]  B. Reiser,et al.  Cognitive and Motivational Consequences of Tutoring and Discovery Learning , 1998 .

[84]  Marcia C. Linn,et al.  The case for case studies of programming problems , 1992, CACM.

[85]  Mary Beth Rosson,et al.  The Cognitive Consequences of Object-Oriented Design , 1990, Hum. Comput. Interact..

[86]  John R. Anderson,et al.  Learning to Program in LISP , 1984, Cogn. Sci..

[87]  Curtis R. Cook,et al.  An Investigation of Procedure and Variable Names as Beacons During Program Comprehension , 1991 .