| English | Português |
Only about half of the Open University’s online students finish their module with a pass. This project asks who doesn’t complete, when they drop out, and how early an early-warning model can flag them, using the Open University Learning Analytics Dataset (32,593 enrolments, 7 modules, 2013–2014, 10.6 million click records).
Data: OULAD (Kuzilek, Hlosta & Zdrahal, 2017), via the UCI repository.
Plain-language summary: open the live dashboard (source), a one-page overview for non-technical readers in English and Portuguese.
More projects: Portuguese education data · Tox21 toxicity prediction · Why clinical trials stop early
Many students disengage silently. Among students still enrolled at week 8 who didn’t log in that week, 47% go on to fail but only 21% formally withdraw. A model that predicts only withdrawal misses them.

Behaviour beats background. Background alone predicts poorly (ROC-AUC 0.63). Adding online activity and assessments raises this to 0.76 at week 4 and 0.80 at week 8, when the model is trained on 2013 courses and tested on 2014.

src/build_dataset.py downloads OULAD; builds students, daily clicks per activity type, and assessment tables
src/features.py snapshot(day): features and targets for every student still enrolled on a given day
src/style.py shared chart style
notebooks/01_explore_oulad.ipynb outcomes, background, withdrawal timing, engagement curves, silent disengagement
notebooks/02_early_warning.ipynb target choice, AUC over time, tutor view, feature importance, unseen course, fairness
figures/ exported charts
course-completion-at-a-glance.html plain-language dashboard
pip install -r requirements.txt
python src/build_dataset.py # downloads 47 MB, about a minute
jupyter notebook notebooks/