CAREER: Interactive Systems for Learning Programming at Scale
University Of California-San Diego, La Jolla CA
Investigators
Abstract
Computer programming is an important skill for many modern professions in fields ranging from technology to business to healthcare. Millions of people now want to learn this skill to prepare for a growing variety of careers. Although some well-resourced schools offer programming courses, the vast majority of people in this country do not have access to high-quality classroom learning environments. Thus, there is a critical need to bring the best aspects of these in-person environments to freely-accessible online settings in order to provide more people with educational opportunities. The goal of this project is to develop ways to scale up computer programming education by enabling anyone to receive free one-on-one tutoring along with computer-generated feedback as they learn programming. Its outcomes will result in a more diverse and globally-competitive American technological workforce. This project will develop, deploy, and evaluate two novel interactive systems that enable large groups of people to help one another learn programming in online environments where experts are often not available. Specifically, the research team will develop two new systems atop their widely-used Python Tutor online education platform: 1) Omnitutor, which organizes learners to tutor one another even while they are individually working on their own code, 2) Rosetta, which enables learners to annotate their code and errors with hints that may benefit future learners who face similar issues. Deploying and evaluating these systems will advance the state of scientific knowledge regarding: 1) how to coordinate a group of learners to provide both synchronous and asynchronous help while they are each working on their own code; 2) how to design interactive technologies that achieve this goal via new algorithms such as code similarity analysis, machine-assisted code simplification, and generalization of code annotations; 3) how these designs enable novices to provide high-quality assistance to people they do not personally know; and 4) common novice misconceptions about programming languages. This award reflects NSF's statutory mission and has been deemed worthy of support through evaluation using the Foundation's intellectual merit and broader impacts review criteria.
View original record on NSF Award Search →