Article Preview
TopSetting The Stage
Computer programming is often presented to students as an abstract discipline that looks uninspiring (Kelleher, Pausch, & Kiesler, 2007) and socially isolating (Kelleher, & Pausch, 2005). The use of mathematics-based material in teaching computer programming makes it hard for students to learn programming (Kelleher, & Pausch, 2005) and pushes them to lose interest in learning programming (Nakashima, Matsuyama, & Ishii, 2007) and lose confidence in learning programming (Daly, 2011). The percentage of university freshman listing computer science as a probable major is massively declining (Skyes, 2007). In fact, an introductory programming course should build a good understanding of basic programming principles, attract students towards computer programming, and create a good impression of programming to encourage them to major in computing.
Computer science educators are aware of students’ low tendency towards programming and have already explored various tools, techniques and methods to motivate students to learn programming and to make computing appealing and accessible to more students (Kelleher, & Pausch, . 2005).
One of the most common approaches was the use of visual 3D environments (Maloney, Mitchel, Rusk, Silverman, & Eastmond, 2010; Kölling, 2009; Cooper, Wanda, & Pausch, 2000; Chang, 2014; Yang et al., 2015; Chao, 2016). Alice, a 3D visual programming environment, has been used to innovatively teach the most challenging topics in computer programming and for learning OOP concepts. It has been used as one of the preferred programming environments at both high school level (Huang, Yang, & Cheng, 2013) and at university level (Cooper, Dann, & Pausch, 2003; Ma, Teng, Du, & Zhang., 2014). Actually, computer science educators (Bishop-Clark, Courte, & Howard, 2006; Al-Tahat, 2010; Cooper et al., 2003) have reported the benefits of using Alice as an object-first tool and its positive impact on both students’ confidence and in their programming ability and understanding of basic programming concepts.