Problem-solving strategies

Problem solving is one of the central activities performed by computer scientists as well as computer science learners. However, computer science learners often face difficulties in problem analysis and solution construction. Therefore, it is important that computer science educators be aware of these difficulties and acquire appropriate pedagogical tools to help their learners gain experience in these skills. This chapter is dedicated to these pedagogical tools. It presents several problem-solving strategies to address in the MTCS course together with appropriate activities to mediate them to the prospective computer science teachers.

[1]  Reiner Hähnle,et al.  Integrated and Tool-Supported Teaching of Testing, Debugging, and Verification , 2009, TFM.

[2]  Mordechai Ben-Ari,et al.  Roles of Variables From the Perspective of Computer Science Educators , 2003 .

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

[4]  Richard C. Hsu,et al.  After 400 years, print is still superior , 1997, CACM.

[5]  Henry Lieberman,et al.  The Debugging Scandal and What to Do About It (Introduction to the Special Section) , 1997, Commun. ACM.

[6]  Rafael del Vado Vírseda,et al.  A Logic Teaching Tool Based on Tableaux for Verification and Debugging of Algorithms , 2011, TICTTL.

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

[8]  Don Batory,et al.  Scaling Step-Wise Refinement , 2004, IEEE Trans. Software Eng..

[9]  Jorma Sajaniemi,et al.  Roles of variables and programming skills improvement , 2006, SIGCSE '06.

[10]  L. Cosmides,et al.  Evolutionary psychology: A Primer , 1997 .

[11]  Gary Lewandowski,et al.  Debugging: the good, the bad, and the quirky -- a qualitative analysis of novices' strategies , 2008, SIGCSE '08.

[12]  Marcia C. Linn,et al.  Patterns and pedagogy , 1999, SIGCSE '99.

[13]  David Ginat The greedy trap and learning from mistakes , 2003, SIGCSE.

[14]  D. Schoen The Reflective Practitioner , 1983 .

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

[16]  Eugene Wallingford Toward a first course based on object-oriented patterns , 1996, SIGCSE '96.

[17]  Janet Rountree,et al.  Learning and Teaching Programming: A Review and Discussion , 2003, Comput. Sci. Educ..

[18]  Bruria Haberman,et al.  Pattern-oriented instruction and its influence on problem decomposition and solution construction , 2007, ITiCSE.

[19]  K. Popper,et al.  The Logic of Scientific Discovery , 1960 .

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

[21]  Baris Taskin,et al.  Design-for-Debug: A Vital Aspect in Education , 2007, 2007 IEEE International Conference on Microelectronic Systems Education (MSE'07).

[22]  Viera K. Proulx,et al.  Programming patterns and design patterns in the introductory computer science course , 2000, SIGCSE '00.

[23]  David Ginat Algorithmic patterns and the case of the sliding delta , 2004, SGCS.

[24]  Mitsuru Ikeda,et al.  An Ontology based Reflection Support System to Encourage Learning from Mistakes , 2006, Artificial Intelligence and Applications.

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

[26]  David Ginat Learning from wrong and creative algorithm design , 2008, SIGCSE '08.

[27]  David Ginat Interleaved pattern composition and scaffolded learning , 2009, ITiCSE '09.

[28]  Noa Ragonis Integrating the teaching of algorithmic patterns into computer science teacher preparation programs , 2012, ITiCSE '12.

[29]  Tapio Salakoski,et al.  Using Roles of Variables to Enhance Novice's Debugging Work , 2008 .

[30]  Ulrich Kiesmüller,et al.  Diagnosing Learners’ Problem-Solving Strategies Using Learning Environments with Algorithmic Problems in Secondary Education , 2009, TOCE.

[31]  Fakhar Lodhi,et al.  Teaching problem solving effectively , 2011, INROADS.

[32]  David H. Jonassen,et al.  Toward a design theory of problem solving , 2000 .

[33]  George Polya,et al.  Mathematical discovery : on understanding, learning, and teaching problem solving , 1962 .

[34]  Orna Muller Pattern oriented instruction and the enhancement of analogical reasoning , 2005, ICER '05.

[35]  Bruria Haberman,et al.  (An almost) pedagogical pattern for pattern-based problem-solving instruction , 2004, ITiCSE '04.

[36]  Naveed Arshad,et al.  Teaching programming and problem solving to CS2 students using think-alouds , 2009, SIGCSE '09.

[37]  Robert G. Reynolds,et al.  Stepwise refinement and problem solving , 1992, IEEE Software.

[38]  David Reed,et al.  Incorporating problem-solving patterns in CS1 , 1998, SIGCSE '98.

[39]  Karthik Raman,et al.  Learning from mistakes: towards a correctable learning algorithm , 2012, CIKM.

[40]  Jorma Sajaniemi,et al.  Factors in novice programmers' poor tracing skills , 2007, ITiCSE.

[41]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[42]  Orit Hazzan,et al.  Song debugging: merging content and pedagogy in computer science education , 2005, SGCS.