“…The lack of basic problem solving competence and thinking skills is a prominent problem with novice programmers. Errors in students' programs are commonly related to deficiencies in problem solving strategies and insufficient planning and design (Hohmann, Guzdial, & Soloway, 1992;Spohrer, 1992;Scholtz & Weidenbeck, 1992Anjaneyulu 1994;Guzdial, Hohmann, Konneman, Walton & Soloway, 1998;Tucker et al, 1998;NRC, 1999;Deek & McHugh, 2000a&b). Both problem solving competence and understanding of the syntax, semantics, and pragmatics of a programming language constitute the foundation skills required to compose, comprehend, reuse, integrate, debug and test, modify and document programs, and students often do not appear to understand the purpose, structure and use of the programming language constructs they study (Soloway, Ehrlich, Bonar, and Greenspan 1982;Bereiter and Scardamalia 1985;Johnson 1990;Ebrahimi, 1994).…”