Table of Contents
Fetching ...

Profiling Programming Language Learning

Will Crichton, Shriram Krishnamurthi

TL;DR

The study addresses how programmers learn a language and how to improve learning resources by embedding quizzes into an online textbook and analyzing the resulting data. It adopts a profiling approach, leveraging classical test theory and item response theory to model question difficulty and discrimination, and uses the learning profile to drive 12 targeted interventions that yield an average quiz-score improvement of +20% on the targeted questions. The results highlight that conceptual questions are more discriminative than syntactic ones, and that early chapters (e.g., ownership) are common drop-off points. The authors also demonstrate that their methodology can generalize to languages with smaller user bases through small-N simulations, offering a simple, scalable blueprint for evidence-based programming-language education.

Abstract

This paper documents a year-long experiment to "profile" the process of learning a programming language: gathering data to understand what makes a language hard to learn, and using that data to improve the learning process. We added interactive quizzes to The Rust Programming Language, the official textbook for learning Rust. Over 13 months, 62,526 readers answered questions 1,140,202 times. First, we analyze the trajectories of readers. We find that many readers drop-out of the book early when faced with difficult language concepts like Rust's ownership types. Second, we use classical test theory and item response theory to analyze the characteristics of quiz questions. We find that better questions are more conceptual in nature, such as asking why a program does not compile vs. whether a program compiles. Third, we performed 12 interventions into the book to help readers with difficult questions. We find that on average, interventions improved quiz scores on the targeted questions by +20%. Fourth, we show that our technique can likely generalize to languages with smaller user bases by simulating our statistical inferences on small N. These results demonstrate that quizzes are a simple and useful technique for understanding language learning at all scales.

Profiling Programming Language Learning

TL;DR

The study addresses how programmers learn a language and how to improve learning resources by embedding quizzes into an online textbook and analyzing the resulting data. It adopts a profiling approach, leveraging classical test theory and item response theory to model question difficulty and discrimination, and uses the learning profile to drive 12 targeted interventions that yield an average quiz-score improvement of +20% on the targeted questions. The results highlight that conceptual questions are more discriminative than syntactic ones, and that early chapters (e.g., ownership) are common drop-off points. The authors also demonstrate that their methodology can generalize to languages with smaller user bases through small-N simulations, offering a simple, scalable blueprint for evidence-based programming-language education.

Abstract

This paper documents a year-long experiment to "profile" the process of learning a programming language: gathering data to understand what makes a language hard to learn, and using that data to improve the learning process. We added interactive quizzes to The Rust Programming Language, the official textbook for learning Rust. Over 13 months, 62,526 readers answered questions 1,140,202 times. First, we analyze the trajectories of readers. We find that many readers drop-out of the book early when faced with difficult language concepts like Rust's ownership types. Second, we use classical test theory and item response theory to analyze the characteristics of quiz questions. We find that better questions are more conceptual in nature, such as asking why a program does not compile vs. whether a program compiles. Third, we performed 12 interventions into the book to help readers with difficult questions. We find that on average, interventions improved quiz scores on the targeted questions by +20%. Fourth, we show that our technique can likely generalize to languages with smaller user bases by simulating our statistical inferences on small N. These results demonstrate that quizzes are a simple and useful technique for understanding language learning at all scales.
Paper Structure (6 sections, 1 figure)

This paper contains 6 sections, 1 figure.

Figures (1)

  • Figure :