Flip: A concurrent bi-modal programming language for computational thinking

Lead Research Organisation: University of Sussex
Department Name: Sch of Engineering and Informatics

Abstract

The overall aim of the Flip project is to explore a novel way of helping young people learn how to program, while at the same time fostering their computational thinking skills. The concept of computational thinking skills is fairly recent. Although it comes from computer science, it describes a set of skills that are used in everyday life: making and carrying out a plan; sorting into categories; thinking in terms of the abstract rather than the concrete, etc. The importance of computational thinking is increasing, and it is recognised as an important part of many jobs, vocations and academic disciplines. Being able to think like a computer scientist has allowed for new, and sometimes revolutionary, advances in fields as diverse as law, biology, and the arts.As important as computational thinking skills may be, little research has been carried out on how to support them. Furthermore, the difficulties that many people experience when learning to program has led to a recent move to teach computational thinking without teaching programming, and it's not yet clear whether this is a positive move or not.The goal of the Flip project is to bring together programming and computational thinking within the context of game creation. Previous research suggests that young people find the creation of games to be highly motivating. Young people willingly engage in game creation as a leisure activity, and will spend many hours acquiring complex skills, including interactive storytelling, creating compelling game play sequences, and the creation and manipulation of multiple forms of media, including graphics and sound. However, one of the activities young people find most difficult in commercial game creation environments is the programming that is required in order to make their games interactive. The programming languages included in such environments were not designed for young people, nor were they designed to support people more generally as they learn to program. Therefore, we propose to design a programming language which will allow young people to create simple programs in two ways: using textual input, which is similar to the way they naturally express their story ideas when talking about them to others, and using graphical input, which includes the use of icons and colour to highlight the computational structures within the program. The language will be integrated within a commercial game creation toolkit which allows young people to create sophisticated role-playing games with a professional feel, which is in itself very motivating.The first stage of the project will be to work with a group of young people to determine how they naturally express their story ideas when creating a game. We will use this information in designing the textual component of the language, and will create successively sophisticated versions of the language, getting input from our target users at each stage. We will also work with these users to develop the graphical component of the language, and get their input on the ease of use of various graphical systems in helping them as they learn to program and develop computational thinking skills.Following this, we will look at ways of measuring computational thinking skills. Although there has been much talk of what computational skills are, there has been less discussion on how to measure these skills, and work is needed in this area to develop effective assessments, which will be of use both to this project, and more broadly.Finally, we will test the language in an empirical study designed to determine whether the language does in fact help young people to develop firstly, their programming skills and secondly, the associated higher level computational thinking skills. Additional questions we would like to answer are whether the graphical and textual components are used in different ways, and/or for different tasks.
 
Description We were able to design a programming language (Flip) for use by young people that allows them to create their own 3D role playing games. The language is unique in that it is similar to blocks based languages such as Scratch, however it can automatically translate any blocks-based program (or even snippet of code) into its natural language equivalent. This feature was particularly effective in helping young people to identify errors in their programs, and also helped support collaborative work with other learners. We found that embedding the learning of programming in a game creation environment was highly motivating. Furthermore, given that role-playing games have a significant narrative component, we found that girls tended to create more complex stories in their games, which in turn required more complex computer programs in order for them to work, thus leading to a positive gender difference. Finally, we found that the use of Flip increased young people's knowledge and understanding of computation, and that this understanding transferred to other situations in which Flip was not being used.
Exploitation Route The project has implications for the teaching of programming, particularly in terms of how to embed learning in a motivating context, and how to address gender differences.
The project also has implications for the design of programming environments for novices: in particular, a recent paper has discussed how best to use natural language within programming environments so as to scaffold learning.
Sectors Digital/Communication/Information Technologies (including Software),Education,Leisure Activities, including Sports, Recreation and Tourism