An Empirical Evaluation of Visual Metaphors in the Animation of Roles of Variables

Introduction Learning to program is hard to many students. To facilitate teaching introductory programming Sajaniemi (2002) has developed a theory about the roles of variables--a piece of programming knowledge that can be taught explicitly to novices. Only ten roles are needed to cover 99% of all variables in novice-level programming, and they can be described in a compact and easily understandable way. Moreover, program animation can be based on roles, which provides a possibility to elaborate students' role knowledge in a meaningful way. Kuittinen and Sajaniemi (2004) have described how roles can be introduced and exploited in teaching programming. They conducted a classroom experiment where students were taught programming in three different ways: in the traditional way in which the course had been given several times before, i.e., with no specific treatment of roles; using roles throughout the course; and using roles together with the use of a role-based animator in exercises. The introduction of roles was found to provide students a new conceptual framework, which enabled them to mentally process programs in a way similar to that of good code comprehenders. Moreover, the use of role-based animation in exercises seemed to assist in the adoption of role knowledge and expert-like programming skill. The role concept has a strong cognitive foundation. Sajaniemi & Navarro Prieto (submitted) investigated experts' programming investigated experts' programming knowledge in a knowledge elicitation study. They found several types of variable-related knowledge in expert programmers, including roles. There was some variation in role boundaries and in the granularity of roles, but roles could anyhow be easily detected in participants' knowledge. Thus, roles represent expert programmers' tacit knowledge even though individual differences in details do exist. Ben-Ari and Sajaniemi (2004) demonstrated that in one hour's work, computer science educators can learn roles as defined by Sajaniemi (2002), and assign them successfully in normal cases. Thus, the selected set of roles is natural and can be easily adopted by CS teachers. Sajaniemi and Kuittinen (2003) have presented a program animator, PlanAni, which utilizes roles in two ways. First, each variable is depicted by a role image that visualizes the salient properties of the role. For example, variables having the role fixed value are depicted by a stone giving the impression of a value that cannot be changed. Second, the animation of operations depends on the roles. For example, an assignment to a follower is animated by transferring the value of the followed variable into the follower. Role images are used to reflect the way variables having that role behave, i.e., role images are used as visual metaphors for the roles. Metaphor involves the presentation of a new idea (target) in terms of a more familiar one (source) (Carroll & Mack, 1999; Ortony, 1993). Metaphors differ from analogies in that an analogy is functionally identical whereas a metaphor is only partially similar to the target (Wozny, 1989). Critical to the power of metaphor is that the convocation of source and target ideas must involve some transformation, hence users do actively construct the relationships that comprise the metaphor during interaction with the system (Alty, Knott, Anderson, & Smyth, 2000). Salient dissimilarities of the ideas--in the context of salient similarities--stimulate thought and can facilitate active learning (Carroll & Mack, 1999). However, not all dissimilarities give rise to active learning and some may even hinder it. Therefore, the testing of metaphors is crucial. Metaphor research approaches metaphors from three different angles: operational, structural and pragmatic (Carroll, Mack, & Kellogg, 1988). Operational approaches (e.g. Carroll & Mack, 1999; Mayer, 1975, 1976; Sajaniemi & Kuittinen, 2005) try to explain how metaphors operate in the mind to accomplish their effects; structural approaches (e. …