Graphics and visualization helps students in understanding such internals. This paper is about use of an animated graphics tool, namely Alice, to teach C++ programming.
The traditional method of teaching programming is to use class room lessons (notes, presentations), in-class demonstrations and to accompany them with assignments. Most courses employ a programming language to illustrate coding, starting off with a Hello World program written using that language. Then they move to programming concepts such as control structures, abstract data types, sorting and searching algorithms etc.
The use of traditional memory maps (or sketches) to illustrate the internals of a program creates a "confusing clutter of arrows and boxes on the board or projection screen" (Dann 1). The result is that while students focus on understanding the maze of memory maps, they fail to keep track of the concept of an object. (1)
A more modern approach to teach programming is to use a visual method which employs computer graphics. Such visual tools would readily animate the change of state and behavior offering immediate feedback to the students about the programs they write. Alice, developed by the Carnegie Mellon University, is one such tool.
Alice is an open source programming environment offering a 3D interactive graphics interface. It is primarily a scripting and prototyping tool with an object oriented (OO) flavor. Users can program Alice using drag-and-drop based interface to animate objects in a virtual world. Alice is a friendly programming environment for novice programmers offering actions, named instructions, functions, control structures and event-driven programming. The whole experience is highly OO making the students think in terms of objects, properties and methods. The storyboarding and game programming concepts, which most students are familiar, are employed to teach algorithmic thinking and designing. (Cooper, Alice, 3-4)
(IV.) Why Alice will work
Programming needs abstract thinking. As stated by Booch, a pioneer in the OO approach, "deciding upon the right set of abstractions for a given domain is the central problem in object-oriented design" (42) Abstraction needs students to be able to visualize things. Further, understanding control structures, algorithms and applying them to solve programming problems need mental mappings by a student.
Alice helps visualization of these programming constructs. It "offloads the mental effort from the student's cognitive system to his or her perceptual system" (Dann et al, Learning to Program, Preface to Instructors). As a result, the programming concepts become more concretely visible rather than being more abstract in the minds of the students.
Will a graphical environment such as Alice help students to understand algorithms and programming constructs such as sequence, selection and repetition Yes, the evidence proves so. In a study conducted over two years at Saint Joseph's University and Ithaca College, it has been found that student performance and retention in programming courses and their attitudes towards computer science showed dramatic improvements (Moskal 5). Powers et al has also observed that Alice has been able to improve the