As programming education is a young discipline, pedagogical principles are not generally very well established. There are many grey areas as to what works and what doesn’t, or why something works, or — most importantly — how to improve teaching. As such, students often fall into a bimodal distribution in programming classes either learning programming quite easily, or really struggling. So far, there are many theories why this may be, and a good number of studies, but nobody really knows why this is.

Equally, for the design of educational tools and environments, it is not known which aspects have an effect and which don’t.

Many people have studied data about early programming interaction. Yet, getting this data can be hard. Often, researchers collect data (either interaction data from the computer system, or interview or observation data), and then evaluate it. If the class is small, it is sometimes hard to be sure how much the results can be generalised. Collecting larger data sets, however, is hard, because most teachers have access only to their own students.

In the BlueJ project, we are in a fairly unique position to be able to gather data. BlueJ has a large user community, and there is potential to make use of this to further our work. And not only BlueJ development specifically, but programming education research in general. This is how Project Blackbox was initiated.

The Blackbox idea is to collect data about the way beginners interact with BlueJ, and to make this data available to any interested research group to conduct their own studies with it. BlueJ is currently being downloaded over 2 million times a year, and has over 200,000 active users every month. Even if only 10% of users were to opt in to our project, we are still looking at hundreds of thousands of sessions per month, generating millions of interaction events.