Teaching Software Engineering Principles to K-12 Students: A MOOC on Scratch

There are many many tools, books, games and apps to teach children programming. But in our view they focus way to much on getting the programs to work, and too little on teaching children about software engineering skills: programming is a good way, free of code smells, and easy to read.

To address this, we created a massive open online course* (a MOOC) in Dutch, to teach children Scratch, but also good programming practice. We offered the kids videos in which I explained programming, as well as code smells. For example, we explained the results of our previous study where we found that longer scripts inhibit understanding. Thanks to our amazing communication department that wrote a great press release, the course was covered extensively in the Dutch media, and this lead to 2.200 kids joining in the first round.

In addition to videos, we also provided the children with quizzes in which we tested their knowledge on both programming and software engineering concepts. With that, we could answer our main research question:

Are software engineering concepts harder to learn then programming concepts?

Long story short: Nope! We found that software engineering concepts in fact are easier to learn than programming concept, as indicated by this graph. The first 5 concepts are SE concepts, the following 7 are core programming.


Wh think this seems good news for programming educators, but of course we also want to explore if these kids produce better code in the future.

In addition to this main research question, we also explored:

Are there are age related differences in the learning of the concepts?

Here, we found something else: In general, many programming concepts get easier after 12! Interestingly enough, before 12, there is little difference. This might be related to the development levels of Piaget, which observe that abstract thinking occurs after the age of 11.

Finally, replicating other researchers earlier work on retention, we used machine learning to determine:

Can predict course completion based on profile info and first week activity?

There we find a number of factors influencing course completion. The most fun one, I think is that we find that kids doing the course with a parent present, are more likely to drop out. So parents: stay away from your kids while they are programming 🙂

Furthermore we find that submitting answers to all questionnaires and a high mean grade in the first week are positive factors, while the age and gender have no significant effect in successful course completion.

This blog post is just a short summary, you can read the whole paper as a preprint!

* This course is still available!