Abstract
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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
 An algorithmic problem is defined by what is given – the initial conditions of the problem, and its goals – the desired state, what should be accomplished. An algorithm problem can be solved with a series of actions formulated formally either by pseudo code or a programming language.
- 2.
 In advanced computer science classes, it is relevant to mention that in computer science, in addition to the development of problem solving strategies, special emphasis is placed also on non-solvable problems (see Chap. 9).
- 3.
 The roles of variables home page (http://www.cs.joensuu.fi/~saja/var_roles/) is very rich and contains different kinds of educational resources.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
References
Astrachan O, Berry G, Cox L, Mitchener G (1998) Design patterns: An essential component of CS curricula. Proc. SIGCSE: 153–160
Batory D, Sarvela J N, Rauschmayer A (2004) Scaling stepwise refinement. IEEE Trans. Softw. Eng. 30(6): 355–371
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–6
Clancy M J, Linn M C (1999) Patterns and pedagogy. Proc. of SIGCSE’99: 37–42
Dijkstra E W (1976) A discipline of programming. Prentice-Hall
East J P, Thomas S R, Wallingford E, Beck W, Drake J (1996) Pattern-based programming instruction. Proc. ASEE Ann. Conf. and Exposition, Washington DC
Ginat D (2004) Algorithmic patterns and the case of the sliding delta. SIGCSE Bull. 36(2):29–33
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–113
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–295
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–67
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–155
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–106
Polya G (1957) How to solve it. Garden City, NY: Doubleday and Co., Inc
Proulx V K (2000) Programming patterns and design patterns in the introductory computer science course. Proc. SIGCSE: 80–84
Reed D (1999) Incorporating problem-solving patterns in CS1. J. Comput. Sci. Edu.13(1): 6–13
Reynolds R G, Maletic J I, Porvin S E (1992) Stepwise refinement and problem solving. IEEE Softw. 9(5): 79–88
Robins A, Rountree J, Rountree N (2003) Learning and teaching programming: Areview and discussion. Comput. Sci. Edu. 13(2):137–172
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 http://cs.joensuu.fi/~saja/var_roles/abstracts/didinf05.pdf Accessed 3 July 2010
Schön D A (1983) The reflective practitioner. BasicBooks
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.
Soloway E (1986) Learning to program  =  learning to construct mechanisms and explanations. CACM 29(1): 850–858
Vasconcelos J (2007) Basic strategy for algorithmic problem solving. http://www.cs.jhu.edu/~jorgev/cs106/ProblemSolving.html Accessed: 2 June 2010
Wallingford E (1996) Toward a first course based on object-oriented patterns. Proc. SIGCSE: 27–31
Wirth N (1971) Program development by stepwise refinement. CACM 14(4): 221–227 http://sunnyd ay.mit.edu/16.355/wirth-refinement.html Accessed 13 November 2010
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
Copyright information
© 2011 Springer-Verlag London Limited
About this chapter
Cite this chapter
Hazzan, O., Lapidot, T., Ragonis, N. (2011). Problem-Solving Strategies. In: Guide to Teaching Computer Science. Springer, London. https://doi.org/10.1007/978-0-85729-443-2_5
Download citation
DOI: https://doi.org/10.1007/978-0-85729-443-2_5
Published:
Publisher Name: Springer, London
Print ISBN: 978-0-85729-442-5
Online ISBN: 978-0-85729-443-2
eBook Packages: Computer ScienceComputer Science (R0)