Designing a New Video Game App as an aid for Introduction to Programming classes that use C Programming Language

This paper describes the use and development of a mobile application as an aid for an introduction to programming class in C, for first year engineering students. One of the biggest problems in teaching programming, and in particular in C is the concept of memory allocation and pointers. To help visualizing these concepts we developed an application in the form of a video game that works on both Android and iOS devices. The paper is inspired Digital Game Based Learning (DGBL) pedagogical theory, studying the kind of learning that happens when playing computer and video games, how to use this medium as a tool for learning, and how to design games for learning. Research has shown benefits in using mobile applications to better engage students and help them learn at their own pace and level. We did some preliminary performance testing on students from two different groups. One group of computer engineering students and another one of non-engineering majors, both groups learning to program, with no previous knowledge of programming, to evaluate the benefits of the application. The results of this test show that there is an improvement in the students understanding in C, and we also noted a very positive attitude of students toward using something as familiar to them as mobile phones to help them understand the material.


Introduction
Research has shown benefits in using mobile applications to better engage students and help them learn at their own pace and level.The goal of the project is to integrate tablets and mobile technologies into computer engineering classrooms.The challenge is to maintain the curriculum -what is being learned-while enhancing the learning experience, active participation, prompt feedback and challenging but achievable goals.This paper explores how tablets can be successfully integrated to create a highly innovative, state of the art environment for teaching programming to engineering students.
Teaching C as the first programming language is a challenge.To the usual difficulties of learning programming for the first time (requiring a slightly different way of thinking) we need to add that C is one of the most difficult programming languages to learn, requiring the mastery of several new and unique to C concepts and has a slow learning curve, meaning that before writing the first program students have to learn and understand several concepts (types of variables, functions, memory allocation of variables , etc) plus the syntax.The problem is that if students don't learn these concepts first, than they will struggle for the rest of the course, increasing frustration and drop off.To help with this stage we have developed an application for mobile devices that will aid in the visualization of memory allocation in C/C++, and will help to explain C concepts giving students the possibility of practicing over and over until they master this principles, and at the same time provide instant feedback to the class instructor allowing for extra homework and recommendations to individual students.Previous work, Belloc(2009) studies the incorporation of tabletPC on an introductory year in computer engineering class using already available technology to make class presentations for a digital logic/computer architecture class more engaging.But tabletPC are a much smaller market now than mobile phone and tablets, and Classroom Presenter is not available yet for Android or iOS.Liang (2011) Studied the use of tablets on a k12 environment and conclude, that introducing new technologies without support for training and software has no real advantage.Callaghan (2013), Jones (2011) and Coller (2011) Use video games to help teach electrical engineering, finance, and mechanical engineering concepts respectively, showing all of them really promising results.
We decided to create our own application to teach C programming for the following reasons: 1. Current classes are generally very static, based on slides and/or handwritten notes on the board.3. Instructors don't get immediate feedback from students about their understanding of the lecture.

Students cannot
4. Visualizing concepts and being able to touch/design memory help students understand C/C++. 5. General acceptance in the educational community that using video games and mobile devices help students to remain engaged in class.
We decided to implement an application for mobile devices for the following reasons: 1.One of the most important differences between using a mobile device compared vs. a desktop computer , from the classroom point of view, is that users are "able to touch" the screen and move things around.
2. Mobile devices are ubiquitous, almost all students have a smart phone or a tablet.Allowing students to practice anywhere.
3. Mobile devices are easy to bring to class and setup if needed.
The main contribution of this paper is the development of a mobile application to help in teaching programming.To the best of the author's knowledge there is no other application other than tutorials out there on the market that performs the same task as the one presented in this article.The aim is to reinforce programming concepts not to substitute a compiler.To really learn programming students still need to "program", the application will only be used at the initial learning stage.
The article is organized as follows.Section 2 gives the description and overview of previous work, section 3 describes the application in detail, section 4 presents the results of using the application, and section 4 presents the conclusions.

Description
A typical introduction to programming class consists on the following topics: For difficult concepts like pointers we recommend students to watch videos .Videos can be played again and again until the concept is understood.Several video options were given and after a poll the preferred one was Buckland(2008) a 55 minute video with exhaustive examples.We did get also good feedback from students about the web, Sims(2014), for their online compiler although right now can only be used to program in JavaScript and Python.Therefore we decided to create an application combining in one place the three main principles that are consistently liked by students: 1.Ability to watch videos about programming concepts that are deep and present extensive examples.
2.Possibility of having code on the screen that can be easily changed and visualize the effect of the change.
3. Having the above points (1, and 2) in a mobile device so students can play with concepts at their convenience and is also easy to carry around.
To incorporate the previous elements the application contains a screen for each one of the elements on table I, this elements are displayed on the main application screen.Each screen is customized for the specific concept, but there are some common elements to all of them.

Pantoja, M.
In part A we describe the common components.Part B describes the peculiarities of each screen.

Common Screen Elements.
Each one of the screens has three buttons (Fig. 1):

Video
Currently the video button takes the student to a YouTube video.In the future we plan to tape our own videos, we are still undecided if we should tape the professor or actually students.

Slides
This option allows student to download and view class slides related to the topic directly on their device.

Quiz
Each topic has 10 quiz questions; students can retake the quiz as many times as they want although there is a 10 second mandatory delay between submitted answers.If the student answers all the questions correctly a checkmark appears next to the topic name on main screen.
The questions for the quizzes are stored on a database; the database is stored on the cloud using Google App Engine this way the instructor can add/delete questions and the upgrade will automatically show on the students devices without the need to upgrade/reload the application.This option also allows the instructor to personalize the quiz to students by assigning specific or extra questions.Designing a New Video Game App as an aid for Introduction to Programming classes

Results
Before deploying the application on a full university class we did perform testing in a small and controlled sample of students.The students that used the application got, on average 10% higher score on the quiz for memory allocation and showed on average more interest in learning more C than students with just lecture slides and no mobile application.The test administered to students was based on questions for pointers used on previous class exams.
Students that knew already how to program in other programming language did not get too much value from the application except for the pointer screens, but this is expected since the application was just mean to be used on the initial stages of learning how to program.
Based on the positive feedback we are planing in using the application on the first three weeks of the "Introduction to programming" class.

Conclusion
The overall experience of using tablets on an introductory programming class has been positive.If the users are beginners they do really enjoy the idea of the tablet as an aid to explain concepts.They still find some of the concepts difficult to understand but they still prefer expending time using the application just reading more examples from a book.But once the students achieve a certain level of expertise they find the application "funny" or "cute" but not very useful.So this application should be used for what it is, for teaching C to people that are beginners programmers.Another important point is that the tool should not be consider as a substitute for a C compiler , the tool is just meant to teach concepts and should always be complemented with programming assignments that will be of course implemented using a text editor/compiler environment.
interact with slides.Example: Change values of variables, Increase/decrease loop variables, Assign different addresses to pointers, etc Pantoja, M.