Programming Pluralism: Using Learning Analytics to Detect Patterns in the Learning of Computer Programming

Paulo Blikstein*, Marcelo Worsley, Chris Piech, Mehran Sahami, Steven Cooper, Daphne Koller

*Corresponding author for this work

Research output: Contribution to journalArticlepeer-review

101 Scopus citations


New high-frequency, automated data collection and analysis algorithms could offer new insights into complex learning processes, especially for tasks in which students have opportunities to generate unique open-ended artifacts such as computer programs. These approaches should be particularly useful because the need for scalable project-based and student-centered learning is growing considerably. In this article, we present studies focused on how students learn computer programming, based on data drawn from 154,000 code snapshots of computer programs under development by approximately 370 students enrolled in an introductory undergraduate programming course. We use methods from machine learning to discover patterns in the data and try to predict final exam grades. We begin with a set of exploratory experiments that use fully automated techniques to investigate how much students change their programming behavior throughout all assignments in the course. The results show that students’ change in programming patterns is only weakly predictive of course performance. We subsequently hone in on 1 single assignment, trying to map students’ learning process and trajectories and automatically identify productive and unproductive (sink) states within these trajectories. Results show that our process-based metric has better predictive power for final exams than the midterm grades. We conclude with recommendations about the use of such methods for assessment, real-time feedback, and course improvement.

Original languageEnglish (US)
Pages (from-to)561-599
Number of pages39
JournalJournal of the Learning Sciences
Issue number4
StatePublished - Oct 2 2014

ASJC Scopus subject areas

  • Education
  • Developmental and Educational Psychology


Dive into the research topics of 'Programming Pluralism: Using Learning Analytics to Detect Patterns in the Learning of Computer Programming'. Together they form a unique fingerprint.

Cite this