Проектирование содержания обучения при подготовке студентов вуза к разработке программного обеспечения

УДК 378.1

А. И. Попов, Д. В. Поляков

ПРОЕКТИРОВАНИЕ СОДЕРЖАНИЯ ОБУЧЕНИЯ ПРИ ПОДГОТОВКЕ СТУДЕНТОВ ВУЗА К РАЗРАБОТКЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Проанализированы тенденции развития рынка информационно-коммуникационных технологий, определено содержание специальных профессиональных компетенций специалистов в области программирования и обоснована необходимость усиления творческой составляющей образовательной деятельности. Сформулированы требования к включаемому в образовательную программу языку программирования; даны рекомендации по формированию содержания обучения, обеспечивающего творческую подготовку к решению задач алгоритмизации и создания архитектуры программного обеспечения. Результаты проведенных исследований могут быть использованы для повышения качества образовательной деятельности в вузе и стимулирования творческой активности обучающихся.

Ключевые слова: творческая деятельность, содержание обучения, язык программирования, алгоритмизация, архитектура программного обеспечения.

Динамически меняющийся спрос на рынке труда, обусловленный как интенсивным развитием инновационных отраслей народного хозяйства, так и процессами перераспределения трудовых ресурсов в рамках страны и региона и возрастанием экономических потребностей людей, предопределяет в качестве приоритетной задачи системе высшего профессионального образования подготовку бакалавров широкого профиля. Такие выпускники вуза, обладающие сформированными на высоком уровне общекультурными и общепрофессиональными компетенциями, при окончательном выборе области профессиональной деятельности и потенциального работодателя смогут в минимальные сроки приобрести дополнительные узкоспециализированные профессиональные компетенции, необходимые для успешного выполнения профессиональных задач и карьерного роста в краткосрочном периоде.

Особые требования предъявляются к подготовке специалистов в области информационных технологий, основы информационной культуры которых закладываются в школьном возрасте и интенсивно развиваются в вузе [1, 2]. С одной стороны, конкурентоспособный специалист в данной сфере должен обладать высококачественной фундаментальной подготовкой, с другой - готовностью к саморазвитию и освоению новых направлений деятельности вследствие высокой скорости развития технологий отрасли, требующих постоянного повышения квалификации.

Реалии экономической жизни таковы, что уже на старших курсах вуза сделавшие осознанный профессиональный выбор обучающиеся по информационным направлениям подготовки начинают трудовую деятельность по специальности. Этому способствует и дефицит кадров на региональном рынке труда разработчиков программного обеспечения. Ведущие компании страны все больше заинтересованы в развитии своей деятельности вдали от крупных экономических центов вследствие более низких издержек на производство программной продукции. Кроме того, процессу переноса производства программного обеспечения (ПО) в регионы в немалой части способствует специфика конечного продукта, позволяющая без особых капитальных вложений обеспечить совместную работу над одним проектом множества специалистов вне зависимости от их географического расположения.

В этих условиях заинтересованным студентам в рамках вариативной части образовательной программы вузы должны предоставить возможность уже на этапе обучения не только сформироваться как бакалавру широкого профиля, но и приобрести специальные интегрированные компетенции [3], определенные потенциальными работодателями. На основе изучения потребностей IT-компаний, действующих на рынке информационно-коммуникационных технологий Тамбовской области, мы пришли к выводу, что одним из востребованных направлений их деятельности является разработка ПО, что предопределяет потребность проектирования содержания обучения и методики формирования готовности обучающихся к такой деятельности.

Одним из основных вопросов при проектировании содержания обучения программистов является выбор языка программирования. В условиях ограниченного количества выделенных зачетных единиц на учебные дисциплины, связанных с изучением языков программирования, проблематично на высоком профессиональном уровне освоить несколько из них. Поясним, что под высоким профессиональном уровнем мы понимаем не только наличие у обучающегося знаний, умений и навыков программирования на каком-либо языке, но и способность максимально быстро писать программные продукты, отвечающие требованиям заказчика и имеющие минимальное время работы. Одной из причин слабого освоения нескольких языков программирования является необходимость тратить много времени на изучение их синтаксиса.

Данная проблема имеет существенное значение для развития системы образования, которое должно оптимально учитывать требования потребителей. А современные реалии рынка труда в сфере информационных технологий часто требуют от специалиста в области разработки ПО знания множества технологий разработки и языков программирования. При этом количество освоенных специалистом на высоком уровне языков программирования пропорционально его «стоимости» на рынке труда. Указанные обстоятельства актуализируют необходимость активизации самостоятельной работы обучающихся, планирующих свое профессиональное развитие и карьерный рост в данном сегменте рынка. В рамках же контактной работы при освоении образовательной программы следует максимально сосредоточиться на одном языке программирования. При этом целесообразно проводить сравнение этого языка с другими востребованными при решении задач программирования языками без обязательного изучения их синтаксиса.

Выбор одного языка программирования, который будет включен в образовательную программу, определяется следующими критериями:

1. Поддерживаемость. Выбранный язык программирования должен быть современным и поддерживаемым, т. е. должны существовать и активно функционировать сообщество или компания, занимающиеся поддержкой и обновлением его стандарта. Только такие языки содержат все конструкции, позволяющие продемонстрировать современные подходы к разработке программного обеспечения. Примерами таких языков на сегодняшний день могут быть Java, C#, C++, Objective-C.

2. Поддержка процедурного и объектно-ориентированного программирования. В процессе освоения основной образовательной программы необходимо познакомить студентов с основными парадигмами программирования, сравнить их, рассмотреть достоинства и недостатки. Поэтому целесообразно, чтобы выбранный язык программирования поддерживал как объектно-ориентированную, так и процедурную парадигмы.

3. Распространенность. Несмотря на то, что язык программирования используется в обучении лишь как инструмент для демонстрации изучаемых методов и подходов к разработке ПО, целесообразно выбрать язык, входящий в 10 самых востребованных в мире. При

4. Кроссплатформенность. Не рекомендуется выбирать язык, ограниченный какой-либо платформой или приложением. Например, Objective-C, поддерживаемый компанией Apple для устройств компании, является не самым удачным выбором для специалистов, которые должны разрабатывать информационные системы на произвольных платформах.

С учетом тенденций развития отрасли информационно-коммуникационных технологий и требований образовательных стандартов по направлениям подготовки 09.00.00 «Информатика и вычислительная техника» и 10.00.00 «Информационная безопасность» в качестве базового языка программирования, по нашему мнению, целесообразно выбрать C++, который максимально полно удовлетворяет рассмотренным ранее критериям. Необходимо отметить, что предложенные критерии на являются универсальными, и в каждом конкретном случае проектирования образовательной программы могут учитываться и другие характеристики языков программирования.

Следующим ключевым моментом, определяющим содержание подготовки обучающихся, будет определение приоритетности профессиональных задач, на которые будет ориентирован образовательный процесс. Для этого проанализируем тенденции развития отрасли и наиболее актуальные направления программирования.

Программирование на ранних этапах развития вычислительной техники рассматривалось как алгоритмизация и реализация алгоритмов на языке программирования. Причем последнее было делом техническим, требовало лишь знания синтаксиса языка и умения читать формализованные алгоритмы. Вместе с тем сама алгоритмизация стала развивающейся наукой, которую можно рассматривать как огромный раздел математики. Проектирование алгоритмов разделилось на такие направления, как линейное программирование, дискретное программирование и многие другие. Были созданы технологии построения эффективных алгоритмов, например такие как «Разделяй и властвуй», «Динамическое программирование» и многие другие; разработано множество алгоритмов с хорошими показателями времени решения задачи. К последним можно отнести алгоритм Дейкстры, который используется для нахождения кратчайших путей от некоторой вершины до всех остальных во взвешенном графе и является ключевым для одного из самых распространенных протоколов маршрутизации ospf. Также к известным алгоритмам можно отнести классические решения задач распределения ресурсов, такие как «Симплекс метод» или «Метод потенциалов».

Показателем для оценки эффективности алгоритма стало процессорное время, а точнее, закон его изменения относительно роста объема входных данных. Этот подход к оценке сложности алгоритма получил название асимптотической сложности. Она позволяет оценить время работы алгоритма независимо от конкретной элементной базы.

С учетом развития объектно-ориентированной парадигмы разработки ПО и на основе проведенного анализа требований работодателей нами выделены следующие приоритетные требования к результатам профессиональной деятельности программиста:

- разработка масштабируемой архитектуры приложения, легко изменяемой путем привнесения новых объектов и с минимальным вмешательством в уже разработанные модули;

- обеспечение гибкости архитектуры приложения, учитывающей возможные изменения в работе системы и позволяющей достаточно просто адаптироваться к ним;

- создание программного продукта в кратчайшие сроки и посредством написания относительно небольшого по своему объему программного кода, что позволяет снизить его себестоимость и обеспечить простоту тестирования и отладки.

Современный подход к разработке архитектуры ПО основывается на свойстве полиморфизма, позволяющем разделять интерфейс (набор имен методов экземпляра класса) и реализацию (алгоритмическую составляющую методов экземпляра класса). Это обеспечивает создание обобщенного кода, который может демонстрировать разное поведение при условии различной реализации используемых методов. Поэтому в настоящее время востребовано использование паттернов проектирования - хорошо исследованных и зарекомендовавших себя приемов применения полиморфизма, позволяющих достичь высоких показателей гибкости и масштабируемости приложения, а также снизить необходимый объем кода для программного продукта благодаря использованию обобщенных методов. Важно отметить, что паттерны проектирования не являются алгоритмами. Они представляют собой структурные решения для построения связей между разрабатываемыми классами.

Проведенный анализ требований работодателей позволил выявить два основных класса задач профессиональной деятельности программиста, которые должны найти свое отражение в содержании обучения студентов вуза. С одной стороны, важнейшей частью программирования являются задачи алгоритмизации. Свидетельством этого служит повышенный интерес ведущих компаний в области информационных технологий к чемпионату (студенческой олимпиаде) мира по программированию ACM ICPC, конкурсными заданиями которого являются задачи алгоритмизации [5]. Участники чемпионата, показавшие высокий уровень готовности к разработке и реализации алгоритмов, практически обеспечивают свое трудоустройство и высокую заработную плату в ведущих IT-компаниях, представленных на соревновании. С другой стороны, достаточное количество IT-компаний предпочитают набирать сотрудников из числа специалистов с компетенциями архитекторов ПО. Такой подход свойствен компаниям, не имеющим большого количества алгоритмически сложных проектов. Работники таких компаний решают поставленные перед ними задачи на основе готовых разработок в области алгоритмизации и сталкиваются с нетривиальными алгоритмическими задачами крайне редко и в формулировке, позволяющей найти готовое решение или алгоритм. Таких компаний большинство, особенно на региональном рынке труда.

Обеспечение овладения студентами на продвинутом уровне компетенциями как в области алгоритмизации, так и в области проектирования архитектуры приложений затруднено ограниченным объемом контактной работы обучающихся и преподавателей. По нашему мнению, повысить результативность образовательного процесса возможно на основе реализации следующих условий при формировании содержания обучения и выбора форм его организации:

1. Уменьшить количество часов контактной работы, предполагающих изучение API, входящих в стандарт языка, оставив это на самостоятельное исследование. В большинстве случаев API представляет собой набор функций или классов для решения конкретных при-

кладных задач. И если студенты знакомы с понятиями функции, класса и способом их написания, то в дальнейшем при актуализации потребности в API и при наличии навыка самообразования выпускники вуза, являющиеся работниками IT-компаний, смогут достаточно быстро приобрести необходимые дополнительные знания.

2. Изменить приоритеты в содержании обучения в сторону объектно-ориентированного проектирования архитектуры приложений. С учетом того, что проектирование архитектуры более востребовано в региональном сегменте IT-рынка и требует меньшего объема времени на качественное формирование соответствующих компетенций по сравнению с алгоритмизацией, то в условиях дефицита учебного времени целесообразно сконцентрироваться на качественном изучении паттернов проектирования, что позволит выпускникам вузов быстрее адаптироваться и успешнее профессионально реализовываться в своем регионе.

3. В рамках практики обучающимся, заинтересованным в формировании компетенций на продвинутом уровне, организовать возможность решения творческих задач по построению алгоритмов.

4. Сосредоточиться на развитии внеучебной деятельности обучающихся в области программирования: олимпиадного движения [6, 7], творческих клубов и т. п., причем основное внимание также уделить освоению методов построения алгоритмов.

5. Для удовлетворения потребностей обучающихся в подготовке к программированию на более высоком уровне предусмотреть в вариативной части образовательной программы несколько дисциплин по выбору, нацеленных на разработку алгоритмов построения архитектуры ПО.

Внедрение предложенных подходов в образовательный процесс позволит обеспечить разноуровневость обучения и подготовить, с одной стороны, небольшую группу элитных специалистов с высоким уровнем компетентности в области алгоритмизации и построения архитектуры ПО, а с другой - более многочисленную группу с хорошей подготовкой в области проектирования ПО при базовом владении алгоритмизацией, востребованную на региональном сегменте /Г-рынка. Это, по сути, представляет собой гибкую адаптацию образовательного процесса к актуальным требованиям работодателей.

Результативность подготовки к деятельности в области программирования можно повысить, оптимизировав последовательность изучения ряда дисциплин информационного цикла для основных профессиональных программ по направлениям 09.00.00 и 10.00.00, что позволит на требуемом образовательными стандартами уровне овладеть компетенциями в области разработки ПО всем студентам независимо от их начального уровня подготовки в данном направлении.

Начать подготовку студентов целесообразно с универсального курса «Информатика», который определит понимание ими сущности и значения информации в развитии современного общества, сориентирует на применение достижений современных информационных технологий для поиска и обработки больших объемов информации по профилю деятельности в глобальных компьютерных сетях и других источниках. Также в рамках данной дисциплины обучающиеся знакомятся с ключевыми понятиями из области программирования, изучают подходы к хранению различных форматов данных в памяти, а также овладевают основами булевой алгебры и дискретной математики. В рамках следующей учебной дисциплины обучающиеся осваивают языки программирования (как было показано ранее, наиболее оптимальным будет изучение одного языка C++).

Следующими компонентами модуля, формирующего готовность к профессиональной разработке ПО, могут стать дисциплины «Методы программирования» и «Объектно-ориентированное программирование», которые могут осваиваться параллельно и создадут

основу подготовки как по применению основных принципов построения эффективных с позиции вычислительной сложности алгоритмов, так и по созданию гибкой и масштабируемой архитектуры посредством использования паттернов проектирования и идиом языка программирования C++. Закрепляются полученные знания содержанием и средствами дисциплины «Объектно-ориентированное моделирование» и во время учебной практики. В рамках внеучебной деятельности студентам предлагается возможность стать членом клуба программистов - неформальной организации в области системного программирования и разработки прикладного ПО, участие в которой позволяет обучающимся совершенствоваться в области алгоритмизации.

Сформулированные подходы к проектированию содержания обучения при подготовке студентов к программированию реализованы в образовательном процессе Института автоматики и информационных технологий Тамбовского государственного технического университета посредством внесения изменений в компоненты основной профессиональной образовательной программы (ОПОП) по направлению 10.05.03 «Информационная безопасность автоматизированных систем». Во-первых, в дисциплине «Объектно-ориентированное программирование» было уменьшено количество аудиторных занятий на изучение STL - стандартного API С++, но при этом сделан акцент на вопросах проектирования программных компонентов информационных систем. Во-вторых, в учебный план добавлена дисциплина «Методы программирования», в содержание которой были включены все вопросы, связанные с алгоритмизацией. Таким образом, удалось освободить достаточно большое количество часов аудиторной работы для изучения методологии проектирования архитектуры приложений.

Проектирование учебного плана по направлению 10.05.03 и построение логической последовательности изучения дисциплин, связанных с программированием, было осуществлено таким образом, что позволило студентам наилучшим образом овладеть компетенциями в области разработки программного обеспечения. Причем данные компетенции формировались на базовом уровне даже у студентов, которые перед началом освоения ОПОП не сталкивались с программированием сложных заданий.

Описанные изменения в структуре ОПОП способствовали повышению качества образования, что выразилось в следующих изменениях состояния образования в области информационных технологий:

1. Активизировалось взаимодействия с IT-компаниями, работающими на региональном рынке, что нашло отражение как в гибком изменении вариативной части ОПОП, так и в финансировании рядя образовательных мероприятий творческой направленности и поощрении лучших студентов со стороны потенциальных работодателей.

2. Увеличилось как общее число участников творческих конкурсов в области программирования (на 54 %), так и уровень подготовки, продемонстрированный представителями вуза в командных чемпионатах по программированию. Участники олимпиадного движения по программированию после окончания учебного заведения полностью трудоустроены по профессии (причем значительное количество в столичных компаниях) или продолжают обучение на следующей ступени высшего образование. Подавляющее большинство (более 92 %) студентов-олимпиадников уже на третьем курсе сочетают учебную деятельность с работой в сфере информационных технологий.

3. Реализация предложенных подходов к проектированию содержания обучения при подготовке студентов вуза к разработке программного обеспечения позволила повысить общий уровень сформированности соответствующих компетенций всех участников образовательного процесса (число студентов, продемонстрировавших по окончании обучения

продвинутый уровень сформированности соответствующих компетенций, после изменений в структуре ОПОП и внедрения технологий творческой работы выросло в среднем на 40 %).

Разработанные механизмы проектирования содержания обучения при подготовке студентов вуза к разработке программного обеспечения могут быть учтены в образовательной практике других технических вузов с учетом специфики потребностей конкретного регионального рынка IT-компаний, что будет способствовать как творческой подготовке элитных специалистов по созданию высокоэффективных алгоритмов, так и удовлетворению потребностей региональных IT-компаний в значительном количестве разработчиков архитектуры ПО.

Список литературы

1. Ракитина Е. А. Построение методической системы обучения информатике на деятельностной основе: дис. ... д-ра пед. наук. М., 2002. 485 с.

2. Бешенков С. А., Ракитина Е. А., Миндзаева Э. В. Информационное образование в России // Знание. Понимание. Умение. 2013. № 3. С. 42-51.

3. Тормасин С. И., Пучков Н. П. Организационно-методические проблемы интеграции компетенций // Вопросы современной науки и практики. Университет им. В. И. Вернадского. 2012. № 1 (37). С. 149-158.

4. 15 programming languages you need to know in 2015 / T. Vasserman // Mashable. URL: http://mashable.com/2015/01/18/ programming-languages-2015/#QXwmkuLjSEq7, (дата обращения: 22.02.2016).

5. Попов А. И., Поляков Д. В. Методика подготовки студентов к командному чемпионату мира по программированию // Вестн. Тамбовского гос. техн. ун-та. 2012. Т. 18, № 3. С. 762-766.

6. Попов А. И. Организация творческой подготовки по информатике // Дистанционное и виртуальное обучение. 2013. № 11. С. 91-96.

7. Павлова Е. С. Методика формирования одаренности при подготовке к олимпиадам по информатике // Фундаментальные исследования. 2013. № 10-6. С. 1360-1362.

Попов А. И., кандидат педагогических наук, доцент, начальник отдела. Тамбовский государственный технический университет.

Ул. Советская, 106, Тамбов, Россия, 392000. E-mail: olimp_popov@mail.ru.

Поляков Д. В., кандидат технических наук, старший преподаватель. Тамбовский государственный технический университет.

Ул. Советская, 106, Тамбов, Россия, 392000. E-mail: dimadress@yandex.ru

Материал поступил в редакцию 01.03.2016

A. I. Popov, D. V. Polyakov

DESIGNING TRAINING CONTENT IN THE PREPARATION OF UNIVERSITY STUDENTS

TO SOFTWARE DEVELOPMENT

The article presents the analysis of tendencies of market development of information and communication technologies, the features of its formation in the regions. Formulates approaches to the design of training content, ensuring the formation of special professional competencies of the specialists in programming tailored to the needs of employers. Shows the innovative nature of the professional tasks of IT professionals and the necessity of strengthening the creative component of the educational activities in their preparation. Formulates the requirements to the programming language included in the educational program and justifies the choice for areas of training in the field of information technology. Gives recommendations on the formation of educational content, providing creative training

to the solution of problems of algorithmization and architecting software. Shows the structure and basic didactic units of the informational component of training of IT specialists. The results of these studies can be used to improve the quality of educational activities in higher education and support organization training of specialists in the field of programming, as well as to stimulate creative activity of students.

Key words: creative activities, learning content, language of programming, algorithmization, software architecture.

References

1. Rakitina E. A. Postroeniye metodicheskoy sistemy obucheniya informatike na deyatel'nostnoy osnove: Dis. dokt. ped. nauk [Construction of methodical system of teaching computer science on the basis of activity. Thesis of doct. ped. sci.]. Moscow, 2002. 485 p. (in Russian).

2. Beshenkov S. A., Rakitina E. A., Mindzaeva Ye. V. Informatsionnoye obrazovaniye v Rossii [Information education in Russia]. Znaniye. Ponimaniye. Umeniye - Knowledge. Understanding. Skill, 2013, no. 3, pp. 42-51 (in Russian).

3. Tormasin S. I., Puchkov N. P. Organizatsionno-metodicheskiye problemy integratsii kompetentsiy [Organizational and methodological problems of integration of competences]. Voprosy sovremennoy naukiipraktiki. Universitetim. V. I. Vernadsko-go - Questions of Modern Science and Practice. University by V. I. Vernadsky, 2012, no. 1 (37), pp. 149-158 (in Russian).

4. Vasserman T. 15 programming languages you need to know in 2015. Mashable. URL: http://mashable.com/2015/01/18/ programming-languages-2015/#QXwmkuLjSEq7, (accessed 22 February 2016).

5. Popov A. I., Polyakov D. V. Metodika podgotovki studentov k komandnomu chempionatu mira po programmirovaniyu [Methods of training students for team world championship on programming]. Vestnik Tambovskogo gosudarstvennogo tehnicheskogo universiteta-Tambov State Technical University Bulletin, 2012, vol. 18, no. 3, pp. 762-766 (in Russian).

6. Popov A. I. Organizatsiya tvorcheskoy podgotovki po informatike [Organization of creative training in computer science]. Distantsionnoye i virtual'noye obucheniye - Remote and Virtual Learning, 2013, no. 11, pp. 91-96 (in Russian).

7. Pavlova E. S. Metodika formirovaniya odarennosti pri podgotovke k olimpiadam po informatike [Methods of formation of giftedness in preparing for Olympiads in Informatics). Fundamental'nye issledovaniya - Fundamental Research, 2013, no. 10-6, pp. 1360-1362 (in Russian).

Popov A. I.

Tambov State Technical University.

Ul. Sovetskaya, 106, Tambov, Russia, 392000. E-mail: olimp_popov@mail.ru.

Polyakov D. V.

Tambov State Technical University.

Ul. Sovetskaya, 106, Tambov, Russia, 392000. E-mail: dimadress@yandex.ru.