Article Preview
TopBackground
Most novice programmers find it difficult to learn the programming 1 course (Khan et al., 2021). One of the reasons is because novices have to deal with different programming skills such as problem analysis, program design and comprehension, and debugging etc. at the same time (Sohail et al., 2021). Moreover, novices have to learn and understand the abstract concepts in programming courses and afterward use these concepts in devising the solution of a given programming question (Iqbal et al., 2021). But different studies such as Ala-Mutka, 2004; Iqbal & Harsh, 2013; Webster, 1994 argued that most introductory programming courses focus more on programming syntax and semantics instead of considering different programming skills equally. Furthermore, most introductory programming textbooks also focus more on programming syntax and semantics (De Raadt et al., 2005).
Different supporting tools are introduced in programming education to support the process of learning for novices. The main purpose of these supporting tools is to present the programming concepts in different forms like simulation, visualization and animation which help novices to understand these concepts in a different way (Iqbal et al., 2013). Gomez-Albarran (2005) categorized these supporting tools in four groups such as Simulation environments, Example-based environments, Tools with a reduced development environment and Tools based on visualization. The purpose of these supporting tools is to help novice programmers in understanding the fundamental concepts and different skills of the programming domain. Examples of different supporting tools include BlueJ (Barnes & Kölling, 2003), LEONARDO (Crescenzi et al., 2000), WebEx (Brusilovsky, 2001), ANIMAL (Rößling & Freisleben, 2002), Dr Java (Allen et al., 2002), and Alice (Cooper et al., 2003) etc.