Computing educators recognize a critical need for innovative change to attract and maintain a stable and more diverse incoming enrollment. As noted by Peter Denning, “The loss of attraction to [computing] comes from our being unable to communicate the magic and beauty of the field.”5 The most recent Taulbee Survey1 continues to indicate that women, Hispanics, and other traditionally underrepresented groups have not made enrollment gains over the last decade and diversity is at a record low. What innovative teaching and learning strategies might attract a more diverse student population and maintain students in undergraduate computing programs?
Educators might well take a lesson from colleagues in science and engineering, many of whom have struggled with diversity and decreasing enrollments in decades past. The American Association for the Advancement of Science (well known for the journal Science) has published Science for All Americans,4 a highly praised book that describes science understandings all students should learn. Importantly, the authors devote an entire chapter to emphasize how science is taught is equally important with what is taught; that is, pedagogy matters. A particularly relevant quote is that students’ learning progression is “usually from the concrete to the abstract. Young people can learn most readily about things that are tangible and directly accessible to their senses—visual, auditory, tactile, and kinesthetic. With experience, they grow in their ability to understand abstract concepts, manipulate symbols, reason logically, and generalize. These skills develop slowly, however, and the dependence of most people on concrete examples of new ideas persists throughout life. Concrete experiences are most effective in learning when they occur in the context of some relevant conceptual structure.”
The assertions we’ve expressed here raise three interesting issues for computer science: the ubiquity of science concepts; the importance of context; and the movement from the concrete to the abstract. The first is related to aspects of science that all children must learn/know. Jeanett Wing, in her manifesto, Computational Thinking, argues analogously for the ubiquity of computation, as a skill that all must master.6 She adds computational thinking as a fourth “analytical ability,” to reading, writing, and arithmetic, which all young people should be exposed to and given the opportunity to master. Certainly, it is interesting to explore how Alice helps students gain capability in computational thinking abilities, and we describe our work with Alice in this column.
The second issue raised is the importance of context. We believe context helps to communicate the “magic and beauty” of our discipline. Exciting work is going on in this space. There is much excitement about the potential for robotics. From Lego Mindstorms to Scribblers to Myro and Chiara, the possibilities offer great potential. Guzdial and Ericson have discovered that working with media is fun for students who love to build their own (scaled down) versions of Photoshop and Audacity. Alice (in 3D) and Scratch (in 2D) use animation, storytelling, and game authorship as a context in which to entice students toward computing. Lily-Pad Arduino is doing much the same through e-textiles.
In many ways, the third issue is the most challenging for computing educators. Attracting a more diverse student population and maintaining students in undergraduate computing programs should involve a teaching and learning strategy that begins with the concrete in a context familiar to students and then gradually leads to an understanding of the abstract. Our discipline is all about abstraction. But it is not clear how to begin with the concrete and then move to the abstract, particularly in introductory computer programming courses that use languages inherently dependant on abstraction. Exciting innovations are gaining traction, however, through new pedagogic approaches such as Peer-Led Team-Learning, CS Unplugged, Supplemental Instruction, Project-Based Learning, and Problem-Based Learning.
Alice 2 brings a different form of magic and beauty into teaching and learning fundamental programming concepts.
These three issues are the driving force behind the creation of Alice 3, currently under development by the Alice team at Carnegie Mellon. Dennis Cosgrove, lead architect of Alice 2, is also the project scientist for developing the Alice 3 software.
A Brief History of Alice
Under the leadership of the late Randy Pausch, Alice was originally developed as a rapid prototyping tool for virtual reality animation, complete with head-mounted devices and glove sensors. Pausch used the original Alice in his Building Virtual Worlds course, where students from different disciplines (CS, design, and art) had to work together in small groups, under short deadlines, to build and demonstrate virtual worlds. The students thought they were learning about virtual reality, but they were also learning how to work together with other people in a way that others would respect them and keep working with them. Encouraging students to learn one thing while they believe they are learning something else is what Pausch called a “head fake.” The course became so popular that it inspired a master’s degree program in the Entertainment Technology Center at CMU.
In the late 1990s, we joined with the Alice team to pursue a dream of evolving Alice into an educational software tool that could be used to gently introduce students to computer programming. The goal was to create a new version of Alice that would introduce students to object-oriented programming concepts using concrete, visual objects in a 3D graphical environment. The concrete objects would be things that are familiar in their real world: houses, trees, animals, people, cell-phones, but in a virtual world where a person can be scared by a spooky sound while riding a bicycle home after sports practice, and turn to see… imagination takes over…and students spend hours learning how to program.
The head fake is still there. Alice 2 provides a 3D programming environment with concrete objects that make it easy for students to create expressive animated movies, similar to film shorts created by professionals in animation studios such as Pixar and Disney. Students are engaged by the whimsical characters and get caught up in the excitement of creating animated movies or simple games. Students are learning how to create an animation, but also are learning about sequence, conditionals, Boolean expressions, repetition, and even concurrent execution.
Alice 2 brings a different form of magic and beauty into teaching and learning fundamental programming concepts as students build animated movies and interactive games. Alice’s drag-and-drop editor prevents syntax errors that often frustrate beginning programmers. And, by engaging and stimulating students’ creativity, Alice encourages students to invest more time on task. But does it work? Do students actually learn the concepts? Is it effective in retaining students?
The Alice approach consists of the current Alice 2 and Learning to Program with Alice2 pedagogy and instructional materials, which were developed and disseminated with NSF support. To investigate the effectiveness of this approach, we carried out a pilot study, primarily targeting a pre-CS1 audience.3 In this study, we saw that at-risk computing majors who were exposed to Alice were nearly twice as likely to continue on to CS2 as their control-group peers who had not been exposed to Alice (88% versus 47% retention). Beyond CS2, the at-risk students who had been exposed to Alice performed comparably to their non-at-risk peers. Unfortunately, the high attrition among at-risk students who had not been exposed to Alice resulted in too few control-group students remaining to meaningfully measure how they performed in later courses as compared to the students who had been exposed to Alice.
We have been tracking Alice adoption in colleges. To our knowledge, well over 10% of colleges and universities in the U.S. have adopted Alice and we are currently experiencing an explosion into high schools, as well as increasingly with schools abroad and in middle school. We distribute our monthly Alice e-newsletter to more than 2,000 educators (nearly half of whom are K12 teachers, and more than 300 of whom have email addresses indicating they teach at institutions outside the U.S.).
The teacher can gradually lead students from the concrete context of animation to abstract data and structures in Java and a traditional context.
Moving From the Concrete to the Abstract
Alice 2 provides the concrete, but what about the abstract? No matter how much fun Alice 2 may be, computing students must eventually move to the abstract and into a production-level language such as Java, C++, Python, C#, or (your choice here). And, one message we have heard loud and clear from many computing educators at liberal arts and community colleges and at comprehensive universities is a demand for software, curriculum, and instructional materials that can be used to blend the Alice approach with Java in a regular CS1 course. One reason for this demand is the difficulty of adding a pre-CS1 course to curricula in liberal arts colleges where the number of courses that can be offered is limited by two factors: a small number of faculty available for teaching courses; and the need to balance the number of courses required for the major with a heavy load of required general education courses. Responding to this demand, Alice 3 targets CS1 or AP CS courses. (Alice 2 continues to be supported for pre-CS1 and CS0 courses.)
Alice 3 is currently undergoing extensive beta testing. Not only are we tracking bugs we are also obtaining feedback from teachers and students regarding three important features designed to support a concrete to abstract approach. The first is the teacher has a choice regarding how close to Java their students will begin. Two versions of the drag-and-drop interface are provided: one in a familiar, natural language style and with minimal syntax and one in actual Java code.
The second feature is more subtle. Animation programs constructed in Alice 2 use built-in motion methods, (such as move, turn, and roll). This means students sometimes need to focus attention on mechanics of turning an object’s body joints to obtain a reasonable walk, skate, or peck (for a chicken) animation. Alice 3 provides two galleries with a richer set of animations: the Alice 2 characters and the Sims2 characters (contributed by Electronic Arts). Richer primitive animations enable students to design and program animations at a higher, more abstract level.
The third feature is a transition option that allows students to “open the hood” and type Java code, edit, and run it in the NetBeans text-based Java integrated development environment. This provides an ability to start in Alice’s 3D animation environment and transition to programming in actual Java code. The teacher can gradually lead students from the concrete context of animation to abstract data and structures in Java and a traditional context.
The path toward helping students think “like a computer scientist… thinking at multiple levels of abstraction”6 is an exciting and challenging one. We believe Alice 3 is one step along that path.
Join the Discussion (0)
Become a Member or Sign In to Post a Comment