The purpose of this project is to develop and evaluate user interface tools that enable middle school students to effectively teach themselves the basics of computer programming using programs written by peers. The proposed tools will enable middle school users to 1) identify interesting functionality within programs written by peers and 2) re-create that functionality for use in their own programs through automatically generated custom tutorials. As users complete these tutorials to re-create functionality selected from programs their peers have written, they will be introduced to a broad range of programming concepts and constructs. The project will include user testing to both guide and evaluate the development of 1) user interface tools that enable novice programmers to find code of interest in an unfamiliar codebase and 2) technology to automatically generate customized tutorials based on a recorded history of the sequence of user interface actions used to construct a program.
Computer programming has become a fundamental tool that enables progress across a broad range of disciplines including basic science, communications, and medicine. Yet, Computer Science is failing to attract the number of students necessary to sustain progress both within the discipline and in those disciplines supported by computer science. Opportunities to study computer science during middle school (when many students begin to opt out of math and science based careers) are rare. This project will enable middle school children to teach themselves computer programming using programs created by their peers. The project will be implemented within Storytelling Alice, an environment that enables middle school children to write programs to create 3D animated movies. Users will be able to identify parts of movies created by other users that interest them and follow automatically generated tutorials to learn how to create the selected parts of those movies. By building tools that help users to learn effectively from programs written by peers within an appealing programming environment, we enable middle school students across the country to develop skills in computer programming at a time when formal opportunities to study computer science are decreasing and the need for computer scientists is increasing. While this project targets middle school students in the context of learning computer programming, there are many other audiences (e.g. adults learning a new piece of computer software) would benefit from software technologies that enable self-teaching.
Intellectual Merit Today, there are few opportunities for students to explore computer programming prior to college, due in part to a lack of K-12 teachers with a computer science background. To provide opportunities to students who do not have access to a class or teacher, we have developed a programming environment called Looking Glass that enables users to learn from Looking Glass programs shared by other users. Using Looking Glass, users can write programs that control the behaviors of characters in a virtual world. If a user finds a program that includes an animation that the user wishes the learn how to create, the user can remix the source program, select the beginning and end of the animation of interest, and then follow a tutorial to re-create that animation within their own program’s context. To make this possible, we have studied how people without programming experience approach the process of determining which lines of code are responsible for an animation of interest. Using this information, we have developed tools that enable users without programming experience to quickly explore the behavior of an existing program and link lines of code to specific outputs. In addition, we have developed a user interface toolkit that enables us to automatically generate tutorials from a document, in this case a program. Finally, we have explored different ways to present the completed tutorials. Based on these explorations, we developed a new technique for presenting tutorials within the interface that asks users to attempt to complete a step independently. If a user struggles, he or she can request help (i.e. "Show Me How") which reveals step by step instructions that are visually overlaid on the interface. Taken together, these resources enable any shared Looking Glass program to serve as a learning resource for other interested users. Broader Impact Over the course of the grant, we have introduced several hundred middle school aged children to programming through a variety of activities ranging from user testing to public lectures and workshops. More importantly, the Looking Glass program that we developed is available for free from lookingglass.wustl.edu, along with a starter set of tutorials. This system will provide a foundation for further research, but we will continue to make the current version available for use by the general public for free.