Investigation of Continuous Assessment of Correctness in Introductory Programming

Introduction Learning how to program is notoriously complex and difficult. Computer educators share the assumption that their students find programming difficult to learn (Jenkins, 2002; Bornat, 2011; Dijkstra, 1982). In addition, programming demands several skills that are intertwined, and the novice programmer needs to deal simultaneously with multiple processes. Solutions to computer programming problems should be modular, efficient, clear, validated, and accurate. In addition to being a creative activity, students have to learn the syntax and semantics of programming language elements, and how to combine them into meaningful programs (Muller, Haberman & Averbuck, 2004; Robins, Rountree & Rountree, 2003; Utting et al., 2013). To succeed, students must develop the ability to deal with computational problems regarding the many creative and cognitive aspects of programming. In addition to difficulties in programming, student performance is frequently below the teacher's expectations (McCraken et al., 2001). For example, Jerinic et al. (2014) assessed the grades of students taking introductory programming at different institutions and in various countries, and concluded that the students in introductory programming courses do not know how to program at the expected skill level. Many researchers have considered different perspectives to the teaching and learning of programming (Koulouri, Lauria & Macredie, 2014; Soloway & Ehrlich, 1984; Sphorer & Soloway, 1986; Tang, 2009; Denadhi, 2009). However, there is still no revolutionary pedagogy to teaching programming, and no consensus on what is the best way to learn it. Meanwhile, most teachers still apply a traditional teaching method for introductory programming courses that consists of lectures and programming exercises. There is empirical evidence that programming exercises can have an even more important role than simply applying the theory taught during lectures. Exercises can be seen as teaching artifacts that complement lectures by teaching the same content but in an exploratory manner. In an attempt to make the learning of programming more effective, feedback should be provided to the students during their programming exercises because they learn more effectively when they know what is expected from them. Students look forward to feedback that enables them to improve as learners. During programming activities, feedback is often given by means of assessment tasks (McCraken et al., 2001; Earl & Uscher, 2012). An assessment is any act of interpreting or acting upon information regarding a student's performance, which is collected by a variety of means or practices (Nicol & Macfarlane-Dick, 2006; Messick, 1989). An assessment can significantly influence the effectiveness of student learning (Hattie & Timperley, 2007; Vihavainen, Airaksinen & Watson, 2014). Educators should consider applying assessments as an integral and important component of the teaching and learning process. For the purpose of boosting student learning, a CA is seen as an ongoing process arising out of the interactions between teaching and learning. An assessment involves both the teacher's and the student's use of information, and provides evidence of student performance. The main aspect of the assessment process is to enhance an evaluation by means of a CA that can imply the student's level of progress (Fisher & Frey, 2007). A CA can help a student become more aware of any gaps that exist in their learning process, and can motivate them to narrow these gaps before taking an exam. Feedback can offer students an experiential base for reflection. For the purposes of this work, we consider reflection as a mental process that incorporates critical thought regarding an experience. A student's ability to reflect on the materials they have produced, in order to form reasoned judgments, is central to a deeper level of learning. …