Jolley Hall, Room 309
"The Example Guru: Suggesting Examples to Novice Programmers in an Artifact-Based Context"
Adviser: Caitlin Kelleher
Programmers in artifact-based contexts could often benefit from skills or information that they do not realize exist. In artifact-based contexts, programmers have a goal project that they plan to create and must make their own plan for how to accomplish it. Currently, these programmers have to seek out information, but may not know what to search for or even that certain information could help them. This is especially problematic for young novice programmers in blocks programming environments. Blocks programming environments often lack even minimal in-context support, such as auto-complete or in-context documentation. Novices programming independently in these blocks-based programming environments often plateau in the programming skills and API methods they use. The goal of my work is to encourage novices in artifact-based programming contexts to explore new API methods and skills. One way to support novices may be with examples, as examples are effective for learning and also highly available. In order to better understand how to use examples for supporting novice programmers, I first ran two studies exploring novices' use and focus on example code. I used those results to design a system called the Example Guru. The Example Guru suggests example code snippets to novice programmers that contain previously unused API methods or code concepts. Finally I present an approach for semi-automatically generating the content for this suggestion system. This approach reduces the amount of expert effort required to create suggestions. I make three contributions through this thesis: 1) a better understanding of novices' difficulties using example code, 2) a system that encourages exploration and use of new programming skills, and 3) an approach for generating content for a suggestion system with less expert effort.