Self-directed, open-ended projects can enable students to pursue their own interests and lead to deep learning. However, it can be difficult to incorporate these kinds of projects into a traditional curriculum in which all students must master a set of basic skills. In this chapter, the authors describe the design and implementation of Storytelling Alice, a programming environment that presents computer programming as a means to the end of creating animated stories. By studying the kinds of animated movies that students envision creating, the chapter’s authors were able to design the system such that typical student projects naturally motivate the set of basic concepts we want students to learn. The authors present a potential model for incorporating Storytelling Alice into a classroom setting using open-ended projects. The chapter concludes with a discussion of some directions for future work that may help to enable the use more open-ended projects in formal education.
Motivation For Storytelling Alice
The original goal in designing Storytelling Alice was not to take steps towards enabling open-ended assignments in school, but to find ways to motivate middle school girls to engage with computer programming. Learning to program is a valuable part of a general education for all students. The world around us is filled with complex systems whose behavior depends on the behaviors and interactions of smaller parts within the system: cars, weather, and manufacturing plants, to name just a few. Yet our schools do little to prepare students to reason about complex systems. When your car breaks down, it is helpful to be able to read about the main components of car engines and eliminate possible problems based on your understanding of the behavior of your car. Programming provides children with some hands-on experience dealing with complex systems that they create themselves. When their programs do not behave as expected, children have to learn to isolate the problems and solve them. They learn to narrow the scope of a problem and that a single malfunctioning program component can cause other program components to malfunction. In addition to being a fundamental computer programming skill, the ability to experimentally isolate the cause of a problem is a valuable critical thinking skill.
In addition to the critical thinking skills students develop through programming, an understanding of computer programming may prove to be a valuable job skill for many students. Few of today’s students will be able to avoid working with computers in some capacity in their future careers. Some research estimates that up to 30% of our computer-using workforce will be required to do some programming activities as part of their job (Scaffidi, Shaw, & Myers, 2005). Even students who choose not to pursue computer-related careers may find themselves working with computer scientists, programmers, and engineers. A basic understanding of computer programming will likely be helpful in preparing students to communicate and work productively with computer professionals. Further, the need for computer scientists is expected to grow. The Bureau of Labor Statistics expects that the rate of growth in the Information Technology workforce will be more than twice the growth rate for the overall workforce in the period between 2006 and 2016 (Vegso, 2008).