Введение 2
1 Обзор 4
1.1 Обзор сервисов по обучению программированию на Java 4
1.2 Другие языки программирования 8
2 Реализация 15
2.1 Требование к функционалу 15
2.2 Инструменты разработки 16
2.2.1 Spring 17
2.2.2 Hibernate 17
2.2.3 Apache Maven 18
2.2.4 OpenHTF 18
2.2.5 PostgreSQL 18
2.2.6 ReactJS 19
2.3 Описание разработки 22
2.3.1 Переработка старого кода 22
2.3.2 Разработка нового функционала 23
2.3.2.1 Регистрация и авторизация 23
2.3.2.2 Хранение уровня в базе данных 25
2.3.2.3 Редактор уровней 28
2.3.3 Разработка клиентской части 40
2.3.3.1 Запросы к серверу 40
2.3.3.2 Маршрутизация 42
Заключение 45
Глоссарий 47
Список литературы
Подход к обучению через игры - немолодая педагогическая концепция. Во все времена взрослые старались донести информацию до детей через любимую, понятную и соответствующую возрасту форму: сказки, потешки, басни, существующие в качестве литературного формата многие столетия, выполняли для родителей ту же функцию, что и для современных педагогов — обучающие игры. С течением времени меняются лишь игровые средства, переходя от односторонних бумажных носителей ко всё более интерактивным аудиовизуальным, а затем и к цифровым.[3] Игровой подход к обучению помогает существенно облегчить изучения синтаксиса языков программирования. Существует несколько успешных проектов для разных языков программирования, которые используют его, однако большинство из них представляют собой игры с конечной историей и ограниченным количеством уровней. Одним из немаловажных инструментов для обучения программирования детей является редактор уровней, который помогает детям развивать креативное мышление и учит проектировать и разрабатывать свои продукты. [4]
По данным ресурса StackOverflow.com на 2018 год, 86,7% пользователей ресурса изучали программирование самостоятельно, а 11.9% пользователей являются дошкольниками и школьниками младших или средних классов.[5] По сравнению с показателями за 2016 год, количество респондентов увеличилось на 17.6%, что говорит о повышении спроса на сервисы по самообучению программированию. [6]
На сегодняшний момент язык Java является одним из самых распространенных и популярных языков программирования. Java является объектно-ориентированным языком и поддерживает полиморфизм, наследование, статическую типизацию. Объектно-ориентированный подход позволяет решить задачи по построению крупных, но в тоже время гибких, масштабируемых и расширяемых приложений. [7]
Одними из самых популярных игровых обучающих онлайн приложений для обучения синтаксису Java являются JavaRush[8] и CodinGame[9], На JavaRush материал дается в рамках некоторой истории из игрового сюжета, с которой связывается задание. Но выполнение задания не вызывает никакой интерактивной реакции в пользовательском интерфейсе, а также пользователю дается для прочтения большой объем материала. У CodinGame есть определенный сюжет и связанные с ним задания, и их графическая интерпретация, но она не связана в реальном времени с логикой кода, который пишет обучающийся. Также ни один из этих продуктов не имеет встроенного редактора уровней.
В 2018 году в рамках статьи [10] было разработано веб-приложение JavaWarrior для обучения языку программирования Java с исполнением кода в реальном времени. Однако приложение имело ряд уязвимостей и не имело возможности создания/редактирования уровней, что делает его не актуальным на момент написания текущей дипломной работы.
Таким образом, целью настоящей дипломной работы является разработка встроенного редактора уровней для вэб-приложения JavaWarrior.
Для достижения поставленной цели были решены следующие задачи:
1. Анализ существующих онлайн сервисов по изучению языков программирования
2. Изучение существующих решений по созданию редактора уровней
3. Выбор наиболее оптимального решения и внедрение его в систему JavaWarror
4. Написание программного модуля.
В ходе выполнения настоящей дипломной работы был доработан сервис по
обучению программирования на языке Java под название JavaWarrior. Были
выполнены следующие улучшения:
1. Переработка старого кода
2. Добавление авторизации и регистрации
3. Добавление многофункционального редактора уровней
Редактор имеет следующие возможности:
Возможность задавать параметры:
b. Уровня:
i. Изображение заднего фона уровня
ii. Название уровня
iii. Описание уровня
iv. Расположение объектов
v. Список доступных пользователю методов
c. Объектов на уровне:
i. Размер объекта
ii. Тип объекта:
1. Игровой персонаж
2. Противник ближнего боя
3. Противник дальнего боя
4. Препятствие наносящее урон(например, капкан)
5. Пустая клетка
iii. Изображение объекта
iv. Количество жизней
v. Урон
45Таким образом, все поставленные перед дипломной работой задачи полностью
выполнены.
Работа доступна в открытом доступе по ссылке:
http://gititis.kpfu.ru/Hajrullin/JavaWarrior
Орехов Г.С. ИТ в современном мире: возможности, задачи, проблемы,
перспективы [Текст] / Орехов Григорий Сергеевич, Пученкова Валерия
Андреевна /// Современные материалы, техника и технологии. - 2019. -
№22 - С. 175
2) С какого возраста нужно учить детей программированию? / Rubase.
Новостной блог [Электронный ресурс]. – https://rb.ru/opinion/rebenok-it/
3) Как превратить компьютерные игры в урок. / NewToNew. Новостной блог
[Электронный ресурс]. –
https://newtonew.com/school/videogames-as-school-lessons
4) Chi-Cheng Chang Is game-based learning better in flow experience and various
types of cognitive load than non-game-based learning? Perspective from
multimedia and media richness [Текст] / Chi-Cheng Chang, Chaoyun Liang,
Pao-Nan Chou, Guan-You Lin /// Computers in Human Behavior. - 2017. -
№71 - C. 218-227
5) Developers Survey results 2018 / StackOverflow. Система вопросов и
ответов о программировании [Электронный ресурс]. -
https://insights.stackoverflow.com/survey/2018/#education
6) Developers Survey results 2016 / StackOverflow. Система вопросов и
ответов о программировании [Электронный ресурс]. -
https://insights.stackoverflow.com/survey/2016#developer-profile-education
7) Введение в Java / Metamit. Сайт о программировании [Электронный
ресурс]. - https://metanit.com/java/tutorial/1.1.php
8) JavaRush. Официальная страница [Электронный ресурс]. -
https://javarush.ru/
9) CodinGame.Официальная страница [Электронный ресурс]. -
https://www.codingame.com/
4910) Нуруллина Л.Р. Разработка игрового web-приложения для обучения
языку программирования java с исполнением кода в реальном времени
[Текст] / Л.Р. Нуруллина, Д.Д. Ильясов, А.И. Хайруллин, Р.Р.
Мирхусаинов, М.Р. Сидиков, М.М. Абрамский, А.Р.Ахметшин ///
Российский научный электронный журнал. - 2018 - №21 - C. 3-4
11) Codecademy. Программирование от простого к сложному /
VseObuch.club. Открытая библиотека статей на тему образования.
[Электронный ресурс]. -
http://vseobuch.club/resources/portals/codecademy-programmirovanie-ot-jele
mentarnogo-k-slozhnomu.html
12) LiveEdu.tv. Официальная страница [Электронный ресурс]. -
https://www.education-ecosystem.com
13) Freecodegame. Практическая онлайн-школа программирования для
активистов. / Теплица социальных технологий. Открытая библиотека
статей на тему новых технологий [Электронный ресурс]. -
https://te-st.ru/2016/10/27/freecodecamp/
14) Exercism.io. Официальная страница [Электронный ресурс]. -
https://exercism.io
15) Ruby Warrior. Официальная страница [Электронный ресурс]. -
https://www.bloc.io/ruby-warrior#/
16) GeekBrains. Официальная страница [Электронный ресурс]. -
https://geekbrains.ru
17) CheckIO. Изучение языка программирования Python. / ToWave.
Электронная газета [Электронный ресурс]. -
http://www.towave.ru/content/checkio-resurs-dlya-izucheniya-yazyka-program
mirovaniya-python.html
5018) Spring 3 для профессионалов [Текст]: Учебное пособие/ Кларенс Хо,
Роб Харроп, 2012. — 880 с
19) Java-Runtime-Compiler / Репозиторий библиотеки [Электронный
ресурс]. - https://github.com/OpenHFT/Java-Runtime-Compiler
20) Что такое PostgreSQL? / Официальная страница продукта
[ Электронный ресурс ]. -
http://www.sai.msu.su/~megera/postgres/talks/what_is_postgresql.html
21) 6. Hibernate: A Developer's Notebook [Текст]: Учебное пособие/ Elliott,
James 2004, Май 10. — 190 c.
22) 7. Что такое Maven и для чего нужен / Официальный сайт Apache Maven
Project [Электронный ресурс]. - http://www.apache-maven.ru
23) React.JS / Официальная страница продукта [Электронный ресурс]. -
https://reactjs.org/
24) React: создание простых в обслуживании, быстродействующих
компонентов пользовательского интерфейса / IBM. Официальная
страница [Электронный
ресурс].-https://www.ibm.com/developerworks/ru/library/wa-react-intro/index.
html
25) Introduction to JSON Web Tokens. / JWT. Официальный сайт
[Электронный ресурс]. – https://jwt.io/introduction/
26) The DAO Pattern in Java / Официальная документация Spring
Framework [Электронный ресурс]. -
https://www.baeldung.com/java-dao-pattern
27) Spring Data / Официальная документация Spring Framework
[Электронный ресурс]. - https://spring.io/projects/spring-data
5128) Обобщенный Model-View-Controller / Открытая библиотека статей на
тему новых технологий [Электронный ресурс]. -
http://rsdn.org/article/patterns/generic-mvc.xml
29) Академик. Электронный словарь терминов. [Электронный ресурс]. -
https://dic.academic.ru/
30) Глоссарий интернет маркетинга. [Электронный ресурс]. -
https://glossary-internet.ru/terms/eng/