Serious Thinking
Gamification to learn how to program
by Ricardo Queirós*
I have been a University computer programming teacher for fifteen years now. As it is widely known, it is a complex domain that offers many challenges related to the teaching-learning process, namely: the different skill levels and learning abilities of the students; the lack of resources and educational environments for the teaching-learning process, the complex nature of the domain (for example, problem-solving, abstraction); and the consequent difficulty to motivate students into learning computer programming. Given these difficulties, which are directly related with my everyday life as a teacher, I made the decision to invest my research time, in this last decade, into finding solutions that could effectively solve them.
For most of the times, learning how to program is solving programming exercises. However, the burden of having to manually evaluate them weighs too much on teachers. In this regard, automatic evaluation systems that can produce timely and rich feedback for students are used in order to enable them to progress in their learning process. A great example of this is the Mooshak System, developed by Professor José Paulo Leal (Faculty of Sciences). However, having an automated system with automatic evaluation features is not enough. In order to retain the interest, motivation and involvement of the students and even to entice their competitive spirit, in the last few years new trends have been emerging, like the use of gamification.
Gamification consists on the use of game design elements in settings different from those of games. One of the settings with the most potential is education. This way, gamification emerges as an effective means to increase the involvement of the students and to inspire them to continue learning.
In order to better understand how others were using gamification in the learning of computer programming, in 2016 I published the book “Gamification-Based E-Learning Strategies for Computer Programming Education” [1], which gathers evidences from researchers from all over the world about experiences, trends, methodologies and systems related to the use of gamification in the learning of computer programming. The results were unanimous: the automation of this entire process, combined in a balanced way with gamification elements, are a valuable input for the learning process. On the other hand, the excessive use of gamification elements (for example, leaderboards) revealed to be detrimental for the majority of the students, particularly for those that were placed in the last positions of the rankings.
At the same time, in the last few years we have seen a high demand for qualified programmers in the EU countries. One of the greatest obstacles to satisfy this demand is the difficulty to promote a more effective teaching-learning process of computer programming. Personally, I believe that progress in this field can be achieved through the combined use: automated evaluation - providing rich and fast feedback to students based on static and dynamic analysis of the produced code; gamification - offering an additional motivation for students to enhance their learning effort.
The availability of this programming courses based on this combined approach can not only improve the efficiency in the learning of programming but also increase the number of people that feel capable to effectively learn it. However, until this day, there are no available open collections of gamified programming exercises, no learning environment for open interactive programming that supports such exercises and also no open standard for the representation of those exercises, in order for them to be developed in different educational institutions and shared between them. At the same time, online services capable of mimicking gamification elements that run between several educational environments are scarce (for example, thematic rankings, achievements, reward systems, automatic sequencing and recommendation of exercises, generation of tips, coaching bots, etc.).
This is how Erasmus+ project named "Framework for Gamified Programming Education" [2] started, which encompasses researchers from four countries: The Uniwersytet Szczeciński (Poland), the Aalborg Universitet (Denmark), the Universita Degli Studi Di Napoli Parthenope (Italy) and INESC TEC (Portugal). The goal of the project is to create a gamification framework in order to ease the teaching-learning process of computer programming.
The project is conceived to provide several results: two specification documents (a gamification scheme and a format specification description of gamified programming exercises) and two types of software (tools for authorship and conversion of exercises and an interactive learning environment composed of gamified courses). All of the project’s results will be available for free on the internet in the form of open-source licenses. The expected impact of the project is an improvement in the efficiency of programming education.
The project will try to produce whatever it is necessary and to reuse/consume quality services found in the cloud. In that regard, special attention will be given to the new trends in cloud gamification. Related to this theme, a careful reading on the following events is advised:
- Special session entitled “Cloud Gamification” (integrated on the ICIST Conference) [3]
- Special edition entitled “Cloud Gamification 2019” (Information - MDPI scientific journal) [4]
[2] - http://fgpe.usz.edu.pl/
[3] - https://icist.ktu.edu/wp-content/uploads/sites/317/2018/10/2nd_CFP_2019_CGam.pdf
[4] - https://www.mdpi.com/journal/information/special_issues/Cloud_Gamification_2019
*Collaborator of the Centre for Research in Advanced Computing Systems (CRACS)