Predicting At-Risk Programming Students in Small Imbalanced Datasets using Synthetic Data
Daniel Flood, Matthew England, Beate Grawemeyer
TL;DR
The study targets predicting at-risk students in a small, imbalanced, single-module dataset by comparing baseline ML models to synthetic-data augmentation (SMOTE, ADASYN, CTGAN) on Codio-encoded formative-task features. Oversampling techniques significantly improve recall and F1 for the failing class, with SMOTE–LR delivering the strongest performance across time windows, while CTGAN shows limited utility due to mode collapse. The work demonstrates a viable path toward real-time risk prediction and timely interventions in programming education, laying groundwork for live validation and broader module generalization. It contributes to practical workflows that help educators detect disengagement early and tailor formative tasks to improve student success.
Abstract
This study is part of a larger project focused on measuring, understanding, and improving student engagement in programming education. We investigate whether synthetic data generation can help identify at-risk students earlier in a small, imbalanced dataset from an introductory programming module. The analysis used anonymised records from 379 students, with 15\% marked as failing, and applied several machine learning algorithms. The first experiments showed poor recall for the failing group. However, using synthetic data generation methods led to a significant improvement in performance. Our results suggest that machine learning can help identify at-risk students early in programming courses when combined with synthetic data. This research lays the groundwork for validating and using these models with live student cohorts in the future, to allow for timely and effective interventions that can improve student outcomes. It also includes feature importance analysis to refine formative tasks. Overall, this study contributes to developing practical workflows that help detect disengagement early and improve student success in programming education.
