Skip to main content

Problem-Solving Strategies

  • Chapter
  • First Online:
  • 2218 Accesses

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.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   69.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   89.95
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Notes

  1. 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. 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. 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. 4.

     See http://www.cs.joensuu.fi/~saja/var_roles/role_intro.html

  5. 5.

     See http://www.cs.joensuu.fi/~saja/var_roles/try.html

  6. 6.

     See http://cs.joensuu.fi/~pgerdt/RAE/

  7. 7.

     See http://www.cs.joensuu.fi/~saja/var_roles/why_roles.html

  8. 8.

     See http://www.cs.joensuu.fi/~saja/var_roles/teaching.html

  9. 9.

     See http://www.cs.joensuu.fi/~saja/var_roles/literature.html

References

  • Astrachan O, Berry G, Cox L, Mitchener G (1998) Design patterns: An essential component of CS curricula. Proc. SIGCSE: 153–160

    Google Scholar 

  • Batory D, Sarvela J N, Rauschmayer A (2004) Scaling stepwise refinement. IEEE Trans. Softw. Eng. 30(6): 355–371

    Article  Google Scholar 

  • 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

    Google Scholar 

  • Clancy M J, Linn M C (1999) Patterns and pedagogy. Proc. of SIGCSE’99: 37–42

    Google Scholar 

  • Dijkstra E W (1976) A discipline of programming. Prentice-Hall

    Google Scholar 

  • 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

    Google Scholar 

  • Ginat D (2004) Algorithmic patterns and the case of the sliding delta. SIGCSE Bull. 36(2):29–33

    Article  Google Scholar 

  • 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

    Google Scholar 

  • 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

    Google Scholar 

  • 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

    Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Google Scholar 

  • Polya G (1957) How to solve it. Garden City, NY: Doubleday and Co., Inc

    Google Scholar 

  • Proulx V K (2000) Programming patterns and design patterns in the introductory computer science course. Proc. SIGCSE: 80–84

    Google Scholar 

  • Reed D (1999) Incorporating problem-solving patterns in CS1. J. Comput. Sci. Edu.13(1): 6–13

    Google Scholar 

  • Reynolds R G, Maletic J I, Porvin S E (1992) Stepwise refinement and problem solving. IEEE Softw. 9(5): 79–88

    Article  Google Scholar 

  • Robins A, Rountree J, Rountree N (2003) Learning and teaching programming: Areview and discussion. Comput. Sci. Edu. 13(2):137–172

    Article  Google Scholar 

  • 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

    Google Scholar 

  • 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 

  • Soloway E (1986) Learning to program  =  learning to construct mechanisms and explanations. CACM 29(1): 850–858

    Google Scholar 

  • 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

    Google Scholar 

  • 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

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Orit Hazzan .

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics