PI: Andrew Ko
University of Washington
Millions of people worldwide are trying to learn to code in schools, colleges, universities, and online. To do so successfully, they need significant practice and meaningful feedback that responds to their specific confusions and builds upon the knowledge they already have. Unfortunately, good practice content is challenging to create at scale and skilled teachers capable of providing meaningful feedback are rare and often inaccessible. Moreover, popular online learning technologies only provide a fixed amount of static content and do little to provide meaningful feedback. Because of this, many people give up learning to code, and only those with privileged access to friends, family, mentors, or teachers who can provide this support persist. This limits access to this critical 21st century literacy and ultimately harms the gender, racial, ethnic, and intellectual diversity of our computing workforce.
This project seeks to address part of this problem, applying advances in programming languages research that enable the creation of infinite amounts of diverse practice content, and advances in machine learning to build models of what learners do and do not know. By applying these two advances in computer science, the project will create a novel online learning technology that automatically generates assessment content, provides detailed immediate feedback about solutions, and uses assessment information of learners’ performance to generate more personalized practice that individually targets concepts that learners are struggling to master. In creating such a system, new techniques for generating practice problems and new approaches to modeling learner knowledge of introductory programming concepts will be realized. The project will also explore students’ current approach to practice, then deploy the new system into a large introductory classroom setting to experimentally measure its impact on learning and confidence. If the system is effective, the discoveries have the potential to provide learners in a range of settings more effective practice and learning. This may in turn improve both the competency and diversity of learners who further engage in computing education.