Problem-Solving Strategies

  • Orit HazzanEmail author
  • Tami Lapidot
  • Noa Ragonis


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. Astrachan O, Berry G, Cox L, Mitchener G (1998) Design patterns: An essential component of CS curricula. Proc. SIGCSE: 153–160Google Scholar
  2. Batory D, Sarvela J N, Rauschmayer A (2004) Scaling stepwise refinement. IEEE Trans. Softw. Eng. 30(6): 355–371CrossRefGoogle Scholar
  3. Ben-Ari M, Sajaniemi J (2003) Roles of variables from the perspective of computer science ­educators. Univ. Joensuu, Depart. Comput. Sci., Technic. Report, Series A-2003–6Google Scholar
  4. Clancy M J, Linn M C (1999) Patterns and pedagogy. Proc. of SIGCSE’99: 37–42Google Scholar
  5. Dijkstra E W (1976) A discipline of programming. Prentice-HallGoogle Scholar
  6. East J P, Thomas S R, Wallingford E, Beck W, Drake J (1996) Pattern-based programming instruction. Proc. ASEE Ann. Conf. and Exposition, Washington DCGoogle Scholar
  7. Ginat D (2004) Algorithmic patterns and the case of the sliding delta. SIGCSE Bull. 36(2):29–33CrossRefGoogle Scholar
  8. Ginat D (2009) Interleaved pattern composition and scaffolded learning. Proc. 14th Ann. ACM SIGCSE Conf. on Innov. and Technolog. in Comput. Sci. Edu. - ITiCSE ‘09, Paris, France: 109–113Google Scholar
  9. Laakso M J, Malmi L, Korhonen A, Rajala T, Kaila E, Salakoski T (2008) Using roles of variables to enhance novice’s debugging work. Iss. in Informing Sci. and Inf. Technol. 5: 281–295Google Scholar
  10. Muller O (2005) Pattern oriented instruction and the enhancement of analogical reasoning. Proc. First Int. Workshop on Comput. Educ. Res. ICER ‘05, Seattle, WA, USA: 57–67Google Scholar
  11. Muller O, Ginat D, Haberman B (2007) Pattern-oriented instruction and its influence on problem decomposition and solution construction. ACM SIGCSE Bull. 39(3): 151–155CrossRefGoogle Scholar
  12. Muller O, Haberman B, Averbuch H (2004) (An almost) pedagogical pattern for pattern-based problem solving instruction. Proc. 9th Ann. SIGCSE Conf. on Inn. Technolog. in Comput. Sci. Edu.: 102–106Google Scholar
  13. Polya G (1957) How to solve it. Garden City, NY: Doubleday and Co., IncGoogle Scholar
  14. Proulx V K (2000) Programming patterns and design patterns in the introductory computer science course. Proc. SIGCSE: 80–84Google Scholar
  15. Reed D (1999) Incorporating problem-solving patterns in CS1. J. Comput. Sci. Edu.13(1): 6–13Google Scholar
  16. Reynolds R G, Maletic J I, Porvin S E (1992) Stepwise refinement and problem solving. IEEE Softw. 9(5): 79–88CrossRefGoogle Scholar
  17. Robins A, Rountree J, Rountree N (2003) Learning and teaching programming: Areview and discussion. Comput. Sci. Edu. 13(2):137–172CrossRefGoogle Scholar
  18. Sajaniemi J (2005) Roles of variables and learning to program. Proc. 3 rd Panhellenic Conf. Didactics of Informatics, Jimoyiannis A (ed) University of Peloponnese, Korinthos, Greece Accessed 3 July 2010
  19. Schön D A (1983) The reflective practitioner. BasicBooksGoogle Scholar
  20. Schoenfeld A H (1983) Episodes and executive decisions in mathematical problem-solving. In Lesh and Landaue (eds) Acquisition of mathematics conceptsand processes. Academic Press Inc.Google Scholar
  21. Soloway E (1986) Learning to program  =  learning to construct mechanisms and explanations. CACM 29(1): 850–858Google Scholar
  22. Vasconcelos J (2007) Basic strategy for algorithmic problem solving. Accessed: 2 June 2010
  23. Wallingford E (1996) Toward a first course based on object-oriented patterns. Proc. SIGCSE: 27–31Google Scholar
  24. Wirth N (1971) Program development by stepwise refinement. CACM 14(4): 221–227 http://sunnyd Accessed 13 November 2010Google Scholar

Copyright information

© Springer-Verlag London Limited 2011

Authors and Affiliations

  1. 1.Dept. Education in Technology & ScienceTechnion - Israel Institute of TechnologyHaifaIsrael
  2. 2.Computer Science Studies, School of EducationBeit Berl CollegeDoar Beit BerlIsrael

Personalised recommendations