An instructional scaffolding approach to teaching software design

Students often find introductory computer science courses boring and mechanical, leading many to drop from the major. Educators have suggested that bringing realistic design problems into the introductory courses would increase student retention and better prepare students for the major. However, the design and implementation of a solution to a realistic problem is often nontrivial and can therefore be very stressful to students. By using the pedagogical paradigm of scaffolding, this anxiety can be ameliorated. A prototypical design course is described where students implement solutions to progressively more difficult design problems. The solutions to these initial assignments are then continually refactored and used as the code-base for subsequent assignments and the culminating team project. The social interactions necessary for instructional scaffolding are facilitated by having each final project be unique, but similar enough to allow students to help each other. We describe the framework of assignments used in our course, including the capstone projects in which students develop computer vision-based systems that do things like read dice and poker hands, and sort M&Ms.

[1]  Jens E. Jorgensen,et al.  Benchmarking: a process basis for teaching design , 1997, Proceedings Frontiers in Education 1997 27th Annual Conference. Teaching and Learning in an Era of Change.

[2]  Ronald L. Rivest,et al.  Introduction to Algorithms , 1990 .

[3]  Michael Drmota An analytic approach to the height of binary search trees , 2007, Algorithmica.

[4]  Adam Drozdek,et al.  Data structures and algorithms in C , 1995 .

[5]  Linda Allal,et al.  Assessment "of"- or "in"- the Zone of Proximal Development. , 2000 .

[6]  Peter J. Denning,et al.  Great principles of computing , 2015, CACM.

[7]  C.J. Atman,et al.  Cognitive processes in iterative design behavior , 1999, FIE'99 Frontiers in Education. 29th Annual Frontiers in Education Conference. Designing the Future of Science and Engineering Education. Conference Proceedings (IEEE Cat. No.99CH37011.

[8]  Robert P. Colwell Complexity in Design , 2005, Computer.

[9]  Ubiquity staff An Interview with Peter Denning on the great principles of computing , 2004 .

[10]  Ellis Horowitz,et al.  Fundamentals of Data Structures in Pascal , 1984 .

[11]  G. Wiggins The Case for Authentic Assessment. , 1990 .

[12]  Patricia A. Heller,et al.  Teaching problem solving through cooperative grouping. Part 2: Designing problems and structuring groups , 1992 .

[13]  Grant Braught,et al.  Core empirical concepts and skills for computer science , 2004 .

[14]  Chris Okasaki Alternatives to two classic data structures , 2005 .

[15]  Evans J. Adams A project-intensive software design course , 1993, SIGCSE '93.

[16]  John Noga,et al.  Experiments with balanced-sample binary trees , 2005 .

[17]  Rüdiger Reischuk,et al.  Smoothed Analysis of the Height of Binary Search Trees , 2005, Electron. Colloquium Comput. Complex..

[18]  Bruce A. Reed,et al.  On the Variance of the Height of Random Binary Search Trees , 1995, SIAM J. Comput..

[19]  Landon P. Cox,et al.  Design patterns: an essential component of CS curricula , 1998, SIGCSE '98.

[20]  Robert P. Smith Teaching design for assembly using product disassembly , 1998 .

[21]  W. Venable,et al.  Freshmen can do rigorous open-ended design , 1995, Proceedings Frontiers in Education 1995 25th Annual Conference. Engineering Education for the 21st Century.

[22]  David W. Johnson,et al.  Cooperative learning : increasing college faculty instructional productivity , 1991 .

[23]  Peter J. Denning The field of programmers myth , 2004, CACM.

[24]  John Waldron,et al.  Assessing the assessment of programming ability , 2004 .

[25]  Gregory J. Wilson,et al.  Where’s the Real Bottleneck in Scientific Computing? , 2006 .

[26]  Laurie A. Williams,et al.  On pair rotation in the computer science course , 2004, 17th Conference on Software Engineering Education and Training, 2004. Proceedings..

[27]  David Coppit,et al.  Large team projects in software engineering courses , 2005 .

[28]  Peta Wyeth,et al.  Combining Developmental Theories and Interaction Design Techniques to Inform the Design of Children's Software , 2004 .

[29]  Fred Martin,et al.  Building Robots to Learn Design and Engineering , 1992, Proceedings. Twenty-Second Annual conference Frontiers in Education.

[30]  Roy D. Pea,et al.  The Social and Technological Dimensions of Scaffolding and Related Theoretical Concepts for Learning, Education, and Human Activity , 2004, The Journal of the Learning Sciences.

[31]  Mary Beth Rosson,et al.  What do the experts say?: teaching introductory design from an expert's perspective , 2004 .