В ноябре 2013 г. распоряжением Правительства РФ утверждена «Стратегия развития отрасли информационных технологий в Российской Федерации на 2014–2020 гг. и на перспективу до 2025 года». В стратегии отмечается, что информационные технологии (IT) с каждым годом оказывают все большее влияние, как на экономику, так и на повседневную жизнь людей. Качественное развитие большинства отраслей экономики и государственного управления связано с внедрением IT. Вместе с тем развитие самой IT-сферы тормозится дефицитом кадров – стране нужны программисты, инженеры, системные администраторы, разработчики баз данных, учителя информатики, а также специалисты, способные управлять процессом разработки и реализации IT-проектов, руководить научными исследованиями в IT-сфере, реализовывать себя в педагогической деятельности в системе высшего IT-образования [1]. Таким образом, перед педагогическим сообществом поставлена новая задача – формирование готовности выпускников вузов к участию в проектной и научно-исследовательской деятельности в IT-сфере.
Анализируя работы [2; 3], можно сделать вывод о том, что проблема привлечения студентов вузов к научно-исследовательской деятельности (НИД) не является новой.
Разработаны и внедрены в учебный процесс вузов различные элементы НИД студентов, способствующие развитию их творческой активности: использование задач частично-поискового, проектного и исследовательского типа на аудиторных занятиях (семинарах, практических и лабораторных); вовлечение студентов в различные формы внеаудиторной НИД (написание рефератов; подготовка докладов или сообщений; написание научных статей; участие в олимпиадах, конкурсах, проектах, хакатонах, конференциях; подготовка и защита курсовых и выпускных квалификационных работ); использование коллективных форм НИД студентов (привлечение студентов к участию в работе студенческих научно-практических семинаров, научных сообществ студентов и аспирантов, в творческих/ проектно-конструкторских/ научно-исследовательских коллективах) [4-6].
В данной статье мы рассмотрим опыт привлечения представителей компании «Эпам Систэмз» к организации НИД студентов направления 02.03.03 «Математическое обеспечение и администрирование информационных систем» факультета компьютерных наук и информационных технологий (КНиИТ) Саратовского национального исследовательского государственного университета имени Н.Г. Чернышевского (СГУ). Следует отметить, что сотрудничество факультета КНиИТ с данной компанией носит многолетний, разносторонний и плодотворный характер [7].
Более подробно мы остановимся на результатах совместного руководства курсовыми и выпускными квалификационными работами студентов, когда научным руководителем студенческой работы назначается преподаватель вуза, а консультантом – сотрудник IT-компании. Такое совместное руководство оказывается весьма успешным: преподаватели вуза имеют огромный багаж теоретических знаний в области математики, информатики и программирования, теории и методики преподавания компьютерных наук, а представители IT-компаний обладают большим практическим опытом в разработке и реализации IT-проектов. В результате студенческие проекты, выполненные в рамках курсовых и выпускных квалификационных работ, с одной стороны, имеют сложную с точки зрения промышленной разработки программного обеспечения (ПО) теоретическую и методическую базу, с другой стороны, являются готовыми приложениями, отвечающими современным требованиям к качественному ПО.
Первым таким проектом стало создание обучающей компьютерной игры «Логические головоломки» для портала обучения информатике и программированию (http://school.sgu.ru) [8]. Данный портал выступает технической площадкой для реализации очно-дистанционных мероприятий Центра непрерывной подготовки IT-специалистов (ЦНИТ).
ЦНИТ работает со школьниками всех возрастов, со студентами и учителями информатики. Для младших и даже для средних школьников очень важно, чтобы занятия вызывали у них интерес. Такие соображения, как «нужно заниматься, чтобы поступить в тот вуз, который я хочу», для них пока не работают. И, конечно, им гораздо интереснее решать задачи, представленные в виде игры. К 2014 г. в ЦНИТ уже были разработаны и активно использовались такие учебные курсы, как «Занимательная информатика для младших школьников», «Теория графов в занимательных историях», «Комбинаторика в занимательных историях», игры-квесты про приключения принца Джавы и про остров сокровищ. На повестке дня стояла задача реализации данных курсов в интерактивной форме. Так родилась идея разработки обучающей компьютерной игры «Логические головоломки», и встраивания её в функционал портала обучения информатике и программирования.
С программной точки зрения игра представляет собой веб-приложение с трехуровневой архитектурой «клиент-сервер». Данная архитектура предполагает наличие следующих компонентов: клиентское приложение, подключенное к серверу приложений, который, в свою очередь, подключен к серверу базы данных. Для разработки клиентской части игры использовались следующие IT-технологии: HTML, CSS, JavaScript. Для разработки серверной части – PHP, MySQL. Для обмена данными между клиентской и серверной частями в приложении используются AJAX-запросы.
Находятся в разработке и другие проекты по созданию обучающих компьютерных игр для школьников, в которых используются материалы кружков и мероприятий, разработанных заведующей кафедрой информатики и программирования факультета КНиИТ М.В. Огневой.
Еще один проект, который на данный момент внедряется в учебный процесс факультета КНиИТ – это веб-приложение для обучения и контроля знаний по теме «Алгоритмы на графах». Кроме теоретической части и подробного разбора алгоритмов в приложение встроен визуализатор, который дает возможность пошагового наглядного представления работы алгоритмов, а также тестовая система. Функционал приложения позволяет добавлять теоретические материалы, тесты, отслеживать успеваемость обучающихся. Данное приложение разрабатывалось с использованием технологии ASP.NET Core. При создании приложения применялся подход к разработке ПО через тестирование: приложение тестировалось модульными тестами с использованием фреймворка Moq, который позволяет эмулировать поведение объектов; интеграционные тесты использовались для проверки корректности работы всей системы. Данное веб-приложение может быть использовано при подготовке школьников и студентов к олимпиадам по информатике и программированию, а также при проведении таких дисциплин, как «Информатика и программирование», «Структуры данных и алгоритмы», «Теория графов».
Следует отметить, что во время прохождения производственных практик в IT-компаниях студенты создают веб-приложения, которые могут использоваться для решения серьезных прикладных задач, связанных с теорией графов. Однако «внутри» таких приложений заложены только самые простые алгоритмы на графах, например обход в глубину или в ширину. А в ходе изучения дисциплины «Теория графов» студенты изучают различные, в том числе и достаточно сложные алгоритмы для решения практико-ориентированных задач, учатся проводить анализ их времени выполнения, выполнять сравнительную характеристику алгоритмов, но реализуют данные алгоритмы в виде консольных приложений, входными данными для которых являются небольшие учебные примеры графов. Чтобы объединить разработку веб-приложений с использованием «сложных» алгоритмов, появилась целая серия курсовых работ, руководителем каждой из которых являлся сотрудник кафедры информатики и программирования, а консультантом – сотрудник компании «Эпам Системз». В качестве примера приведем постановку задачи одной из таких работ:
«Имеется сеть городов, связанных различными маршрутами транспортировки грузов (доставки). Каждый маршрут однонаправлен, между каждой парой городов может быть множество вариантов доставки. По каждому маршруту можно получить информацию о пропускной способности и о стоимости доставки через него. Вся информация о числе городов, о маршрутах между ними, об их пропускной способности и стоимости должна быть получена через REST-сервис. Необходимо: построить максимальный поток минимальной стоимости между двумя любыми городами. Задачу выполнить несколькими способами, реализовав различные алгоритмы и выполнив их сравнительный анализ. В качестве средства визуализации задачи создать веб-приложение».
В ходе выполнения подобных работ результаты НИД (подбор, изучение, реализация и сравнительный анализ алгоритмов) используются для создания эффективно работающего веб-приложения.
Кроме проектов, связанных с «классической» теорией графов, в качестве курсовых и выпускных квалификационных работ выполняются проекты, связанные с такими важными для решения прикладных задач и теоретически сложными темами, как «Нейронные сети», «Распознавание изображений», «Сжатие/восстановление изображений», «Кластеризация данных социальных сетей».
Важно отметить, что при выполнении курсовых и выпускных квалификационных работ используется не только индивидуальная, но и командная работа над проектом. Так при разработке обучающей компьютерной игры «Логические головоломки» были задействованы две студентки 4 курса – С.Е. Дроздова и К.И. Макарова При этом первая отвечала за разработку клиентской части приложения, вторая – за разработку серверной части приложения и встраивания игры в функционал портала обучения информатики и программирования.
В следующем проекте – разработка веб-приложения «Система учета товаров на складе строительного магазина» – были задействованы студент 4 курса В.В. Артемов и студентка 3 курса М.А. Лукашова [9]. Реализация данного проекта велась по всем правилам промышленной разработки ПО с распределением ролей и зон ответственности: заказчик проекта – директора магазина «Мир дерева» в г. Саратове; руководитель проекта – Е.В. Кудрина, доцент кафедры информатики и программирования; технический консультант – И.А. Борзов, ведущий инженер по качеству компании «Эпам Систэмз», доцент базовой кафедры математического обеспечения вычислительных комплексов и информационных систем; менеджер проекта и разработчик – В.В. Артемов, тестировщик – М.А. Лукашова. Рассмотрим этапы работы над проектом.
На первом этапе был произведен разговор с заказчиком, на основе которого был создан документ, описывающий функциональные и нефункциональные требования к приложению. Основными функциональными требованиями являются: просмотр товаров на складе, просмотр предыдущих торговых дней, создание нового рабочего дня, редактирование рабочего дня, оформление списка прихода и расхода товаров на складе, просмотр журналов прихода и расхода. К основным нефункциональным требованиям относятся: удобство, безопасность и надёжность использования приложения.
Далее был разработан тест-план. Он описывает и регламентирует перечень работ по тестированию, а также соответствующие техники, подходы, стратегию, области ответственности, ресурсы, расписание и ключевые даты.
После обсуждения требований к проекту разработчик приступил к непосредственной реализации клиент-серверного приложения с трёхслойной архитектурой. Для разработки был выбран язык программирования Java и среда разработки IntelliJ IDEA. В качестве базы данных использовалась PostgreSQL, для автоматизации сборки проектов – фреймворк Maven. В качестве веб-сервера для запуска веб-приложения был выбран контейнер сервлетов Tomcat. Также был использован фреймворк Spring, в частности такие его модули, как Spring DAO, Spring Web, Spring MVC, Spring Data JPA, Spring Security. Для разработки клиентской части приложения были использованы такие технологии, как HTML5, CSS3, jQuery и фреймворк Bootstrap. Пользовательский интерфейс создавался на основе технология JSP. Для динамической обработки данных, полученных от контроллера, использовалась технология JSTL.
В ходе разработки приложение неоднократно тестировалось. Вся информация о результатах тестирования была полностью доступна разработчику и использовалась для устранения ошибок и доработки проекта. В итоге веб-приложение получилось шаблонным, и его можно применять не только для учета товаров строительного магазина, но и для учета других видов товаров в других магазинах.
Существуют проекты, которые выполняются на протяжении нескольких лет: в ходе обучения студента в магистратуре, а затем и при обучении в аспирантуре [10; 11]. В рамках одного из таких проектов проводится исследование и оптимизация алгоритмов кластеризации больших разреженных графов для анализа данных, представленных в социальных сетях [12].
В данной статье мы рассказали лишь о немногих проектах, выполненных при совместном руководстве курсовыми и выпускными квалификационными работами студентов по направлению 02.03.03 «Математическое обеспечение и администрирование информационных систем» преподавателями кафедры информатики и программирования факультета КНиИТ СГУ и представителями компании «Эпам Системз». Аналогичная практика существует и на других кафедрах факультета. Так, на кафедре математической кибернетики и компьютерных наук, отвечающих за подготовку студентов по направлениям 02.03.02 «Фундаментальная информатика и информационные технологии», 09.03.04 «Программная инженерия», в роли консультантов с производства привлекаются ведущие специалисты компаний «Мирантис-ИТ» и «ГридДинамикс» [13], на кафедре теоретические основы компьютерной безопасности и криптографии, отвечающую за подготовку студентов по специальности 10.05.01 «Компьютерная безопасность», – ведущие специалисты «Национального центра по борьбе с преступлениями в сфере высоких технологий» [14].
В заключение следует отметить, что привлечение представителей IT-компаний к организации НИД студентов на факультете КНиИТ позволило решить ряд задач: объединить усилия педагогов факультета КНиИТ СГУ и представителей ведущих IT-компаний региона в подготовке высококвалифицированных IT-специалистов, готовых к участию в НИД в IT-сфере, и, как следствие, повысить уровень курсовых и выпускных квалификационных работ на факультете; сформировать у выпускников факультета КНиИТ навыки командной работы над IT-проектами, так необходимые в их будущей профессиональной деятельности, и, как следствие, повысить конкурентоспособность выпускников факультета КНиИТ на рынке труда.
Примечательным является то, что все студенты, о проектах которых шла речь в данной статье, в настоящее время являются сотрудниками различных IT-компаний региона, занимающихся промышленной разработкой ПО на стыке современных достижений науки, техники и технологий.