<!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>Teaching programming for future information technology specialists based on end-to-end design of computer games</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Svitlana O. Leshchuk</string-name>
          <email>leshchuk_so@fizmat.tnpu.edu.ua</email>
          <xref ref-type="aff" rid="aff5">5</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ihor A. Tverdokhlib</string-name>
          <email>i.a.tverdokhlib@gmail.com</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tetiana V. Pidhorna</string-name>
          <email>t.pidhorna@knute.edu.ua</email>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Denys I. Huska</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Albina A. Patyashina</string-name>
          <email>apatyashina@gmail.com</email>
          <xref ref-type="aff" rid="aff5">5</xref>
        </contrib>
        <contrib contrib-type="editor">
          <string-name>PCWrEooUrckResehdoinpgs ISSNc1e6u1r-3w-0s0.o7r3g</string-name>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Digital Cloud Technologies</institution>
          ,
          <addr-line>31b 23 Serpnya St., Kharkiv, 61000</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Institute of Pedagogy of the National Academy of Educational Sciences of Ukraine</institution>
          ,
          <addr-line>52-D Sichovyh Streltsiv st., Kyiv, 04053</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Mykhailo Dragomanov Ukrainian State University</institution>
          ,
          <addr-line>9 Pyrogova Str., Kyiv, 01601</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>State University of Trade and Economics</institution>
          ,
          <addr-line>19 Kyoto Str., Kyiv, 02156</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
        <aff id="aff4">
          <label>4</label>
          <institution>Taras Shevchenko National University of Kyiv</institution>
          ,
          <addr-line>60 Volodymyrska Str., Kyiv, 01033</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
        <aff id="aff5">
          <label>5</label>
          <institution>Ternopil Volodymyr Hnatiuk National Pedagogical University</institution>
          ,
          <addr-line>2 Maxyma Kryvonosa Str., Ternopil, 46027</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
      </contrib-group>
      <fpage>107</fpage>
      <lpage>131</lpage>
      <abstract>
        <p>The article is devoted to the formation of professional and special competencies of future information technology specialists in the field of programming. The authors of the article propose to study programming through end-to-end design. The method of end-to-end design can be used only after students of computer science specialties have developed basic skills in algorithmization and programming, and have learned one or more programming languages and developed basic knowledge of software engineering in them. The authors propose to consolidate the study of programming by creating a computer game in the process of its end-to-end design. To do this, the authors developed the content of an elective course in programming, proposed a methodology for its implementation, and conducted experimental training for students of computer science specialties. A computer game is designed in the Unity environment in C#. An important part of the study is the description of the main stages of end-to-end design of a computer game, which includes code fragments and focuses on the features of this stage. In the process of the study, a survey of programming lecturers and students of computer science was conducted to find out their opinion on the importance and feasibility of introducing end-to-end design into the process of teaching programming. According to the results of the survey of programming lecturers, it was determined that the use of end-to-end design is appropriate in the older years of the university. Most lecturers use classical methods of teaching programming in their practice (individual coding, project-based learning, lfipped learning), but note that end-to-end design is an important method for consolidating programming skills, developing students' ability to work in a team, project development and management skills, and developing students' systematic, logical, and abstract thinking.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;teaching</kwd>
        <kwd>learning</kwd>
        <kwd>method</kwd>
        <kwd>programming</kwd>
        <kwd>students</kwd>
        <kwd>computer science</kwd>
        <kwd>IT specialists</kwd>
        <kwd>end-to-end design</kwd>
        <kwd>computer game</kwd>
        <kwd>C#</kwd>
        <kwd>Unity</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>The defining feature of the modern information society is the use of information technologies in most
areas of human activity: economics, industry, medicine, service and social sphere, education, everyday
life, etc. The information society is understood as a stage of development of the post-industrial society
where information is the main resource and information processes determine economic, political,
industrial and social activities. The information society is also characterized by the increasing role of
information and knowledge, the growing role of information technology and services, the use of new
forms of communication, and the increasing role of human information culture.</p>
      <p>In the process of development of the modern information society, education plays an important role.
On the one side, it is transforming towards the active use of information technologies in the educational
process, and on the other side, it is the main engine of the development of information technologies and
the information society in general. At the same time, an important role is assigned to the professional
training of future IT specialists. They play a key role in configuring and servicing information systems,
develop, configure and support the correct work of software, influence on the level of development and
integration of information technologies in all spheres of human life.</p>
      <p>
        An important place in the professional activities of modern information technology specialists is
occupied by the skills of independent obtaining of new knowledge, skills and abilities, self-organization
and regular professional development [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. This is caused by the continuous development of information
technologies, their regular updating, which takes place every few years. Therefore, there is an emergency
need to train a competitive information technology specialist who is able to navigate the changing
information society. Such training of future IT specialists can be provided by studying the theoretical
foundations of the functioning of digital devices and forming general and professional competencies.
      </p>
      <p>In the process of informatization of society, the vision of teachers and scientists about the place of
programming in the school computer science course was also changing. Initially, the programmer’s
approach prevailed, emphasizing such concepts as “program” and “algorithm”, and computer literacy
was understood as the ability to program. Further study of computer science at school was based on
the user approach. However, in today’s information world, programming skills are an integral part of
the professional training of secondary school pupils and a mandatory component of the professional
competence of future IT specialists.</p>
      <p>
        The issues of professional training of future IT specialists are presented in many Ukrainian and
international scientists’ works. In particular, A. Striuk and S. Semerikov in their scientific researches
[
        <xref ref-type="bibr" rid="ref2 ref3 ref4">2, 3, 4</xref>
        ] consider the issues of forming the competencies of future software developers and ways to
achieve the goals of their training. The papers [
        <xref ref-type="bibr" rid="ref5 ref6 ref7 ref8">5, 6, 7, 8</xref>
        ] described the methods and means of efective
programming training. The authors in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] compare progressive web applications with applied and
hybrid programs, study the role of progressive web applications in students’ learning activities, present
the development of their own web application, and select resources important for students’ education
in the field of information technology. Paper [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] proposes a methodology for organizing students’
collaboration when working on projects using the GitHub service during programming studies.
      </p>
      <p>
        Currently, many modern techniques, methods, trends, and tools for teaching programming have
been developed and published in scientific publications. A lot of attention is paid to the formation of
systemic [
        <xref ref-type="bibr" rid="ref10 ref9">9, 10</xref>
        ] and logical [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] thinking of IT specialties students, and the methodology of using the
project method in teaching programming [
        <xref ref-type="bibr" rid="ref12 ref13 ref14">12, 13, 14</xref>
        ]. Olena Glazunova et al [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] consider the creation
and use of a cloud-based environment for flipped learning for future IT professionals. It describes the
organization of the students’ project work based on flipped learning using the services and resources of
the cloud-oriented educational environment.
      </p>
      <p>The professional training requirements for future IT specialists are laid down in the state higher
education standard. The state standard in the field of Information Technology provides for the
development of such general competencies as: the ability to think abstractly, analyze and synthesize; the
ability to develop and manage projects; the ability to work in a team; the ability to think logically, to
draw logical conclusions; the ability to think systematically. All these competencies are formed in the
process of studying programming. It is worth noting that students of computer science specialties study
programming for several semesters or even years. At the same time, there is a fragmentation of the
topics of the general programming course. Students can study algorithms and data structures, basic
algorithmic constructions, syntax of the chosen programming language, algorithms for processing data
arrays, features of creating a graphical user interface, etc. in diferent semesters. In other words, the
process of developing a software application from start to finish is usually not covered in academic
programming courses.</p>
      <p>The methodology of end-to-end design is gaining more and more popularity every year in the process
of training university students. The importance of its use lies in the fact that in the process of end-to-end
design, students develop systematic and algorithmic thinking, that is, the student considers the task
from the point of view of a systematic approach. Moreover, the use of end-to-end design in the study
of programming contributes to the development of skills in computer science students to develop a
complete software application as a holistic process that involves teamwork, communication, self-help,
and self-learning.</p>
      <p>
        Currently, there are many scientific works devoted to the use of the end-to-end design for modeling
information systems and processes. Many of them are devoted to the end-to-end design of information
system components or technical devices [
        <xref ref-type="bibr" rid="ref16 ref17">16, 17</xref>
        ], computer vision systems, neural networks, and systems
based on artificial intelligence [
        <xref ref-type="bibr" rid="ref18 ref19">18, 19</xref>
        ]. David Magda from the University of Florida (United States)
and his coauthors present the design of a browser-based Arduino programming tool and learning
management system that ofers end-to-end support for learners utilizing Chromebooks in a classroom
environment [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. Thus, there are no scientific publications about the use of the end-to-end design
method in the study of programming by students of computer science. Computer games have recently
occupied a significant place in people’s lives: people play computer games and use game technologies
in education. A large number of publications by scientists from all over the world are devoted to the use
of game technologies in education. Paper [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] presents a systematic review of the use of gamification
in software engineering education.
      </p>
      <p>
        Given the popularity of games and gaming technologies in education, developing computer games
can be an efective way to get students interested in learning programming and an interesting result of
teaching programming. You can find some scientific works devoted to the methodology of teaching
computer games in higher education institutions. Mark Frydenberg in his study [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] describes a project
where first-year college students in an introductory technology concepts course use a visual game
creation tool to develop original games to play on their computers and mobile devices. Ladislav Végh and
Veronika Stofová in [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] consider computer programming to be one of the most important subjects for
undergraduate computer science students. They describe diferent approaches to teaching programming.
The authors believe that creating your own games is a great motivating factor for learning programming,
because most students like to play computer games. In their study, the researchers propose to study
object-oriented programming by developing simple games.
      </p>
      <p>Thus, there are scientific works in which the authors propose to create simple games in the process
of learning programming. A lot of works are devoted to modeling information systems (or parts of
them) and processes using end-to-end design. However, there are no works devoted to the methodology
of teaching programming students of computer science specialties based on the end-to-end design of
computer games.</p>
      <p>The purpose of the study is to develop a teaching methodology (content, structure of the elective
course, features of its implementation in the educational process) for programming future information
technology specialists based on end-to-end design of computer games and to experimentally test the
feasibility of its implementation in the educational process by surveying programming lecturers and
university students who had completed the proposed course.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Selection of methods and diagnostics</title>
      <p>In this study, we used a system of methods to achieve the goal, among which the most important
were the following: analysis of scientific, technical and specialized literature on the research problem,
systematization, generalization (to find out the state of development of the problem and review possible
ways to form professional competencies in future information technology specialists), experimental
training, observation of the educational process (to implement and adjust the methodology of
endto-end design of computer games in the process of teaching programming to students of computer
science specialties), questionnaires, interviews with students and teachers, analysis of the results of the
pedagogical experiment (to identify the pedagogical impact of end-to-end design of computer games on
the formation of competencies of students of information technology specialties).</p>
      <p>To achieve the goals of the study, we used a survey method based on our own questionnaire for
lecturers in the Google Forms environment. The following questions were asked of university lecturers
in the questionnaire we developed:
1. What is your experience of teaching at the university?
2. What specialties do you teach?
3. What disciplines do you teach?
4. How, in your opinion, is it advisable to organize programming training for students of computer
science specialties?
5. Evaluate the similarity of the structure of students’ activities in the process of project
implementation and end-to-end software design.
6. Choose the most appropriate definition of end-to-end software design.
7. Evaluate the efectiveness of each teaching methodology in teaching programming to students in
the field of knowledge 12 “Information Technology” (1 - low efectiveness, 5 - high efectiveness).
8. Evaluate the impact of end-to-end design in the process of teaching programming on the formation
and development of students’ competencies (1 - no impact, 5 - very significant).</p>
      <p>9. Choose the type of software whose development is of most interest to students
10. Express your opinion on the use of end-to-end design in the process of teaching programming.</p>
      <p>
        To analyze the survey results, we used methods of system analysis, digital modeling, and data
visualization. The survey results were processed using Google Sheets [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ].
      </p>
      <p>We conducted a survey of information technology lecturers using the questions presented above in
more than 10 higher education institutions of Ukraine. We organized experimental teaching of
information technology students on the following basis Ternopil Volodymyr Hnatiuk National Pedagogical
University (Ternopil, Ukraine) and Mykhailo Dragomanov Ukrainian State University (Kyiv, Ukraine).
We conducted systematic conversations with students during the experimental training. Students
were surveyed to find out their opinions on the feasibility of using the end-to-end design method in
learning programming, their interest in developing computer games (or other types of software), their
impressions of the process of developing a completed computer game, the need to involve specialists in
related fields (game designers, artists, testers, sound designers) to improve game development, etc.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Theoretical background</title>
      <p>The structure of the programming course has gained a well-established form in recent years. The
content and structure of the subject “Programming” is developed in accordance with the state standard,
the curriculum of the specialty, the state of development of programming languages and technologies.
Usually, classes are held in the form of lectures and practical lessons, where students acquire skills in
coding. Diferent approaches to teaching programming can be used: project activities, flipped learning,
writing code in small groups using cooperation or collaboration, end-to-end design, etc.</p>
      <p>The lectures present theoretical material related to the programming process in general, the
description of syntactic constructions and various tools of a particular programming language, some issues of
programming technologies, etc. Lectures are actively conducted using the method of demonstration
examples and the method of open programs. When discussing theoretical material, it is important to
immediately point out its possible practical applications or demonstrate them. For this purpose, the
process of solving a series of problems is considered, on the basis of which attention is focused on the
mechanisms of operation of individual programming language tools. The teacher’s independent solution
of the problem is intended to demonstrate all stages of creating a software tool in the development
environment: setting a task, analyzing the input data and the result, abstraction, building a solution
model, finding and determining the optimal algorithm, selecting the necessary data structures, writing
the algorithm using the programming language, detecting errors and debugging the software tool,
testing. Creating a simple software tool, even if the program does not have an explicit functional
structure, is a rather laborious process that involves at least three components: preparing the environment,
coding, and debugging the program. Therefore, analyzing the process of solving a problem in such
detail in a lecture has certain disadvantages - significant time consumption and possible distraction by
unimportant details.</p>
      <p>
        The main type of classes for acquiring practical programming skills is practical work by students.
The task for a practical programming assignment usually contains a problem statement, a list of
recommended tools for solving it, and a list of some reference resources. That is, the student is
essentially given a problem to solve. To do this, the student needs to analyze possible ways and means
to solve the problem, choose a programming language and environment. To develop students’ skills
of teamwork, interaction, and communication, the task should be solved as part of a team project
activity. The authors in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] state that “...the acquisition of problem-solving and communication abilities
is critical in programming education. These skills are crucial for identifying, analyzing, and solving
problems efectively.”
      </p>
      <p>
        Recently, an activity-based approach to the teaching process has been used in the learning of
programming. It is based on the concept of “learning by doing”. The basis of this approach is related
to the ideas of the theory of experiential learning, according to which knowledge is acquired through
the transformation of practical experience [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ]. The main methods of teaching are the method of
appropriately selected tasks, the method of demonstration examples, the method of open source
programs, and the project-based method. Each of these methods has both positive aspects and certain
disadvantages, and requires pedagogically balanced use depending on the teaching conditions.
      </p>
      <p>
        According to the theory of cognitive load, knowledge is divided into primary knowledge (usually
not learned) and secondary knowledge, the importance of which is determined by the culture of
humanity. Subject-specific biologically secondary knowledge and skills need to be clearly taught and
actively learned, which are usually not acquired easily, unconsciously, and automatically [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]. Creating
conditions close to future professional activities in the process of theoretical training and mastering
theoretical knowledge and methods of activity in these conditions is an important stage in the process
of professional training. One of the ways to achieve this may be to learn the stages of end-to-end
design using the example of game development. As a rule, it is dificult for IT students to determine the
requirements for software used in a particular subject area (they are not specialists in this field), but the
great majority of students are active users of various computer games and they can easily be customers
and put forward appropriate requirements for software.
      </p>
      <p>
        Project-Based Learning is an activity-based teaching method where students gain knowledge and
skills by working for a lengthy period to examine and react to genuine, engaging, and complex questions
or challenges [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ].
      </p>
      <p>The project-based learning approach to programming is an approach to teaching programming in
which students complete holistic projects as part of acquiring practical programming skills instead of
writing separate blocks on a particular topic. The use of this method in programming contributes to
the formation of deep knowledge and skills of students, deepens and shapes the personal qualities of
the future IT specialist, such as the ability to work in teams, planning, initiative, and the ability to find
ways to solve complex problems.</p>
      <p>
        End-to-end design of software ofers a comprehensive solution covering all stages of product
development - from the concept to its full implementation and support. End-to-end software development
implies eficient and well-coordinated work in all its phases. Team members communicate closely with
each other, which allows them to stick to the chosen vector and coordinate steps. End-to-end design of
software consists of the following steps: requirement analysis, planning, prototyping, UI/UX design,
coding, QA testing, launch, maintenance [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ].
      </p>
      <p>By end-to-end design in programming education, the authors of the article mean an approach to
organizing teaching programming in which students study and practice all stages of the software
development process using the example of software development from start to finish.</p>
      <p>This approach to teaching programming allows students to experience the full software development
cycle in practice. In the process of end-to-end design, they can see how the choice of technologies at
one stage afects other stages of software development and the final result, helps to develop the ability
to analyze and solve complex problems, and the skills to work independently on real projects in their
future professional activities.</p>
      <p>
        This approach has been used in writing well-known bestselling programming books. For example, in
“Assembly language for the PC” [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ], the authors create a software project throughout the book - the
shell of the Norton Commander operating system, which was very popular in the 90s of the last century.
Herbert Schildt in his book “Java: A Beginner’s Guide” [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ] creates a software project throughout the
book - the Java help system.
      </p>
      <p>Thus, in some aspects, the end-to-end design method resembles the project-based method, but there
are significant diferences in the construction of the programming course and the organization of the
educational process. The project-based method involves creating a software product to accomplish
a specific task, in which students apply their knowledge in practice. This can be a separate stage of
learning where students apply knowledge to solve a specific problem. The end-to-end design method
covers the entire life cycle of software product development. It allows students to gain skills in writing
code, planning, architecture selection, testing, maintenance, and implementation of software. That is,
the process of creating a software product is considered from the point of view of a systematic approach
in which future IT professionals consider the software development process as a whole.</p>
    </sec>
    <sec id="sec-4">
      <title>4. Results and discussion</title>
      <sec id="sec-4-1">
        <title>4.1. Description of a comprehensive course for learning programming</title>
        <p>In our study, we proposed the idea of building a programming course for future IT specialists based on
end-to-end design. Of course, this cannot happen at the beginning of programming studies at university.
At the beginning, students need to learn the basics of algorithmization and programming, basic code
writing skills, and one or more programming languages. The learning of programming in the first
years of university is usually accompanied by writing separate parts of the code to study the basic
algorithmic structures, syntax, and semantics of the programming language, and by performing
smallscale learning projects to master specific skills or technologies (developing a user interface, developing
an authorization system, creating and connecting a database, etc. These projects usually do not involve
designing a software product from the initial idea to implementation and support.</p>
        <p>In our proposed course “Computer Game Development Technologies” or “Computer Game
Programming Technologies” (the course had diferent names in some universities), the process of creating
a computer game using the end-to-end design method was studied. This subject was taught in the
3-4th year of study and was the last subject of the programming cycle. The course, developed and
implemented in the educational practice of training future IT professionals, is studied as an elective
discipline. However, in our opinion, such a course would also be useful in the normative component of
the educational program for training future IT specialists. The course content ofers an approximate
number of hours and weeks to study the subject. We believe it is appropriate to leave it to the discretion
of graduating departments to integrate this course into the professional training program and the
number of hours to study it. Its study allows students to complete the study of programming through
the end-to-end design of a computer game, generalizing and systematizing students’ knowledge of
software design and development.</p>
        <p>
          To create a computer game in the proposed course, we used the Unity environment, a cross-platform
engine for developing computer games, virtual and augmented reality [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ]. Unity was chosen not
only because it is one of the most popular engines for creating games, but also because Unity uses
the C# language for programming, which students have already begun to learn in previous courses.
Thus, integrating Unity learning into the C# learning process can be a great way to reinforce practical
programming skills and empower students.
        </p>
        <p>It was no accident that we chose the topic of computer games, as the video game industry is very
popular among young people. As you know, the success of a game depends on many factors, such as the
quality of gameplay, graphics, story, marketing strategy, etc. With the development of technology, game
engines, development tools, platforms, and development methods are constantly changing. With the
advent of virtual reality, augmented reality, and other innovative technologies, new opportunities and
challenges for game developers are becoming relevant. All this prompted us to develop and implement
a methodology for training IT specialists in the gaming industry.</p>
        <p>The proposed educational course is designed for 17 academic weeks. Below is a list of tentative
course topics and their distribution over the course of the semester:</p>
        <p>Topic 1: Project planning (Week 1 - 2). Features of end-to-end software design. Stages of work
on the project, task setting, distribution of responsibilities, start of game design. The goal of this topic
is to familiarize students with the main stages of end-to-end design of a computer game, update C#
programming skills, form teams, assign responsibilities, and set tasks for the project.</p>
        <p>The result of studying these topics is the formation of students’ ability to set a task, draw up technical
documentation for the project, distribute responsibilities in their team, determine the genre of the game
and its concept (including the visual implementation of ideas).</p>
        <p>Topic 2. Unity C# programming basics (weeks 3 - 5). Creating simple scripts for managing objects,
interacting with components (e.g., character movement, animation control), working with events.</p>
        <p>Goals: To introduce students to the features of the Unity interface and its main components, to
demonstrate the possibilities of using C# to write scripts in Unity, integrating the basic knowledge of
C# from the previous semesters.</p>
        <p>Results: Students are able to write simple C# scripts for Unity and understand how the code interacts
with Unity components, finalize the art concept (formation of visual ideas and style).</p>
        <p>Topic 3. Designing and creating simple game mechanics (weeks 6 - 9). Using C# to develop game
mechanics, creating simple animations and working with UI.</p>
        <p>Goals: To teach students how to create simple game mechanics (e.g., movement of the main character,
physics, basic interaction with objects), develop a control system, and test the developed mechanics.</p>
        <p>Result: Students use C# to control the gameplay and interact with the user.</p>
        <p>Topic 4. Improving a computer game (weeks 10-13). Work on graphics, sound, and game levels.
Goals: To realize graphic resources, develop a soundtrack and game levels.</p>
        <p>Results: Students create, test, and optimize project graphics; work with the game’s sound efects;
programmatically implement elements of game complexity, making it more interesting.</p>
        <p>Topic 5. Completion of the project (weeks 14-17). Testing, debugging, release of the game.
Goals: To identify and eliminate the game’s shortcomings, prepare the development for release.
Results: Students complete the project, gain teamwork experience, and present the finished game.</p>
        <p>The developed course program is designed for one semester, which allows you to efectively combine
C# knowledge with the basics of Unity, while developing students’ practical skills and implementing an
end-to-end design approach to computer games.</p>
        <p>In general, the implementation of the end-to-end design method when building a programming
course involves several stages of implementation. The preparatory stage is carried out by the lecturer
and involves a number of activities:
• based on current state standards and curricula, the relevant content of the educational material is
formed;
• design and describe educational software tools, for the creation of which all the tools of the
programming language and the stages of creating a software tool that are reflected in the content
of the educational material should be used;
• the number of such educational software tools should be suficient for each student to work
independently;
• each educational software tool should be meaningful (not formalized), practically relevant and
interesting;
• in accordance with the content of the course material, a series of lectures is prepared, which
involves grouping theoretical material and demonstrating its use in the development of the
educational software tool by the teacher;
• laboratory works are prepared, the content of which corresponds to the cycle of lectures; each
work should contain suficiently detailed educational and methodological instructions for
implementation, on the basis of which the student will develop a working component of the future
educational software tool.</p>
        <p>Each lecture class or group of such classes should consist of two main parts:
• the lecturer explains the planned theoretical material related to the programming language
tools, the programming process itself, programming technology and methods, or outlines the
boundaries of the theoretical material and indicates the relevant available information sources;
• the lecturer demonstrates the application of the described theoretical material on the example of
building a separate component of the educational software tool that is created throughout the
course.</p>
        <p>During such lectures, students actively learn new language tools and become participants in the
process of programming and creating a real software tool. Thus, from lecture to lecture, the software
tool being created is constantly being improved and acquires new, necessary functionality. And students
observe with their own eyes all the stages of the real process of creating a software tool and the
expediency of using certain language tools, programming methods and selected classical algorithms.</p>
        <p>During practical work, students apply the theoretical and reference material presented in lectures to
build their own project in accordance with the developed teaching guidelines. The result of each such
work should be the assimilation and processing of theoretical material, which can be tested with the
help of prepared test tasks. A working project should be created at this stage of development due to the
added functionality based on the information received about new language tools. The teacher may give
advice and consultations on planning and implementing their own projects when students perform
specific practical work.</p>
        <p>At the end of the course, the lecturer (in lecture classes) and students (in practical/laboratory classes)
complete the creation of educational projects - working software tools. After that, it is necessary to
hold a final meeting to demonstrate their own developed programs and a general evaluation of the work
of each developer according to the criteria specified by the teacher, in which all project developers, i.e.
students of this training course, will participate.</p>
      </sec>
      <sec id="sec-4-2">
        <title>4.2. Description of the stages of game creation</title>
        <p>Let’s consider the main stages of game development, starting with gameplay design and ending with its
testing, using the example of a game created by the lecturer during the lecture classes in the process of
experimental programming teaching. We will describe the peculiarities of each stage and identify the
key aspects that need to be taken into account.</p>
        <sec id="sec-4-2-1">
          <title>4.2.1. Designing a game</title>
          <p>At the beginning, the game is designed. This is one of the most important stages of game development,
as it determines the further success of the game. At this stage, the gameplay, the concept of the game, its
main mechanics and functionality are determined, and the basic rules are established. When designing a
game, you need to consider the following issues: game structure, mechanics, levels, main hero, enemies,
location, and other components that can afect the player’s experience. In Table 1, you can find the
main components of preparing to create a computer game, including: idea, target audience, game genre
selection, general concept development, competitors’ analysis, and technical capabilities assessment.</p>
          <p>To complete the tasks of the preparatory stage, students are organized into teams to design a game.
Next, they define the basic rules of the game, such as the rules of interaction between characters and
the environment, combat mechanics, and others. It is important that the rules of the game are clear and
logical, and not too complicated for the players. The next step is to create a game prototype that will
help test the gameplay and identify possible problems.</p>
          <p>At the design stage of the game “TopDownShooter”, it was decided to create a 2D shooter with a
top view, where the main character fights with enemies in separate rooms. This solution allows you</p>
          <p>Name of the component</p>
          <p>Game idea formulation
Identifying the target audience</p>
          <p>Choosing a game genre
Development of a general concept</p>
          <p>Competitor analysis
Assessment of technical capabilities</p>
          <p>Description
The starting point for creating any game. It can come from the
imagination of developers, inspiration from other sources, feedback from
players, or be based on trends and market needs. It is important that
the idea is original, unique, and interesting, able to attract attention
and interest of the audience
Understanding the target audience is a key factor in the successful
development of a game. It is necessary to find out for whom the game
is being created, what interests and preferences this audience has, and
what game elements will be most attractive to this segment of users
The game genre determines the basic structure and mechanics of the
gameplay. It can be action, strategy, RPG, puzzle, simulator, etc.</p>
          <p>At this stage, the general concept of the game is formed. The plot,
characters, atmosphere, and other aspects of the game are determined.</p>
          <p>It is worth analyzing the main characteristics, mechanics, gameplay,
and unique features of the game. It is important that the game concept
is coherent and logical, as well as attracts the attention of the target
audience
Research and analysis of competitive games helps to determine the
advantages and competitive features of the future game</p>
          <p>Development of technical documentation
to create a rich and dynamic atmosphere where the player feels the adrenaline of each fight, using an
automatic pistol, shotgun and rocket launcher to clear levels, etc.</p>
        </sec>
        <sec id="sec-4-2-2">
          <title>4.2.2. Creating an art concept</title>
          <p>To create an art concept for a game, students need to focus on forming a general visual idea and style,
which will later become the basis for creating graphic resources. The art concept is the stage where the
atmosphere and mood that you plan to convey to the players are visualized. It is important to make
the game world attractive, recognizable, and understandable, setting the tone that will keep players
engaged and excited.</p>
          <p>Next, we suggest that you critically review examples of visual design of similar games, character
concepts, and game objects. This task encourages you to explore styles that could make the game
unique, as well as maintain simplicity and clarity, which is important for a mobile game project. The
key aspects of this area are: selecting a color palette, determining the style of the enemies’ appearance,
designing rooms and efects that would create the appropriate atmosphere.</p>
          <p>In “TopDownShooter”, the enemies are colored dark green to make them look like zombies - menacing
and gloomy, but clearly separated from the protagonist and his allies (figure 1). The hero of the game is
a dynamic character, able to adapt to changes on the battlefield, but at the same time recognizable and
distinct from the enemies.</p>
        </sec>
        <sec id="sec-4-2-3">
          <title>4.2.3. Developing game mechanics</title>
          <p>At this stage, we move directly to the practice of programming. The development of mechanics can be
divided into several stages, namely:
1. Determining the genre of the game (strategy, shooter, platformer, etc.) and its main mechanics
(combat, puzzles, etc.).
2. Development of the main mechanics (for a shooter, it can be a battle with enemies, and for a
platformer, it can be the movement of the hero through the levels).</p>
          <p>3. Development of secondary mechanics (availability of various types of weapons; game modes,
thinking through obstacles and traps on the levels).
4. Development of the control system (control of the main character, interaction with various objects
on the levels, etc.).
5. Testing game mechanics (removing bugs, determining the correct interaction).</p>
          <p>It is important for students to check whether the game mechanics work correctly, to assess whether
they are interesting for players and not complicated to the point that they may reduce interest in the
game. In addition, the development of game mechanics should also be done with the specifics of the
platform for which it will be created. For example, game mechanics for mobile devices should be more
intuitive and easy to control than those for a console game. In addition to the main stages of developing
game mechanics, it is also important to ensure that they are balanced and interact with other elements
of the game, such as story, graphics, and sound. All elements of the game should complement each
other and create a coherent gameplay that will be interesting and engaging for players.</p>
          <p>To implement the mechanics of the game, “TopDownShooter” focuses on the development of dynamic
gameplay for mobile devices using interactive controls and various stages of dificulty. Let us consider
the main mechanics of the game under development.</p>
          <p>The movement of the protagonist is controlled by the joystick on the screen, which provides easy
control on a mobile device. The player can quickly change direction, leaving one hand free for other
actions.</p>
          <p>Realization of the main character’s movement:
private void MovePlayer(Vector2 direction)</p>
          <p>{
_rigidBody2D.velocity = direction * Speed;
var isFlip = direction.x &gt; 0.0f;
_headSprite.flipX = isFlip;
_bodySprite.flipX = isFlip;
_animator.SetFloat(AnimatorSpeedId, direction.magnitude);
}</p>
          <p>Shooting is realized through a second joystick that allows you to determine the direction of fire.
The weapon automatically follows the direction of this joystick, providing accurate aiming and quick
response to changing enemy positions.</p>
          <p>The procedure for obtaining weapon data:
public void MakeShoot()</p>
          <p>{
if (FireRateSeconds &lt;= 0f &amp;&amp; MagazineAmount &gt; 0)
{
}
}
}
}
}
}
}
FireRateSeconds = GunSettings.fireRate;</p>
          <p>FireRateSecondsChanged?.Invoke(1f);</p>
          <p>Shoot?.Invoke(GunSettings.shootSound);
MagazineAmount--;</p>
          <p>CountBulletsChanged?.Invoke(MagazineAmount);</p>
          <p>Shooting();</p>
          <p>Interaction with rooms. When the player enters one of the rooms, the door automatically closes,
preventing escape and forcing the player to focus on clearing the room of enemies. The door opens only
after the room is completely cleared, which adds an element of strategy and a sense of accomplishment.</p>
          <p>Spawn enemies in an empty, newly entered room:
private void FirstSpawnEnemies()
{
if (CurrentRoom is { IsEnemiesSpawned: false, IsCleared: false, })
{
CurrentRoom.EnemyWavesCount =
GlobalProvidersLocator.GameProvider.EnemyWavesCount;
CurrentRoom.OnEnemyWavesCountChanged();</p>
          <p>CurrentRoom.SpawnEnemies();</p>
          <p>Waves of enemies in each room. Each room is filled with several waves of enemies, where the
number of waves and enemies depends on the current level. This adds complexity and challenges to
each new level.</p>
          <p>Check the number of waves of enemies and spawn new ones:
if (_enemiesCountPerWave &lt;= 0)
{</p>
          <p>IsEnemiesSpawned = false;
EnemyWavesCount--;
var enemyWavesCount = EnemyWavesCount;
if (enemyWavesCount &lt; 0)
{
enemyWavesCount = 0;</p>
          <p>OnEnemyWavesCountChanged(enemyWavesCount);
if (EnemyWavesCount &gt;= 0)
{</p>
          <p>SpawnEnemies();
}
else if (!IsCleared)
{</p>
          <p>OpenDoors();</p>
          <p>Level system. The game has many levels with no maximum limit. Each new level increases the
number of enemies and waves that the player has to fight. The number of rooms also increases, but
does not exceed 20 to ensure the optimal duration of game sessions.</p>
          <p>Leveling up (coin accrual):
}
}
}</p>
          <p>}
}
else
{
public void LevelUp()
{
var coinsPerLevelCount = Level * Random.Range(Constants.MinCoinsMultiplier,</p>
          <p>Constants.MaxCoinsMultiplier);
var defaultCoinsPerLevelCount = Random.Range(Constants.MinCoinsPerLevel,</p>
          <p>Constants.MaxCoinsPerLevel);
PlayerData.Coins += (uint)coinsPerLevelCount +</p>
          <p>(uint)defaultCoinsPerLevelCount;
Level++;</p>
          <p>UpdateInfo();</p>
          <p>Shop for improvements. The game has a shop where you can improve the damage of weapons and
buy ammunition for each type of weapon. This allows the player to better prepare for challenges and
provides additional opportunities for progress.</p>
          <p>Weapon damage upgrades:
protected override void Upgrade(GunType type)
{
if (PlayerData.Coins &gt;= Price)
{
var gunDataModel = GlobalProvidersLocator.WeaponProvider.</p>
          <p>GetGunDataModel(type);
if (gunDataModel is not null)
{</p>
          <p>gunDataModel.Damage += CountUpgrade;
SettingsProvider.SaveSettingsByKey(type.ToString(), gunDataModel);
OnUpgraded(UpgradeType.Damage, gunDataModel.Damage);</p>
          <p>PlayerData.Coins -= Price;</p>
          <p>Debug.Log("Not enough money");</p>
          <p>Sound settings. In the game settings, you can turn of music and sound efects, which adds to the
comfort of players.</p>
          <p>Turn the sound on/of:
public void OnSoundClick()
{</p>
          <p>MainMenuLocator.MainMenu.PlayAudioSource();</p>
          <p>SettingsData.IsSoundOn = !SettingsData.IsSoundOn;
disableSoundImage.enabled = !SettingsData.IsSoundOn;</p>
          <p>Game currency (coins). The player receives coins for neutralizing enemies and completing levels.
This currency allows you to buy ammunition and upgrades, which motivates you to complete more
levels and take part in battles.</p>
          <p>Bosses of every fith level. After every fifth level, a special room with a boss appears. The character
is transported to this room where he has to fight the boss, adding a special challenge and variety to the
game.</p>
          <p>Boss spawn:
if (!isBossSpawned &amp;&amp; bossFactory is not null
&amp;&amp; message.NewRoom?.RoomType == RoomType.Boss)
{
Shield and health boosts. The game has boosts that provide a temporary shield or restore the health
of the main character. The shield protects against damage for 1 minute, reducing its time with each hit.
The health boost adds 30 HP. Shields can be picked up several times, which extends their efect.</p>
          <p>Random spawn of boosts. In each room and after the completion of waves of enemies, boosts will
randomly spawn. This provides additional resources to the player at unexpected moments of the game.</p>
          <p>Boost spawn:
public void SpawnBoosts(List&lt;Transform&gt; spawnPoints)
{
if (spawnPoints != null)
{</p>
          <p>var chanceToSpawnBoost = (int)(Random.Range(0f, 1f) * 100);
var boosts = Boosts.Where(boost =&gt;</p>
          <p>chanceToSpawnBoost &gt; boost.Value.minPercentageForSpawn);
foreach (var boost in boosts)
{
var indexSpawnPoint = Random.Range(0, spawnPoints.Count);</p>
          <p>GamePlayLocator.BoostFactory?.Create(boost.Value.type,</p>
          <p>spawnPoints[indexSpawnPoint].position);
}
}</p>
          <p>}</p>
          <p>User Interface (UI). For the player’s convenience, the UI includes a display of the current wave level,
the number of enemies in the room, the number of rooms in the level, and the number of rooms already
cleared. This helps the player to track their progress and plan the game strategy.</p>
          <p>The use of the described mechanics allows us to create an exciting and dynamic gameplay adapted to
mobile devices and ready to provide players with unforgettable adventures on each new level.</p>
        </sec>
        <sec id="sec-4-2-4">
          <title>4.2.4. Creating graphic resources</title>
          <p>At this stage, graphic assets such as characters, tildes, and other game objects are created. This may
include using of-the-shelf elements such as sprites and textures, or creating new graphic assets from
scratch. Work on the project involves:
1. Identify the necessary graphic resources (list them).
2. Creating layouts of graphic resources (working with sketches (ballpoint pencils) that help visualize
the final product. It is advisable to use such tools as Adobe Photoshop, Sketch, Figma).
3. Development of final versions of graphic resources (taking into account file size, resolution,
format and other parameters).
4. Testing of graphic resources (on diferent devices, at diferent resolutions and formats).
5. Optimize graphic assets (reduce file size, use special formats, or reduce the number of details in
graphic elements).
6. Documentation of graphic resources (creating descriptions and instructions that help students to
use graphic resources correctly when completing similar projects: what graphic elements were
used, their size, format, and characteristics; what steps to take to add graphic elements to the
game; and recommendations for editing and using graphic resources).</p>
          <p>At the stage of creating graphic resources, you work on the design of the main elements of the game,
such as the main character, enemies, weapons, levels, boosts, and interface. Characters are created in
Adobe Photoshop and/or Adobe After Efects. An interesting stage is the experimentation with diferent
styles and techniques to achieve the desired visual result and match the theme and style of the chosen
genre.</p>
          <p>In “TopDownShooter”, the work on creating the design of game elements was long: diferent variants
of graphics were tested, new details were added, colors and shapes were changed until the desired result
was achieved. This process included reviewing similar characters and getting feedback from testers
who helped to objectively evaluate the design, ofering their own ideas that led to the improvement
of the images (figure 2). The “enemies” were supposed to create an atmosphere of threat and increase
the sense of danger. Two types of enemies were developed: zombies with swords for close combat
and zombies with guns for ranged attacks. This gave the game a more tactical approach, where the
player is forced to adapt to diferent types of enemies. The game also features a boss that was created
intuitively by experimenting with its shapes, sizes, and colors until the image corresponded to the idea
of a powerful enemy. Bonuses in the form of shield and health have become an important part of the
graphic design of game resources. They are created in the form of jars that the player can pick up to get
the appropriate boost. These boosts not only strengthen the player, but also add elements of strategy,
as the player must plan his actions based on the availability of these resources. The shield provides
temporary protection by absorbing damage, and the health boost restores part of the character’s HP,
allowing him to resist enemies for a longer time.</p>
          <p>During the development of our game, special attention was paid to its interface, which should be
harmoniously combined with its style and not distract the player from the main events on the screen.
All interface elements - from the number of enemies to the health level - were designed so that the
information is presented conveniently and is always available to the player. The creation of graphic
resources allows you to create a holistic gaming environment that immerses the player in the atmosphere
and enhances interaction with each element of the game.</p>
        </sec>
        <sec id="sec-4-2-5">
          <title>4.2.5. Developing levels</title>
          <p>At this stage, individual levels of the game are created, which include objects, obstacles, and other
elements with which the player can interact. Level development may vary depending on the chosen
development methodology, but in general, at this stage, graphic resources are created, objects and
obstacles are added, and the level and protagonist logic is configured. The main goal is to create game
levels that will be interesting for players and meet the general concept of the game.</p>
          <p>The main steps of this stage:
1. Determining the general concept of the game (whether the level meets its requirements and style:
obstacles and traps (for a platformer), terrain to explore, and lots of NPCs (for an RPG)).
2. Determine the type of level (timed levels, survival levels, resource gathering levels, etc.).
3. Create a level map. It should be clear and logical, with clearly marked zones and paths, as well as
the locations of enemies and objects to be collected.
4. Adding elements (considering the balance (various obstacles, enemies, traps, objects to collect,
and other elements that will make the game more interesting and evoke diferent emotions in
players) between the complexity and interest of the game, so as not to frustrate players with too
dificult levels or bore them with too simple ones).
5. Testing (for bugs and compliance with the overall game concept) and debugging (changing the
dificulty, placement of objects and obstacles, and other adjustments).
6. Repeating for the next levels (adherence to the general concept of the game and ensuring the
variety of levels).
7. Final testing (removing bugs and ensuring smoothness of the levels).</p>
          <p>Generally speaking, level design is an important part of computer game development that requires
attention to detail, student creativity, and knowledge of player psychology. Successful completion of
this stage should result in a fun and engaging game with an appropriate level of dificulty. At this stage,
a system of game rooms is created (figure 3), which serve as a battlefield for the protagonist, where
he destroys waves of enemies, passing from one room to another. These rooms have diferent door
configurations that not only visually distinguish them, but also change the paths and possible directions
for the player, adding variability to the gameplay.</p>
          <p>The game “TopDownShooter” has the following types of rooms:
• rooms with four doors - fully open on all four sides, provide the most free movement and create
dynamic conditions for combat;
• rooms with three doors - have a restriction (no door) on one side, which varies: left, right, top or
bottom. This adds to the strategy as the player is forced to adapt to new space conditions;
• rooms with two doors - there are only two directions to exit (e.g., up and left, down and right,
etc.), which creates even more restrictions and opportunities for tactical maneuver;
• rooms with a single door - these are the narrowest rooms to choose from, as they provide only
one way in or out. They add a sense of confinement and make for intense battles;
• a room without a door for bosses is a special room that appears at the end of every fifth level. The
player enters this room to fight the boss, and the only way out of the room is after the victory.
Levels are generated based on the player’s progress, and the number of rooms, waves, and enemies
changes with each new level. At the initial levels, the player faces fewer rooms, waves and enemies in
each wave, which opens up the opportunity to gradually adapt to the game mechanics. However, as
you progress, the number of rooms increases, approaching a maximum of 20 rooms. The number of
waves of enemies in each room and the number of enemies in each wave also increase depending on
the level, which creates a greater challenge and encourages the player to improve their skills, as well as
use boosts and the magazine to upgrade weapons and replenish ammo.</p>
        </sec>
        <sec id="sec-4-2-6">
          <title>4.2.6. Developing a soundtrack</title>
          <p>At this stage, sound efects and music for the game are created. This usually includes creating sounds for
various actions of the protagonist, sounds of obstacles and other objects, as well as musical compositions
that can be used in the game. A well-chosen soundtrack can emphasize the emotional component of
the game and create a certain atmosphere. In order to create a high-quality soundtrack, we suggest that
students follow these steps:
1. Identifying needs (game atmosphere: if it’s an action game, you can use loud and dynamic sounds
to create a more dynamic atmosphere and suspense, and in the case of a game with a serious
storyline, you can use more subdued and emotional sounds, in the case of a puzzle game, you can
use sound efects that emphasize the unpredictability and complexity of the game).
2. Choosing music and sound efects (selecting freely available sound resources, creating your own,
taking into account the volume and tempo, and considering interactivity).
3. Integration of the soundtrack into the game (sound balance, technical limitations, testing,
optimization, documentation, editing, copyright, testing, optimization, implementation).</p>
          <p>At this stage of development of TopDownShooter, it was important to develop a system of sound
efects (explosion sound, coin collection sound, impact sound, etc.). To do this, students were ofered
environments such as Audacity or Adobe Audition. You can add sound files and efects by programming
or using game development tools that allow you to add sound to game objects, actions, or events.</p>
          <p>When testing the soundtrack, you need to make sure that the sounds are reproduced with high
quality and correspond to the game events. In addition, it is important to take into account technical
limitations (for example, some devices may have restrictions on the number of sound tracks or their
frequency range).</p>
          <p>When optimizing, we suggest that students make sure that the size of the sound files is not too
large and does not take up too much space on the hard disk. It is also important to pay attention to
the number of game objects that play sound and reduce them if they are too large. This will help to
conserve computer resources and ensure that the game runs quickly.</p>
          <p>There are two diferent melodies for the background of TopDownShooter. The first one for the
main menu is calm but intriguing; it creates a sense of anticipation and sets the player up for future
adventures; the second one for the playing field is dynamic, emphasizes the tension of the battle and
stimulates the player to act quickly. To find both tracks, various resources were explored in an efort
to find compositions that would match the overall atmosphere of the TopDownShooter game. After
testing several options, we selected the ones that were best combined with the graphics and gameplay
dynamics.</p>
          <p>Sound efects for shooting also play an important role in the game. Diferent sounds were selected
for each type of weapon to make each shot sound unique and match the character of the weapon.</p>
        </sec>
        <sec id="sec-4-2-7">
          <title>4.2.7. Testing, debugging, releasing the final version of the game</title>
          <p>During the testing phase, students are asked to perform a series of tests to verify the game’s functionality
and identify errors and bugs. It is advisable to use a variety of tools, such as automatic testing frameworks,
manual testing, programs for collecting and analyzing performance data, etc. It is also necessary to
allocate enough time and resources to support the game to ensure its quality and correct operation
in the conditions of changing operating systems and devices. In addition, it is important to ensure
that bugs and crashes in the game can be tracked in order to respond quickly and release appropriate
patches and updates.</p>
          <p>Before releasing a game, it is necessary to check that it works on diferent computer and device
configurations and that it does not use an excessive amount of system resources. For the successful
release of the game, it is also important to take into account the platforms on which the game will be
launched (PC, game consoles, mobile devices), the need to support diferent languages and localize the
game for diferent regions, protection against hacker attacks and fraud.</p>
          <p>Testing and debugging of TopDownShooter allowed us to thoroughly check the game’s performance,
improve the gameplay and eliminate the interface defects. To hear students’ impressions of the game’s
design, peculiarities of the game design process, potential problems, and exchange of impressions, we
conducted a survey of students.</p>
        </sec>
      </sec>
      <sec id="sec-4-3">
        <title>4.3. Methodology of organization and results of the experimental research</title>
        <p>The authors’ research is aimed at developing a programming course for students of computer science.
The peculiarity of this course is that it is taught using the technology of end-to-end software design. In
our case, a computer game.</p>
        <p>To develop the content of the course, we analyzed the state standard of higher education, curriculum,
and study programs for training future computer science specialists. The analysis of scientific and
educational literature made it possible to identify the psychological and pedagogical features of organizing
the study of programming by means of end-to-end design.</p>
        <p>At the development stage of the course, we conducted a survey of university lecturers using a
questionnaire we developed. The purpose of the survey was to determine the opinion of programming
lecturers on the feasibility of using certain methods and tools for teaching programming, their
understanding of the end-to-end design method and the feasibility of using it in the educational process. The
survey involved 30 lecturers from more than 10 higher education establishments in Ukraine.</p>
        <p>The high reliability of the survey results can be evidenced by the fact that 73.3% of respondents have
more than 10 years of experience in higher education institutions, namely: 50% of respondents have
more than 20 years of experience, 23.3% of respondents have more than 10 years of experience. This
indicates their great pedagogical experience, good awareness of the peculiarities of organizing the
educational process and a deep understanding of the methods of teaching programming.</p>
        <p>As a rule, lecturers of professional subjects in the information technology field teach their subjects
in diferent specialties. Our survey involved lecturers who teach in the vast majority of the following
specialties: “Computer Science, Secondary Education (Computer Science), and Professional Education
(Digital Technologies). At the same time, the vast majority of the surveyed teachers (93.3%) teach the
subject “Programming” (figure 4).</p>
        <p>The lecturers were asked to answer the question “How, in your opinion, is it advisable to organize
programming training for students of computer science specialties?” (figure 5). This question could be
answered with several options (several methods). The respondents preferred the option “Performing
individual tasks within the study of a particular subject” (90% of answers). This can probably be
explained by two factors. Firstly, the question did not specify the stage of programming study for which
we choose the learning method. Indeed, at the beginning of learning programming, it is advisable to
write code for small tasks to consolidate knowledge and skills. Another possible explanation for this
choice may be the “obsolescence” of the methodological system of teaching programming by lecturers
who are old and stick to the old methods of teaching programming. It is well known that a person who
has been working with one methodology for a long time has a hard time switching to new, progressive
teaching methods. The analysis of the rest of the lecturers’ answers to this question shows that they
also prefer to use the project-based method as part of their educational practice (73.3%) and as part of
the study of a particular subject (56.7%).</p>
        <p>The analysis of the survey results showed that only 10% of lecturers said that it is advisable to organize
programming training as a computer game development during the semester, but answering another
question, 33.3% of lecturers said that the development of computer games is the most interesting for
students (figure 6). Moreover, another 33.3% believe that the development of a web application is the
most interesting for students, and 30% - application software.</p>
        <p>In the theoretical basis of the study, we have demonstrated some similarities between the project-based
method and the end-to-end design method in the study of programming. We asked computer science
lecturers to evaluate the similarities between the project-based method and the end-to-end design
method. The results of their answers can be seen in figure 7. Indeed, these two learning technologies
have some similarities and many distinctive features.</p>
        <p>Lecturers were asked to evaluate the efectiveness of the proposed methods of teaching programming
(individual completion of laboratory tasks, individual work on a project, teamwork of students on a
project in the course of studying the discipline, end-to-end software design during the semester, flipped
learning) on a 5-point scale: 1 - low eficiency, 5 - high eficiency. We calculated the average score for
each methodology (figure 8).</p>
        <p>The chart above shows that flipped learning technology has the least impact on the efectiveness
of programming education. According to the respondents, the middle ground is occupied by
end-toend design of a software tool during the semester and individual project implementation. The most
successful methods for use in the study of programming by students of computer science specialties are
individual completion of practical work tasks and teamwork of students on a project in the process
of studying the subject. It is surprising, in our opinion, that lecturers prefer individual practical work.
However, this methodological approach may be appropriate at the beginning of learning programming.
The efectiveness of using team-based projects has been proven in many scientific and methodological
publications. Therefore, the choice of lecturers in favor of teamwork on the project is justified, as this
type of activity is an efective means of forming and developing students’ general and professional
competencies.</p>
        <p>In the questionnaire, we ofered several definitions of end-to-end design. The most successful
definition of end-to-end software design was the following: an integrated approach to software development
that covers all stages of the software life cycle from the initial idea to deployment, maintenance, and
improvement. This is exactly what we were able to implement in the developed course on learning C#
in the process of creating a computer game in the Unity environment and demonstrated on the example
of the development of “TopDownShooter”. Students already had a basic level of knowledge and skills in
programming in other languages and using editors to create media data.</p>
        <p>Confirmation that teaching programming based on end-to-end design is an interesting and promising
methodology can be found in some of the respondents’ opinions, which generally confirm the idea
of our study, namely: “...it is appropriate in the senior years, but not before the third year. First-year
students are not ready in terms of knowledge...”, ”A good approach for older students. First (especially)
and second year students will have a lot of problems (they do not have enough professional knowledge
and experience in general program development)”, ”...it is advisable to use end-to-end design after
studying programming technologies...”, ”A powerful tool for developing teamwork skills”, ”Given quality
support from the lecturer and student interest, it may well be an efective teaching method”.</p>
        <p>The analysis of the lecturers’ answers to the question “Evaluate the impact of end-to-end design in the
process of teaching programming on the formation and development of students’ competencies (1 - no
impact, 5 - very significant)” shows that in their opinion, end-to-end design has the greatest impact on
the development of students’ systematic thinking, teamwork, and project development and management
skills (figure 9). That is, lecturers do not consider end-to-end design as the main teaching method, but
at the same time, they highly appreciate its impact on the formation of students’ competencies. This
can be easily explained by the possibility of using end-to-end design in the study of programming only
in the older years of study, after students have mastered basic programming knowledge and skills.</p>
        <p>Experimental teaching of students using the proposed methodology was conducted at Ternopil
Volodymyr Hnatiuk National Pedagogical University and Mykhailo Dragomanov Ukrainian State
University. Students studied selective subjects during which they studied the process of creating a
computer game using the end-to-end design method. Experimental training took place in the 3-4th
year and was the final stage of learning programming by future IT professionals.</p>
        <p>During the course, the lecturer covered all aspects of using C# to design a game in the Unity
environment throughout the duration of the course. At the same time, during the practical classes,
students also performed end-to-end design of their game. After completing the course, students were
surveyed to get feedback. This feedback made it possible to make the latest improvements and ensure
that the TopDownShooter game would be interesting and enjoyable for players. According to the
students surveyed (figure 10), the balance of game dificulty was optimal.</p>
        <p>While working on developing a methodology for learning the C# programming language and using
it to create game projects in Unity, we needed to determine what programming knowledge and skills
are required for game development. According to the students, the required skills are: keyboard and
mouse input processing (character movement, shooting), scripting skills, knowledge of C# syntax, and
the ability to implement an event system (figure 11).</p>
        <p>An experimental check of the efectiveness of the proposed teaching methodology confirmed its
feasibility and practical value. The participants of the educational process were able to master the
basics of C# programming, get acquainted with the features of the Unity environment, and create
game projects on their own. The results of the experiment showed that the integration of gaming
technologies into teaching helps to increase student motivation, develop their technical and creative
skills, and improve their learning. The proposed methodology has proven to be efective in combining
theoretical knowledge with practical experience, which is key to training competent IT professionals.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusion</title>
      <p>The level of development of modern information technologies and their penetration into all spheres of
human activity determine the requirements for training of modern information technology specialists.
The training of such specialists should be carried out in accordance with the level of technology
development and ensure the formation of professional and key competencies in university graduates.
Programming plays a key role in the structure of professional training of future information technology
specialists. In our study, we proposed a methodology for teaching programming based on end-to-end
design. The expediency of using this approach can be explained by the need to develop students’
teamwork skills, the ability to implement projects in future professional activities, and an understanding
of the software design process from the idea of creation to the stage of its release and subsequent
support.</p>
      <p>The study proposed the idea of teaching students to design a computer game as part of an elective
course. To create a computer game, we consider it appropriate to use the Unity environment, as it is one
of the most popular engines for creating computer games. Its use creates conditions for students’ interest
in game development, and allows us to demonstrate the possibilities of using modern technologies in the
video industry. The developed course content includes the following topics: “ Unity Overview”, “Unity
C# Programming Basics”, “Designing and Creating Simple Game Mechanics”, “ Completing a Project”. It
is designed for six months of study, and therefore allows you to master the skills of end-to-end software
design in a short time.</p>
      <p>The end-to-end design method aims to teach students to work on complex, multi-stage tasks in
which they must think through solutions not only for individual stages, but also for how these solutions
will fit into the overall architecture and life cycle of the final product. Therefore, students’ mastery of
programming based on end-to-end software design contributes to a deeper understanding of not only
programming itself, but also the peculiarities of all stages of software development, implementation
and maintenance throughout its life cycle. Several stages are important for organizing the teaching of
programming in the process of end-to-end design. At the preparatory stage, the lecturer must prepare
a suficient number of areas (or names) of software tools to be developed, clearly describe possible
programming environments, languages, and technologies, prepare the content of the lecture material,
and assign tasks to the project stages. In lectures, the teacher presents some theoretical material and
demonstrates the application of this material to a specific stage of software design. In practical classes,
students work together in a group setting to work on the design stages of a selected software tool (in
our study, a computer game).</p>
      <p>The survey of teachers found that 43.3% of teachers develop one large project during the programming
course, and only 10% develop computer games during the course. However, developing one large project
does not mean end-to-end software development. It can be one large project that is part of a final
software product. Most lecturers prefer students to complete individual small tasks (90% of respondents)
or to complete small group projects as part of educational practice (73.3%) or as part of a particular
subject (56.7%). Respondents rate the impact of cross-cutting design on the efectiveness of programming
education quite highly (with a score of 3.45 out of 5). Moreover, the results of the survey show that
most of the programming teaching methods we have selected were highly rated Figure 8). Lecturers
highly appreciated the impact of the end-to-end design methodology in teaching programming on the
development of students’ systematic, logical, and abstract thinking, the formation of teamwork skills,
communication skills, and the ability to develop and manage projects.</p>
      <p>Thus, organized training is an efective propaedeutic before students’ practical training. The survey
of respondents confirmed that it is the development of computer games and web applications (33.3%
each) that arouse the greatest interest among students. The overwhelming majority of respondents
noted that the use of this methodology is most conducive to the development of such competencies
as teamwork and project development and management, which are important for future professional
activities along with actual programming knowledge. The positive aspect of this course design and
teaching is its practical focus on mastering programming language tools, and on the other hand, on
implementing projects that require independent search and study of additional material. By mastering
all stages of software development, students develop an understanding of software as a system.</p>
    </sec>
    <sec id="sec-6">
      <title>Author Contributions</title>
      <p>Conceptualization, Ihor A. Tverdohlib; methodology, Ihor A. Tverdohlib, Svitlana O. Leshchuk and
Tetiana V. Pidhorna; validation, Tetiana V.Pidhorna; software, Denys I. Huska and Albina A.Patyashina;
writing – original draft preparation, Svitlana O. Leshchuk and Denys I. Huska; writing—review and
editing, Ihor A. Tverdohlib. All authors have read and agreed to the published version of the manuscript.</p>
    </sec>
    <sec id="sec-7">
      <title>Funding</title>
      <p>This research received no external funding.</p>
    </sec>
    <sec id="sec-8">
      <title>Data Availability Statement</title>
    </sec>
    <sec id="sec-9">
      <title>Conflicts of Interest</title>
      <p>The authors declare no conflict of interest.</p>
      <p>No new data were created or analysed during this study. Data sharing is not applicable.</p>
    </sec>
    <sec id="sec-10">
      <title>Declaration on Generative AI</title>
      <p>The authors have not employed any Generative AI tools.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Y. S.</given-names>
            <surname>Ramskyi</surname>
          </string-name>
          ,
          <string-name>
            <surname>Y. O. B.</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I. A.</given-names>
            <surname>Tverdokhlib</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. Y.</given-names>
            <surname>Ramskyi</surname>
          </string-name>
          ,
          <article-title>The use of open online courses in a blended learning environment in the training of future information technology specialists</article-title>
          ,
          <source>Information Technologies and Learning Tools</source>
          <volume>84</volume>
          (
          <issue>4</issue>
          ) (
          <year>2021</year>
          )
          <fpage>138</fpage>
          -
          <lpage>157</lpage>
          . doi:
          <volume>10</volume>
          .33407/itlt.v84i4.
          <fpage>4431</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>A. M.</given-names>
            <surname>Striuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. O.</given-names>
            <surname>Semerikov</surname>
          </string-name>
          ,
          <article-title>Professional competencies of future software engineers in the software design: teaching techniques</article-title>
          ,
          <source>Journal of Physics: Conference Series</source>
          <volume>2288</volume>
          (
          <year>2022</year>
          )
          <article-title>012012</article-title>
          . doi:
          <volume>10</volume>
          .1088/
          <fpage>1742</fpage>
          -6596/2288/1/012012.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>A. M.</given-names>
            <surname>Striuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. O.</given-names>
            <surname>Semerikov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. M.</given-names>
            <surname>Shalatska</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V. P.</given-names>
            <surname>Holiver</surname>
          </string-name>
          ,
          <article-title>Software requirements engineering training: problematic questions</article-title>
          ,
          <source>in: Proceedings of the 4th Workshop for Young Scientists in Computer Science &amp; Software Engineering (CS&amp;SE@SW</source>
          <year>2021</year>
          ), volume
          <volume>3077</volume>
          ,
          <year>2022</year>
          , p.
          <fpage>3</fpage>
          -
          <lpage>11</lpage>
          . URL: https://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>3077</volume>
          /paper01.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>S.</given-names>
            <surname>Papadakis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. E.</given-names>
            <surname>Kiv</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. M.</given-names>
            <surname>Kravtsov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V. V.</given-names>
            <surname>Osadchyi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. V.</given-names>
            <surname>Marienko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O. P.</given-names>
            <surname>Pinchuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. P.</given-names>
            <surname>Shyshkina</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O. M.</given-names>
            <surname>Sokolyuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I. S.</given-names>
            <surname>Mintii</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. A.</given-names>
            <surname>Vakaliuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. M.</given-names>
            <surname>Striuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. O.</given-names>
            <surname>Semerikov</surname>
          </string-name>
          ,
          <article-title>Revolutionizing education: using computer simulation and cloud-based smart technology to facilitate successful open learning</article-title>
          , in: S. Papadakis (Ed.),
          <source>Joint Proceedings of the 10th Illia O. Teplytskyi Workshop on Computer Simulation in Education, and Workshop on Cloud-based Smart Technologies for Open Education (CoSinEi and CSTOE</source>
          <year>2022</year>
          )
          <article-title>co-located with ACNS Conference on Cloud and Immersive Technologies in Education (CITEd</article-title>
          <year>2022</year>
          ), Kyiv, Ukraine, December
          <volume>22</volume>
          ,
          <year>2022</year>
          , volume
          <volume>3358</volume>
          <source>of CEUR Workshop Proceedings, CEUR-WS.org</source>
          ,
          <year>2022</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>18</lpage>
          . URL: https://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>3358</volume>
          /paper00. pdf.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>E.</given-names>
            <surname>Vidal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Gacitúa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Diéguez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Cachero</surname>
          </string-name>
          ,
          <article-title>Correspondence analysis between programming teaching approaches</article-title>
          , in: XIV Jornadas Iberoamericanas de Ingenieria de
          <source>Software e Ingenieria del Conocimiento</source>
          ,
          <source>JIISIC</source>
          <year>2019</year>
          , Escuela Superior Politecnica de Chimborazo,
          <year>2019</year>
          , pp.
          <fpage>177</fpage>
          -
          <lpage>188</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>S. O.</given-names>
            <surname>Leshchuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y. S.</given-names>
            <surname>Ramskyi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. V.</given-names>
            <surname>Kotyk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. V.</given-names>
            <surname>Kutsiy</surname>
          </string-name>
          ,
          <article-title>Design a progressive web application to support student learning</article-title>
          , in: A. E. Kiv,
          <string-name>
            <given-names>S. O.</given-names>
            <surname>Semerikov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V. N.</given-names>
            <surname>Soloviev</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. M.</given-names>
            <surname>Striuk</surname>
          </string-name>
          (Eds.),
          <source>Proceedings of the 4th Workshop for Young Scientists in Computer Science &amp; Software Engineering (CS&amp;SE@SW</source>
          <year>2021</year>
          ), Virtual Event, Kryvyi Rih, Ukraine, December
          <volume>18</volume>
          ,
          <year>2021</year>
          , volume
          <volume>3077</volume>
          <source>of CEUR Workshop Proceedings, CEUR-WS.org</source>
          ,
          <year>2021</year>
          , pp.
          <fpage>83</fpage>
          -
          <lpage>96</lpage>
          . URL: https://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>3077</volume>
          /paper16. pdf.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>O. G.</given-names>
            <surname>Glazunova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O. V.</given-names>
            <surname>Parhomenko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V. I.</given-names>
            <surname>Korolchuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. V.</given-names>
            <surname>Voloshyna</surname>
          </string-name>
          ,
          <article-title>The efectiveness of GitHub cloud services for implementing a programming training project: students' point of view</article-title>
          ,
          <source>Journal of Physics: Conference Series</source>
          <year>1840</year>
          (
          <year>2021</year>
          )
          <article-title>012030</article-title>
          . doi:
          <volume>10</volume>
          .1088/
          <fpage>1742</fpage>
          -
          <lpage>6596</lpage>
          /
          <year>1840</year>
          /1/012030.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>I. A.</given-names>
            <surname>Tverdokhlib</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O. V.</given-names>
            <surname>Klochko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O. A.</given-names>
            <surname>Sharyhin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V. M.</given-names>
            <surname>Fedorets</surname>
          </string-name>
          ,
          <article-title>Collaborative learning in the system of training future information technologies specialists as an educational strategy for the fundamentalization of the sustainable development of education</article-title>
          , in: S. O.
          <string-name>
            <surname>Semerikov</surname>
            ,
            <given-names>A. M.</given-names>
          </string-name>
          <string-name>
            <surname>Striuk</surname>
            ,
            <given-names>M. V.</given-names>
          </string-name>
          <string-name>
            <surname>Marienko</surname>
            ,
            <given-names>O. P.</given-names>
          </string-name>
          Pinchuk (Eds.),
          <source>Proceedings of the 7th International Workshop on Augmented Reality in Education (AREdu</source>
          <year>2024</year>
          ), volume
          <volume>3918</volume>
          , CEUR-WS.org,
          <year>2024</year>
          , pp.
          <fpage>206</fpage>
          -
          <lpage>225</lpage>
          . URL: https://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>3918</volume>
          /paper131.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>S.</given-names>
            <surname>Korom</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Illés</surname>
          </string-name>
          ,
          <article-title>Systemic Thinking in Programming Education</article-title>
          , in: P.
          <string-name>
            <surname>K. Singh</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          <string-name>
            <surname>Singh</surname>
            ,
            <given-names>J. K.</given-names>
          </string-name>
          <string-name>
            <surname>Chhabra</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          <string-name>
            <surname>Illés</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          Verma (Eds.), Recent Innovations in Computing, Springer Singapore, Singapore,
          <year>2022</year>
          , pp.
          <fpage>645</fpage>
          -
          <lpage>657</lpage>
          . doi:
          <volume>10</volume>
          .1007/
          <fpage>978</fpage>
          -981-16-8892-8_
          <fpage>49</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>R. D.</given-names>
            <surname>Arnold</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. P.</given-names>
            <surname>Wade</surname>
          </string-name>
          ,
          <article-title>A Definition of Systems Thinking: A Systems Approach</article-title>
          , Procedia Computer Science
          <volume>44</volume>
          (
          <year>2015</year>
          )
          <fpage>669</fpage>
          -
          <lpage>678</lpage>
          . doi:
          <volume>10</volume>
          .1016/j.procs.
          <year>2015</year>
          .
          <volume>03</volume>
          .050.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>N.-G.</given-names>
            <surname>Barcan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Alexandrescu</surname>
          </string-name>
          , T. Turcanu,
          <article-title>Gamification of the Learning Process for Acquiring Logical Thinking in Programming</article-title>
          ,
          <source>in: 2024 23rd RoEduNet Conference: Networking in Education and Research (RoEduNet)</source>
          ,
          <year>2024</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>6</lpage>
          . doi:
          <volume>10</volume>
          .1109/RoEduNet64292.
          <year>2024</year>
          .
          <volume>10722314</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>N.</given-names>
            <surname>Balyk</surname>
          </string-name>
          , I. Grod,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Vasylenko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Oleksiuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Rogovchenko</surname>
          </string-name>
          ,
          <article-title>Project-based learning in a computer modelling course</article-title>
          ,
          <source>Journal of Physics: Conference Series</source>
          <year>1840</year>
          (
          <year>2021</year>
          )
          <article-title>012032</article-title>
          . doi:
          <volume>10</volume>
          .1088/
          <fpage>1742</fpage>
          -
          <lpage>6596</lpage>
          /
          <year>1840</year>
          /1/012032.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>R.</given-names>
            <surname>Ruslan</surname>
          </string-name>
          , L. Lu'mu,
          <string-name>
            <surname>M. M. Fakhri</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Ahmar</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Fadhilatunisa</surname>
          </string-name>
          ,
          <article-title>Efectiveness of the Flipped Project-Based Learning Model Based on Moodle LMS to Improve Student Communication and Problem-Solving Skills in Learning Programming</article-title>
          ,
          <source>Education Sciences</source>
          <volume>14</volume>
          (
          <year>2024</year>
          )
          <article-title>1021</article-title>
          . doi:
          <volume>10</volume>
          . 3390/educsci14091021.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>Z.</given-names>
            <surname>Nurbekova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Tolganbaiuly</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Tazabekova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Abildinova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Nurbekov</surname>
          </string-name>
          , Enhance Students'
          <article-title>Motivation to Learn Programming Through Projects</article-title>
          ,
          <source>International Journal of Emerging Technologies in Learning (iJET) 15</source>
          (
          <year>2020</year>
          ) pp.
          <fpage>133</fpage>
          -
          <lpage>144</lpage>
          . doi:
          <volume>10</volume>
          .3991/ijet.v15i21.
          <fpage>16537</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Glazunova</surname>
          </string-name>
          , Olena, Voloshyna, Tetiana, Korolchuk, Valentyna, Parhomenko, Oleksandra,
          <article-title>Cloudoriented environment for flipped learning of the future it specialists</article-title>
          ,
          <source>E3S Web Conf</source>
          .
          <volume>166</volume>
          (
          <year>2020</year>
          )
          <article-title>10014</article-title>
          . doi:
          <volume>10</volume>
          .1051/e3sconf/202016610014.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>P.</given-names>
            <surname>Srivastava</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. K.</given-names>
            <surname>Gonugondla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Lim</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Choi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Adve</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. S.</given-names>
            <surname>Kim</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Shanbhag</surname>
          </string-name>
          ,
          <string-name>
            <surname>PROMISE:</surname>
          </string-name>
          <article-title>An End-to-End Design of a Programmable Mixed-Signal Accelerator for MachineLearning Algorithms</article-title>
          , in: 2018
          <source>ACM/IEEE 45th Annual International Symposium on Computer Architecture (ISCA)</source>
          ,
          <year>2018</year>
          , pp.
          <fpage>43</fpage>
          -
          <lpage>56</lpage>
          . doi:
          <volume>10</volume>
          .1109/ISCA.
          <year>2018</year>
          .
          <volume>00015</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>K.</given-names>
            <surname>Winkle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Senft</surname>
          </string-name>
          , S. Lemaignan,
          <article-title>LEADOR: A Method for End-To-End Participatory Design of Autonomous Social Robots</article-title>
          ,
          <source>Frontiers in Robotics and AI</source>
          <volume>8</volume>
          (
          <year>2021</year>
          ). doi:
          <volume>10</volume>
          .3389/frobt.
          <year>2021</year>
          .
          <volume>704119</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>C.</given-names>
            <surname>Orhei</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Vert</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Mocofan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Vasiu</surname>
          </string-name>
          ,
          <string-name>
            <surname>End-</surname>
          </string-name>
          To-
          <article-title>End Computer Vision Framework: An Open-Source Platform for Research and Education</article-title>
          ,
          <source>Sensors</source>
          <volume>21</volume>
          (
          <year>2021</year>
          ). URL: https://www.mdpi.com/1424-8220/ 21/11/3691. doi:
          <volume>10</volume>
          .3390/s21113691.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>N. M.</given-names>
            <surname>Nguyen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Ray</surname>
          </string-name>
          ,
          <string-name>
            <surname>End-</surname>
          </string-name>
          to-
          <source>end Learning of Convolutional Neural Net and Dynamic Programming for Left Ventricle Segmentation</source>
          ,
          <year>2019</year>
          . URL: https://arxiv.org/abs/
          <year>1812</year>
          .00328. arXiv:
          <year>1812</year>
          .00328.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>D.</given-names>
            <surname>Magda</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Gardner-McCune</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kulkarni</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Jimenez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Chu</surname>
          </string-name>
          ,
          <article-title>Supporting End-to-End Coding</article-title>
          and
          <article-title>Use of Arduinos in a Formal Classroom Environment , in: 2023 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)</article-title>
          ,
          <source>IEEE Computer Society</source>
          , Los Alamitos, CA, USA,
          <year>2023</year>
          , pp.
          <fpage>184</fpage>
          -
          <lpage>188</lpage>
          . doi:
          <volume>10</volume>
          .1109/VL-HCC57772.
          <year>2023</year>
          .
          <volume>00030</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>S. S.</given-names>
            <surname>Korniienko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. V.</given-names>
            <surname>Zahorodko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. M.</given-names>
            <surname>Striuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. I.</given-names>
            <surname>Kupin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. O.</given-names>
            <surname>Semerikov</surname>
          </string-name>
          ,
          <article-title>A systematic review of gamification in software engineering education</article-title>
          , in: S. O.
          <string-name>
            <surname>Semerikov</surname>
            ,
            <given-names>A. M.</given-names>
          </string-name>
          <string-name>
            <surname>Striuk</surname>
          </string-name>
          (Eds.),
          <source>Proceedings of the 6th International Workshop on Augmented Reality in Education (AREdu</source>
          <year>2023</year>
          ), volume
          <volume>3844</volume>
          , CEUR-WS.org,
          <year>2023</year>
          , pp.
          <fpage>83</fpage>
          -
          <lpage>95</lpage>
          . URL: https://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>3844</volume>
          /paper04.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>M.</given-names>
            <surname>Frydenberg</surname>
          </string-name>
          ,
          <article-title>Creating Games as Authentic Learning in the Information Technology Classroom</article-title>
          .,
          <source>International Association for Development of the Information Society</source>
          (
          <year>2015</year>
          ). URL: https://api. semanticscholar.org/CorpusID:62978112.
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>L.</given-names>
            <surname>Végh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Stofová</surname>
          </string-name>
          ,
          <article-title>Learning object-oriented programming by creating games, eLearning and Software for Education (</article-title>
          <year>2019</year>
          ). URL: https://api.semanticscholar.org/CorpusID:257195841.
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <surname>Google</surname>
            <given-names>Sheets: Online</given-names>
          </string-name>
          <string-name>
            <surname>Spreadsheets</surname>
          </string-name>
          &amp;
          <article-title>Templates | Google Workspace - workspace</article-title>
          .google.com, https://workspace.google.com/products/sheets/,
          <year>2024</year>
          . [Accesssed 20-
          <fpage>12</fpage>
          -2024].
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>D.</given-names>
            <surname>Kolb</surname>
          </string-name>
          ,
          <article-title>Experiential Learning: Experience As The Source Of Learning And Development</article-title>
          , volume
          <volume>1</volume>
          ,
          <year>1984</year>
          . URL: https://www.researchgate.net/publication/235701029_Experiential_Learning_ Experience_As_The_Source_Of_Learning_And_Development.
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>J.</given-names>
            <surname>Sweller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. J. G.</given-names>
            <surname>Van Merrienboer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Paas</surname>
          </string-name>
          ,
          <source>Cognitive Architecture and Instructional Design: 20 Years Later, Educational Psychology Review</source>
          <volume>31</volume>
          (
          <year>2019</year>
          )
          <fpage>261</fpage>
          -
          <lpage>292</lpage>
          . doi:
          <volume>10</volume>
          .1007/ s10648-019-09465-5.
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>G.</given-names>
            <surname>Dogara</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Saud</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Kamin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Hamid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Nordin</surname>
          </string-name>
          ,
          <source>Developing Soft Skills through Project Based Learning in Technical and Vocational Institutions</source>
          ,
          <source>International Journal of Engineering and Advanced Technology</source>
          <volume>9</volume>
          (
          <year>2019</year>
          )
          <fpage>2842</fpage>
          -
          <lpage>2847</lpage>
          . doi:
          <volume>10</volume>
          .35940/ijeat.A9803.109119.
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <surname>End-</surname>
          </string-name>
          to-
          <source>End Software Development Services: Process &amp; Benefits - integrio.net</source>
          , https://integrio. net/blog/end-to
          <article-title>-end-software-development-</article-title>
          <string-name>
            <surname>services</surname>
          </string-name>
          ,
          <year>2024</year>
          . [Accessed 20-
          <fpage>12</fpage>
          -2024].
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>J.</given-names>
            <surname>Socha</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Norton</surname>
          </string-name>
          ,
          <article-title>Assembly Language for the PC, Brady programming library</article-title>
          ,
          <source>Brady</source>
          ,
          <year>1992</year>
          . URL: https://books.google.com.ua/books?id=
          <fpage>NqZ9QgAACAAJ</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>H.</given-names>
            <surname>Schildt</surname>
          </string-name>
          ,
          <article-title>Java: A Beginner's Guide, Ninth Edition</article-title>
          ,
          <string-name>
            <surname>McGraw Hill</surname>
            <given-names>LLC</given-names>
          </string-name>
          ,
          <year>2022</year>
          . URL: https://books. google.com.ua/books?id=YGJVEAAAQBAJ.
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>Unity</given-names>
            <surname>Real-Time Development</surname>
          </string-name>
          <article-title>Platform | 3D, 2D, VR &amp; AR Engine - unity</article-title>
          .com, https://unity.com/,
          <year>2024</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>