Article Preview
TopNovice Programmers
Although programming, in general, can be used as a “mindtool” to help students in using modern technologies to solve problems (Jonassen, 2000), teaching and learning of programming are considered a difficult task both for teachers and students (Ivanović, Xinogalos, Pitner & Savić, 2016). High dropout rates and unstable attendance are common in introductory programming courses (Bennedsen & Caspersen, 2007; Hanks, Fitzgerald, McCauley, Murphy & Zander, 2011). There are clear indications that the traditional teaching approach both in universities and in secondary education is ineffective (Jimoyiannis, 2013) as there is a multitude of research data which show that the novice programmers have serious problems understanding even the basic programming concepts (Anfurrutia et al., 2016; Williams, McCrickard, Layman, & Hussein, 2008).
The difficulties faced by novice programmers in learning to program are well documented and are identified in the use of variables, logical operators and control structures, the loops, passing the values and running multiple threads simultaneously (Meerbaum-Salant et al., 2013). Novice programmers often fail to correctly apply the knowledge they have obtained (Ala-Mutka, 2004). Students may know the syntax and semantics of individual statements, but they do not know how to combine those elements in order to produce valid programs (Costa, Aparicio & Cordeiro, 2012). Students commonly have misconceptions concerning the creation of a program, such as variable initialization, loop conditions, indicators, data structures and recursion (Robins et al., 2003). They face similar problems with object-oriented programming paradigms (Guzdial, 2004).