<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Experience in Teaching Object-Oriented Programming and Advanced Topics of Programming through the Development of a Video Game Project</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Universidad Nacional de San Agustín de Arequipa</institution>
          ,
          <addr-line>Calle Santa Catalina No117 Arequipa</addr-line>
          ,
          <country country="PE">Perú</country>
        </aff>
      </contrib-group>
      <fpage>0000</fpage>
      <lpage>0001</lpage>
      <abstract>
        <p>This article describes an experience to teach students the fundamentals of object-oriented programming and other advanced programming topics, through the development of a video game, generating a motivating environment for learning them. The object-oriented paradigm and other advanced topics generate important challenges in its teaching that are not easy to deal with, even with a basic knowledge of computer programming. We demonstrate that a teaching supported by the development of a video game project to teach object-oriented programming concepts and other advanced topics is more effective and motivating. Here we describe our experience in the development of this project, to introduce such programming concepts and take into consideration the learning styles of post-millennials or Generation Z. We found that this approach taking into account the styles of visual and kinesthetic learning to teach these topics is more effective and motivating than classic teaching approach.</p>
      </abstract>
      <kwd-group>
        <kwd>Object-oriented Programming</kwd>
        <kwd>Advanced Topics of Programming</kwd>
        <kwd>Motivation in Teaching</kwd>
        <kwd>Video Games in Learning</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        There are several experiences that show that visual and ludic nature of video games
contributes to improving the teaching-learning process of computer programming
[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ],[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ],[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], allowing students to understand abstract concepts that would otherwise be
more complex to master.
      </p>
      <p>
        Fundamentals of Programming 2 (FP2), is a fundamental course of Curriculum 2013
and Curriculum 2017 [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] of the Professional School of Systems Engineering of the
Universidad Nacional de San Agustín de Arequipa - Perú, it is centered in teaching of
object-oriented programming concepts and other advanced topics, becoming the second
programming course in these curricular plans, belongs to the second semester and uses
Java as programming language.
      </p>
      <p>Teaching the concepts of object-oriented programming and other advanced topics
always had a high degree of complexity, generating a high rate of students who failed
the course.</p>
      <p>Copyright c 2020 for this paper by its authors. Use permitted under Creative Commons</p>
      <p>
        In 2018, techniques based on ludic environments began to be used to teach some
basic concepts of object-oriented programming [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], achieving good results, creating a
motivating environment for students and awakening in them the desire to master and
deepen that knowledge.
      </p>
      <p>It should be considered that the first year students of the professional school who
follow the course belong to the so-called Generation Z or post-millennials, pure digital
natives, who use technology and electronic devices as a fundamental part of their daily
life since they have memory.</p>
      <p>Teaching strategies to use with them must be appropriate to their learning style and
that is why the development of a video game project was used to achieve a more
effective teaching-learning process.</p>
      <p>Among the technology they use are video games, a situation that is confirmed in a
survey carried out among students for 7 years, the results to the question "do you use
video games?" are shown in Table 1.</p>
      <p>
        In addition, considering the profile of the professional school graduates, which
indicates that the graduate will be mainly prepared for the development of quality software,
the curriculum offers 3 specializations: Business Information Systems, Systems for
Mobile Platforms, and Video Games [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>During the last years and as part of the same survey, students are asked "what kind
of software is most interested in developing in their professional life?", the results are
seen in Table 2.</p>
      <p>As can be seen, the interest is mainly guided to the development of video games, so
almost all of the students are users of them and more than half have the intention of
directing their professional training to development video games. This generates an
intrinsic motivation that will contribute to the mastery of the knowledge to learn and
apply in this course.</p>
      <p>In this article we present our experience in teaching the fundamental concepts of
object-oriented programming and other advanced topics through the development of a
strategy video game module, during the development of which the acquired knowledge
was applied and consolidated, and students were motivated to more effective learning.</p>
      <p>The rest of the article is organized as follows. Section 2 describes the Fundamentals
of Programming 2 course. Section 3 shows the learning styles of students in our
particular environment. Section 4 shows the design of the video game development project
proposal using Java. Section 5 shows the results obtained from students' academic
performance, comparing performance when we use the traditional approach to teaching
applied in previous years (2013 – 2017) with a ludic approach to teaching applied in
2018 and contrasting it with a ludic approach and framed in the development of a video
game project for 2019. Finally, our conclusions are presented.
2
2.1</p>
    </sec>
    <sec id="sec-2">
      <title>Fundamentals of Programming 2 Course</title>
      <sec id="sec-2-1">
        <title>Overview</title>
        <p>It is constituted in the second programming course in our 2013 and 2017 curriculums,
is developed in the second semester, the course lasts seventeen weeks with eight hours
per week (two theoretical hours, two practical hours and four laboratory hours) and uses
the programming language Java.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Prior Knowledge</title>
        <p>
          Students who follow this course must have previously approved their prerequisite
course: Fundamentals of Programming 1 (FP1), where they learn to program and seek
to achieve the specific competencies described in [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ].
2.3
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>Competencies</title>
        <p>
          The 2013 and 2017 curriculums were developed taking into account the student
outcomes indicated by the Accreditation Board for Engineering and Technology (ABET)
[
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. Where the importance of professional and awareness skills is highlighted, in
addition to the development of technical skills to achieve excellence in the training of
engineers. Table 3 and Table 4 show the general and specific competencies of FP2.
        </p>
        <p>Exams. Purely practical where students solve problems applying the theoretical
knowledge acquired. They complete three exams throughout the course.
Continuous Assessment. Constituted by individual or group practices, homework,
participation in problem-solving activities in the classroom, research work, reading of
articles and laboratory assessment (practices and video game project). There are three
continuous assessments throughout the course. The final grade is according to Table 5.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Student Learning Style</title>
      <p>First year students are part of the so-called Generation Z or post-millennials, individuals
who were born during the first decade of the new millennium, and whose philosophy
of life and way of learning differ from previous generations.</p>
      <p>
        Applying teaching strategies of the twentieth century to these students is a serious
mistake, they no longer tolerate two hours of a master class focused purely on the
teacher, the auditory is no longer the main thing for them, instead the visual and
kinesthetic is predominant. In [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] we show a study related to the results obtained on the
predominant learning styles in our current students.
      </p>
      <p>
        Thus, it can be synthesized that current students construct their concepts based on
digital objects, they quickly absorb information from images and videos, they acquire
information simultaneously from various sources (multitasking behavior), expect
immediate feedback, collaborative work stimulates them, have short attention spans and
value practical activities more than those purely theoretical activities [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
4
      </p>
    </sec>
    <sec id="sec-4">
      <title>Proposal of the Video Game Project Activities</title>
      <p>The activities for the development of the video game project are carried out in the
laboratory weekly (two hours for the development of the activity and two hours for the
continuous review of the progress of the project). Teams of two members are formed
based on affinity, with the option to consult with the members of their team and other
teams as well, they are allowed to use the internet, smartphones and other devices,
consult with all the sources they want, such as physical and digital books, notes, etc. (all
framed in an environment of respect and discipline).</p>
      <p>Although these activities take place during class hours, they are also complemented
by students outside of that schedule. Almost all students indicate that they meet at other
times to continue carrying out the activities of the proposed project and they do so on
their own initiative.</p>
      <p>Each team has a name established by its members and the video game project is also
named by themselves.</p>
      <p>
        Weekly reviews are carried out where students show the performed activities in the
last week and the activities to be carried out for the next week, creating a log of such
activities. This generates immediate feedback and much needed project follow-up given
their understandable inexperience when working on projects. The entire project is
carried out in an agile environment, introducing Software Engineering practices and
applying HCI principles, thus allowing students to experience software development in
their first year [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>The final presentation takes place in week 16 and 17, where the developed video
game is exposed in front of all the other development teams, the course teacher, other
teachers and guest gamers (students from other years, teachers or known gamers). They
are assigned an exhibition schedule and a specific time for the presentation (ten
minutes) and for questions from the public (five minutes), this is recommended but time
can be adjusted depending on the number of teams.</p>
      <p>Although the grade for the developed project is part of the Continuous Assessment
component, what has been learned throughout this activity constitutes milestones for
the whole course.</p>
      <p>Initially, it is explained to students that they will learn many of the concepts of
object-oriented programming and advanced programming topics through the
implementation of a module of a basic strategy video game. Their attention is captured, the
motivation is automatic given the surprise generated and the expectation of creating their
own video game when they are just in the second semester.</p>
      <p>A general framework is presented to them and it is explained about the plot of the
video game, thus they begin to relate it to some video games that they currently use or
used at some time, awakening their imagination.</p>
      <p>The proposed plot consists of the fact that the module of the strategy videogame to
be developed is framed in the Middle Ages where the nations that currently exist began
to be forged, such as England, France, Spain, Germany, etc., those that were born from
medieval kingdoms and empires. The module to be developed has to do with the battle
part, which is called the tactical aspect of a strategy game. The strategic aspect remains
for future experiences and more advanced projects. Battles are fought between 2 armies.
Each army is made up of soldiers. Such soldiers have certain characteristics and
behaviors that must be implemented. The decision of the winner of the battle must not be
arbitrary, it must be based on some metric that the students must propose, so the
simplest metric would be "number of army soldiers", which would be fair if all the soldiers
were equal, but it would not be the best metric since as the project progresses, different
types of soldiers appear, some better than others.
4.1</p>
      <sec id="sec-4-1">
        <title>Proposed Activities for Week 1</title>
        <p>Topic. Standard Array.</p>
        <p>Objective. Understand and appreciate the use of standard arrays in problem solving.
Statement. Before simulating a battle between two armies, we must consider that each
army is composed of soldiers. Given your experience with strategy video games, what
soldier data is important? (consider that each soldier will have to be identified
individually). Using brainstorming, students indicate that we need to know their name, life
level, speed, etc.</p>
        <p>Activity 1. Write a program where 5 soldiers are created considering only their name.
Input the data and then display it.</p>
        <p>Restriction: it will be carried out considering only the knowledge we have of FP1
and without using standard arrays, using only simple variables.</p>
        <p>Solution: they created 5 variables of String data type, entered the names and
displayed.</p>
        <p>Reflection: what if the army consisted of 10, 100 or 1000 soldiers?</p>
        <p>It would require more code, creating a very extensive and unmanageable program.
Activity 2. Write a program where 5 soldiers are created considering their name and
life level. Input the data and then display it.</p>
        <p>Restriction: it will be done considering only the knowledge of FP1.</p>
        <p>Solution: they created 5 variables of String data type and another 5 integer variables,
entered the name and life level of each one and then displayed them.</p>
        <p>Reflection: What if the army consisted of 10, 100 or 1000 soldiers?</p>
        <p>It would require more code, creating a long and even unmanageable program.
Activity 3. Write a program where 5 soldiers are created considering only their name.
Enter the data and then display it.</p>
        <p>Restriction: apply standard arrays.</p>
        <p>Solution: they created one array of String data type and size for 5 elements, entered
the name of each one, and then displayed them.</p>
        <p>Comment: more compact and maintainable code.</p>
        <p>Reflection: what if the army consisted of 10, 100 or 1000 soldiers?</p>
        <p>No problem, only the array size would have to be changed.</p>
        <p>Activity 4. Write a program where 5 soldiers are created considering their name and
life level. Enter the data and then display it.</p>
        <p>Restriction: apply standard arrays.</p>
        <p>Solution: they created 1 array of String data type and size for 5 elements, and another
array of integer type and size 5, entered the name and life level of each one, and then
displayed them.</p>
        <p>Reflection: what if the army consisted of 10, 100 or 1000 soldiers?
No problem, only the arrays size would have to be changed.</p>
        <p>Activity 5. Write a program where 2 armies are created, each one with a random
number of soldiers between 1 and 5, considering only their name. The data is automatically
initialized with names such as Soldier0, Soldier1, etc. After creating the 2 armies you
must show the data of all the soldiers of both armies and indicate which army would be
the winner of the battle.</p>
        <p>Restriction: apply standard arrays and methods to initialize armies, show armies, and
show the winning army. The metric to apply to indicate the winner is the largest number
of soldiers in each army, there may be ties.</p>
        <p>Solution: students created 2 arrays of String data type and random size, the names
of each soldier were generated, then they showed soldier’s data and next the winner
was shown.</p>
        <p>Comment: more compact and maintainable code.</p>
        <p>Deliverable: Video Game v1.0
4.2</p>
      </sec>
      <sec id="sec-4-2">
        <title>Summary of Proposed Activities from Week 2 to Week 17</title>
        <p>Due to space constraints, Table 6 shows a summary of the proposed activities.
Week 2 - Topic: ArrayList
Objective: to understand and appreciate the use of ArrayList in troubleshooting as a more
flexible alternative to applying standard arrays.</p>
        <p>Statement: The solution must be given to Activity 5 from the previous week, but using the
ArrayList as the data structure.</p>
        <p>Week 3 - Topic: HashMap
Objective: to understand and appreciate the use of HashMap in troubleshooting as a more
flexible alternative to applying standard arrays and ArrayList.</p>
        <p>Statement: a solution must be given to Activity 1 from the previous week, but applying
HashMap as data structure.</p>
        <p>Week 4 - Topic: Fundamentals of Object-Oriented Programming 1
Objective: understand and value the creation of classes in solving complex problems.
Statement: For the video game, create the fundamental classes with their attributes and
methods. Create your UML class diagram and corresponding Java application.</p>
        <p>Week 5 - Topic: Fundamentals of Object-Oriented Programming 2
Objective: understand and value the creation of classes in solving complex problems.
Statement: Create base classes together with their attributes and methods (including
constructors, accessor and mutator methods). Create your UML class diagram and corresponding Java
application.</p>
        <p>Week 6 - Topic: Presentation of the video game project progress
Objective: to publicize the progress made to this point by the team.</p>
        <p>Comment: the solutions proposed by each team vary, although each team started from a
common base, takes the path it considers correct and justifies their decisions.</p>
        <p>Week 7 - Topic: Aggregation and Composition Mechanisms
Objective: understand, evaluate and compare the mechanisms of aggregation and composition.
Statement: now that we have the Soldier class, we can create an army composed of soldiers by
applying the mechanism called "composition" or "aggregation" of classes.</p>
        <p>Week 8 - Topic: Inheritance Mechanism 1
Objective: understand and assess the class inheritance mechanism.
Statement: in history, armies were composed of different types of soldiers, who had
similarities, but also particularities. Apply inheritance to take advantage of it.</p>
        <p>Week 9 - Topic: Inheritance Mechanism 2
Objective: apply the class inheritance mechanism for code reuse.
Statement: In addition to the three previously created subclasses, the Soldier superclass can
serve as the basis for creating other new types of subclasses. Create new subclasses.
Week 10 - Topic: Inheritance and Polymorphism
Objective: understand and apply the polymorphism mechanism and relate it to inheritance.
Statement: it is possible to create a standard array, ArrayList or HashMap data structure that
contains elements that are of different types, it applies inheritance and polymorphism.
Week 11 - Topic: Advanced Topics in Object Orientation
Objective: understand and value advanced mechanisms of object orientation, such as class
members, abstract classes and interface classes.</p>
        <p>Statement: You can improve your written code by applying advanced mechanisms such as
class members (static), abstract classes and interface classes.</p>
        <p>Week 12 - Topic: Graphical User Interfaces 1
Objective: to understand and value the use of graphical user interfaces to create more attractive
visual programs, applying HCI principles.</p>
        <p>Statement: a version of the video game must be created, but in a graphical environment.
Week 13 - Topic: Graphical User Interfaces 2
Objective: to understand and assess the use of graphical user interfaces to create more
attractive visual programs using layouts and HCI principles.</p>
        <p>Statement: a version of the video game must be created in a graphical environment with basic
components, but also using layouts and other components.</p>
        <p>Week 14 - Subject: Text Files
Objective: understand and assess the use of permanent storage using text files.
Statement: a version of the video game must be created, but with the option to store the data
of a battle in a text file (data from the 2 created armies) and the option to load it later to recreate
the battle.</p>
        <p>Week 15 - Topic: Binary and Object Files
Objective: understand, assess and compare the use of permanent storage using binary and
object files.</p>
        <p>Statement: a version of the video game must be created, but with the option of storing a battle
in a binary file and another in an object file.</p>
        <p>Week 16 y 17 - Final Project Presentation. Present the created product to an audience.
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Analysis of Results</title>
      <p>We must consider that there was always a big problem with the level of approval of the
course, the grades were always low during the first five years in which the course was
taught. In 2018 we began to carry out small ludic activities that favored academic
performance, but after this experience in 2019, the number of approved, general average
and standard deviation improved considerably (vigesimal qualification). Data is shown
in Table 7 and in Fig. 1.</p>
      <p>Final Performance Results of the Fundamentals of Programming 2 Course.</p>
      <p>2013
Nº Students 123
Approved 49,15%
Disapproved 50,85%
Average 10,10
Stand. Dev. 3,86
Maximum 17
Minimum 1</p>
    </sec>
    <sec id="sec-6">
      <title>Conclusions</title>
      <p>We presented the laboratory activities that were used to stimulate motivation in our
students and teach them, through the development of the video game project, the
fundamental concepts of object-oriented programming: class, object, attribute, method,
message, composition/aggregation, abstract class, class members, inheritance and
polymorphism; and advanced topics such as event-oriented programming, graphical user
interfaces and HCI fundamentals; data structures such as standard arrays, ArrayList,
HashMap and file usage.</p>
      <p>We have shown that teaching these abstract concepts through project development
and in a ludic environment allows achieve good results in a generation of students who
are pure digital natives. Students learn to teamwork and gain the experience of
participating in a software development project.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Wolz</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Barnes</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Parberry</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wick</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>Digital gaming as a vehicle for learning</article-title>
          .
          <source>ACM SIGCSE Bulletin</source>
          , Vol.
          <volume>38</volume>
          , No.
          <volume>1</volume>
          ,
          <fpage>394</fpage>
          -
          <lpage>395</lpage>
          (
          <year>2006</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Sweedyk</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          , deLaet,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Slattery</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. C.</given-names>
            ,
            <surname>Kuffner</surname>
          </string-name>
          , J.:
          <article-title>Computer games and CS education: why and how</article-title>
          .
          <source>Proceedings of the 36th SIGCSE technical symposium on Computer science education, St. Louis, Missouri</source>
          , pp.
          <fpage>256</fpage>
          -
          <lpage>257</lpage>
          . USA (
          <year>2005</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Aedo</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vidal</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Castro</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          <string-name>
            <surname>Paz</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Teaching Based on Ludic Environments for the First Session of Computer Programming - Experience with Digital Natives</article-title>
          .
          <source>Revista Iberoamericana de Tecnologias del Aprendizaje</source>
          , Volume
          <volume>14</volume>
          ,
          <string-name>
            <surname>Issue</surname>
            <given-names>2</given-names>
          </string-name>
          , Article number
          <volume>8736307</volume>
          ,
          <fpage>34</fpage>
          -
          <lpage>42</lpage>
          (
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Aedo</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vidal</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Castro</surname>
          </string-name>
          , E.:
          <article-title>Implementation of a Software Engineering Curriculum based on ACM and ABET: A Peruvian experience</article-title>
          .
          <source>17th Latin American</source>
          and Caribbean Conference for Engineering and
          <string-name>
            <surname>Technology (LACCEI) - International</surname>
          </string-name>
          Multi-Conference for Engineering, Education, and
          <string-name>
            <surname>Technology</surname>
          </string-name>
          .
          <string-name>
            <surname>Jamaica</surname>
          </string-name>
          (
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Aedo</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vidal</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Castro</surname>
          </string-name>
          , E.:
          <article-title>Experience in the teaching of fundamentals of object-oriented programming through the implementation of a strategy videogame. 17th Latin American</article-title>
          and Caribbean Conference for Engineering and
          <string-name>
            <surname>Technology (LACCEI) - International</surname>
          </string-name>
          Multi-Conference for Engineering, Education, and
          <string-name>
            <surname>Technology</surname>
          </string-name>
          .
          <string-name>
            <surname>Jamaica</surname>
          </string-name>
          (
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Sanger</surname>
            ,
            <given-names>P. A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ziyatdinova</surname>
          </string-name>
          , J.:
          <article-title>Project based learning: Real world experiential projects creating the 21st century engineer</article-title>
          .
          <source>International Conference on Interactive Collaborative Learning (ICL)</source>
          .
          <source>Dubai</source>
          (
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>