Code Adventure

Learning Introductory Programming


The Problem

Introductory programming is one of the most fundamental concepts of computer science education, yet, it is well known that students have difficulties understanding basic programming concepts. As a result, students show poor performance with course assessments, which in turn, can lead to dropping out of their studies after their first experience with programming. Through the years, a number of approaches have been proposed to mend the situation, including effective approaches to teaching programming to novice learners. One approach which has been shown to be effective is the utilization of educational games which can motivate, stimulate interest and engage students to a greater extent than conventional approaches.

The Solution

CodeAdventure is an adventure game for learning introductory programming concepts. CodeAdventure adopts an integrated design approach that employs various mechanisms and techniques to achieve an immersive learning experience in a fun and engaging way. CodeAdventure incorporates different learning techniques that have been shown to be effective for students’ learning, such as providing hints and clues on how to solve puzzles, referencing instructional material, and immediate feedback on students’ performance.

The Game

In CodeAdventure the player assumes the role of the protagonist, exploring the game environment, and in the process, solving puzzles, and overcoming challenges in order to discover and acquire certain items. In particular, the game has an attractive storyline and offers a highly interactive 3D environment that allows the user to explore different levels, which are composed of multiple rooms, each one containing a diverse set of puzzles. Some examples of challenges used in the game include: solving multiple choice questions; turning wheel(s) to solve a puzzle; and rotating boxes with operators to validate a statement. Each room has specific objectives and includes various encyclopaedic interactive elements that convey the required knowledge to meet the objectives as well assessment methods that allow the user to reflect on his/her current status and progress. Moreover, achievements, rewards and secret items provide a feeling of challenge and increase overall engagement.

The Prototype

CodeAdventure was implemented with Unity 5.5 using C# scripts. It uses only unity libraries and in order to facilitate access into the scene, the majority of the developed scripts extend monoBehavior class so they can have access to the models in the scene. The monoBehavior class includes easy to use functions that facilitate seamless interaction in each frame. In order to allow for modularity, every object (e.g., lever, wheel) that interacts with the player has its own dedicated script. For the overlaid questions and information, we have utilized XML manipulation and IO libraries from the .NET framework. Finally, all room configurations, including all objects that reside inside rooms, are loaded from XML files in order to allow for maintainability and expandability. The current implementation includes level one: Introduction to the JAVA programming languages and covers the following topics: Data Types, Casting, Operators and their Precedence, Expressions, Conditional Statements, and Loop Structures.

Level Design

Code Adventure features 4 distinct levels representing different “subject areas” for introductory programming. In particular, there are four levels incorporated in the current version of the game: (i) Introduction to the JAVA language; (ii) Object-oriented Programming; (iii) Data Structures and Algorithms; and (iv) Advanced Topics. Each level is composed of multiple rooms that may have one or more doors each posing unique challenges (e.g., quizzes, puzzles) that must be met in order to allow to the user to continue to next one. Each room has a specific theme that represents one or more related programming topics (e.g., introduction to data types).


Nicou G., Andreou P., Polycarpou I. (2017). ”CodeAdventure: An Adventure Game for Computer Science Education", Human Computer Interaction, 9-14 July 2017, Vancouver, Canada.
Andreou P., Nicou G., Polycarpou I., Germanakos P., Paspalis N. (2017). ”CodeAdventure: Learning Introductory Programming", 22nd Annual Conference on Innovation and Technology in Computer Science Education (ITiCSE’17), 2017, Bologna, Italy.


George Nicou

Student, MSc Data Analytics, UCLan Cyprus
Data Types

Panayiotis Andreou

Assistant Professor, MSc Data Analytics, UCLan Cyprus

Irene Polycarpou

Professor of Technology and Innovation in Education, UCLan Cyprus
Operator Precedence

Nearchos Paspallis

Assistant Professor, Computing, UCLan Cyprus
Conditional Statements

Latest News


CodeAdventure was presented in a dedicated workshop for learning introductory programming to high school children. More info here


CodeAdventure was presented at the Human Computer Interaction Conference Education, in Vancouver, Canada, 2017. More info here


CodeAdventure (demo) was presented at the ACM Conference on Innovation and Technology in Computer Science Education, in Napoly, Italy, 2017. More info here