think it should be possible for a child of eight or nine
years old, mature enough to think abstractly, to learn
concurrency concepts.
2 RELATED WORK
A number of applications for teaching sequential pro-
gramming concepts have been developed. The appli-
cations most related to our work are those that use a
game-oriented approach and a visual syntax indepen-
dent of programming language. Blockly Games and
Lightbot are examples of such games and served as
inspiration for our game (Google, 2015; Lightbot).
Blockly Games is a set of games that has been
developed for children to learn sequential program-
ming concepts such as conditional and control-flow
statements (Google, 2015). Users are provided with a
game environment that contains objects and Google’s
Blockly editor, which contains interlocking blocks
(Google, 2016). Users are given a problem to solve
or a task such as: move the turtle object a number
of steps forward to reach the patch-of-grass object.
The blocks represent coding concepts and, for a se-
quence of blocks, the Blockly library can return syn-
tactically correct code in the language chosen from
the supported list of languages.
Lightbot provides, similar to Blockly Games, a
game environment with an avatar and an editor with
action blocks (which represent conditional or control-
flow statements) that can be placed in sequence to ma-
nipulate the avatar (Lightbot). It provides a sequence
of predesigned puzzles to solve, which increases in
difficulty and is divided into groups where each group
starts with the introduction of a new block (code con-
cept). Each puzzle only requires the use of blocks that
have been introduced in a previous group or at the
start of the current group. The simplicity of Light-
bot’s syntax places even more emphases on solving
problems using coding concepts (without having to
learn the syntax of a programming language) than the
interlocking block-based games.
There are also non-game-oriented programming
tools available that provide a block-based syntax sim-
ilar to Blockly Games, such as Scratch (MIT), App
Inventor for Android devices (MIT, 2015), and Hop-
scotch (HopScotch, 2016). These tools do not give
a user tasks to solve, but provide the user with an
empty execution environment, where they can create
their own programs by placing objects in the execu-
tion environment and sequences of blocks in the ed-
itor to control when and how to add or move objects
or when to play sound clips, for example.
On the other hand, games that require users to
write code in the syntax of a real programming lan-
guages also exist. Code Combat, for example, gives
users problems to solve or a task to complete in a
game setting, but requires the user to write the se-
quence of actions for the avatar to execute, in the
syntax of Python, JavaScript, HTML, CSS, jQuery,
or Bootstrap (CodeCombat, 2016).
There are three game-oriented approaches, de-
signed to teach concurrency concepts, that are related
to our work. The first, Deadlock Empire, is the only
game-oriented application for teaching concurrency
concepts that we could find available to play online
(Hude
ˇ
cek and Pokorn
´
y, 2016). The Deadlock Em-
pire requires a user to complete a sequence of tuto-
rials/challenges; in each the player is presented with
two threads and the objective of the player is to sched-
ule the instructions of the threads such that the code
breaks; revealing, for example, a race condition or a
deadlock. This game is particular good at showing the
effects of nondeterminism and the errors that can re-
sult when an incorrect execution order is chosen, but
it is programming language specific: one has to be
able to read code similar to the C syntax.
The second is a series of activities that have been
designed to help students build an intuition about syn-
chronisation by managing ”railway semaphores” us-
ing an open source train simulation game (OpenTDD,
2014). It was designed to be a lab project; the students
download the OpenTDD simulator as well as a set
of three activities, which include OpenTDD scenario
files and game files and once they have installed the
required software, it typically takes them less than an
hour to complete the activities (Marmorstein, 2015).
The last is a proposal for an educational game that
could be used to teach concurrency concepts. A user
would be shown a rectangular grid with boxes, ob-
stacles, markers, and robots and would be required
to program the robots to move all the boxes to their
corresponding markers. An initial version with al-
phabet characters has apparently been implemented,
but the design is not complete and, as discussed in
the Conclusion, the authors still need to investigate
whether it would be possible to teach all the con-
currency concepts using their game (Akimoto and
de Cheng, 2003).
In the next section we’ll discuss the concepts that
a programmer needs to understand to develop concur-
rent programs and in the following section we discuss
two games that have been developed to teach these
concepts. The games require the players to solve puz-
zles using a simple set of blocks, independent of a
programming language, to specify the sequence of ac-
tions the avatars in the game should execute. When
the avatars execute their actions, the player has visual
SGoCSL 2017 - Special Session on Serious Games on Computer Science Learning
598