Scientific journal
Modern problems of science and education
ISSN 2070-7428
"Перечень" ВАК
ИФ РИНЦ = 1,006

TRAINING PROGRAMMING IN MIDDLE AND HIGH SCHOOL: PROBLEMS AND SOLUTIONS

Kuzenkova G.V. 1 Shtanyuk A.A. 2 Shagbazyan D.V. 1
1 Lobachevsky State University of Nizhny Novgorod (UNN)
2 Nizhny Novgorod State Technical University n.a. R.E. Alekseev
The article is devoted to programming and information technology education in secondary and higher schools. Information technologies are intensively developing, which requires constant adjustment of the content of education of both schoolchildren and students of higher education institutions. The labor market for IT professionals is placing ever higher demands on graduates of educational institutions. This article describes the problems of education with the labor market requirements of IT professionals. The problems exist not only in domestic schools but also in the whole world at the same time. Ways of solving several same problems are suggested, and a brief review of approaches implemented in schools of different countries is given. Among possible ways to overcome the crisis are cooperation with IT companies at different stages of education, an adaptation of curricula, development of legislation in the field of education and introduction of professional and modern tools of software developers into the educational process. The paper presents the results of the survey of IT students of Nizhny Novgorod State University concerning their acquaintance with information technologies at different stages of education (both school and university).
programming
informatics
information technology
education
labor market
version control systems

Ориентиры России на цифровизацию экономики требуют изменений в образовании. Современные школьные учебные программы содержат дисциплины, связанные с основами компьютерных наук (Computer Science), что является отражением все возрастающей потребности рынка труда в ИТ-специалистах [1–4]. Информационные технологии интенсивно развиваются, что требует постоянной корректировки содержания обучения как школьников, так и студентов высших учебных заведений. Рынок специалистов предъявляет высокие требования к уровню знаний студентов и выпускников вузов. Без владения современными информационными технологиями разработки программного обеспечения у молодых специалистов наблюдаются проблемы с трудоустройством в компании по разработке ПО [5]. Потребности рынка вакансий в высококвалифицированных ИТ-кадрах сильно опережают то, что могут предложить школы, техникумы и даже вузы [6, 7].

Ситуация с изучением программирования в школах не выглядит оптимистично [6-9]. Это справедливо не только для нашей страны, но и для развитых зарубежных стран. В школе наибольший приоритет, как и ранее, отдается как фундаментальным предметам (математике, физике), так и гуманитарным (истории, литературе). Здесь проявляются как многолетние традиции, особенно в специализированных школах, гимназиях, так и низкий уровень образования самих педагогов. Однако введение в школьные учебные программы курсов алгоритмизации и программирования является важным условием проявления интереса к данной отрасли у школьников, что значительно повлияет на выбор будущей профессии, связанной с ИТ-сферой, и непосредственную готовность изучения данных предметов в вузе.

Целью данного исследования является анализ ситуации с ИТ-образованием в средних учебных заведениях и выработка рекомендаций по улучшению этой ситуации. Предлагаются пути решения ряда проблем, при этом дается беглый обзор подходов, реализуемых в школах различных стран мира (Франции, Финляндии, Южной Кореи, США, Великобритании, Китая, Армении). Среди возможных способов преодоления кризиса можно назвать сотрудничество с ИТ-компаниями на разных стадиях обучения, адаптацию учебных программ, развитие законодательства в области образования и внедрение в учебный процесс профессиональных и современных инструментов разработчиков программного обеспечения. В работе приводятся результаты опроса студентов ИТ-направления Нижегородского государственного университета по поводу знакомства с информационными технологиями на разных этапах обучения (как школьного, так и университетского).

Материал и методы исследования

В последнее время крупные отечественные и зарубежные ИТ-компании стали взаимодействовать с учебными заведениями (например, Яндекс сотрудничает с Высшей Школой Экономики, МФТИ, СПБГУ, Mail.ru Group – с МГТУ им. Баумана, Интел и Харман – ННГУ им. Н.И. Лобачевского) [10, 11]. Как правило, на старших курсах организуются дополнительные занятия в виде факультативов, успешно зарекомендовала себя практика открытия интернатуры. Для школьников организуются курсы по робототехнике, на которых в сочетании с игровыми технологиями происходит знакомство с миром программирования и алгоритмизации. Можно считать такие курсы успешными примерами приобщения школьников к будущей профессии, формирования определенной информационной культуры. Однако очевидно, что, если не вносить изменения в программы школьных предметов, то разрыв между уровнем образования и требованиями ИТ рынка труда будет увеличиваться. Об эффективности сотрудничества с ИТ-компаниями говорят и зарубежные авторы [12].

Эффективность обучения, по нашему мнению, зависит от методик и подходов преподавания компьютерных наук в школах. Так, грамотно построенный курс программирования поможет школьникам понять основные концепции, такие как алгоритмы, языки программирования, архитектура вычислительных систем и т.д. Программирование дает школьникам возможность проявить себя в роли создателя или проектировщика; обладая знаниями языка программирования, можно написать практически любую программу. А интересные и актуальные для разработки темы помогут стимулировать развитие у детей творческих способностей. При этом навыки, получаемые школьниками в результате освоения опыта проектировщика, способствуют развитию критического мышления, освоению приемов решения проблем в других областях. Однако школы России и многих развитых стран Запада нуждаются в реформировании учебных планов на государственном уровне [12].  

Одним из подходов в этом направлении считается возможно раннее обучение школьников алгоритмизации и программированию [13–17]. В Великобритании, Франции, Ирландии разработаны курсы по программированию для учащихся начальных классов, а также проводятся  дополнительные занятия для школьников, где они могут познакомиться с основами алгоритмов и созданием простейших компьютерных программ. В школах Австрии, Финляндии школьникам преподаются основы программирования, где применяют визуальную событийно-ориентированную среду Scratch (https://scratch.mit.edu).

В Южной Корее учащиеся в средней школе изучают программирование с 2015 г., оно  представлено несколькими предметами цикла «Компьютерные науки»: «Информационное общество и компьютер», «Программирование», «Программное обеспечение», «Компьютерное моделирование», «Компьютерный дизайн». Причем этот цикл предметов начинается в младшей школе (с 6 лет) [18]. Учащимся старшей школы предлагаются курсы по выбору. Следует отметить, что современная Computer Science происходит из США, но только в 10% школ США имеются курсы по изучению основ программирования, а изучение компьютерных наук начинается с университетов. Для изменения этой ситуации в США были запущены агитационные и мотивационные видеоролики с участием известных программистов, основателей IT-компаний, спортсменов и звезд с целью вызвать высокую заинтересованность к изучению программирования у школьников и широкой аудитории страны. К сожалению, авторы статьи не обнаружили в анализе данные по России.

В качестве успешного примера по внедрению новых обучающих стандартов можно указать Великобританию. Осенью 2015 г. во всех школах Великобритании были внедрены учебные планы по изучению основ программирования – «Национальная учебная программа Англии: компьютерные программы обучения» [19]. Так, ученикам от 5 лет по курсу программирования предлагается изучать создание элементарных программ, а с 11 лет учащиеся будут осваивать различные алгоритмы и, по крайней мере, два языка программирования. Ученикам предлагается изучать простую логику (например, операторы AND, OR и NOT), работу с двоичными системами и совместную работу компьютерного оборудования и программного обеспечения, соответствующим образом использовать структуры данных [например, списки, таблицы, массивы]; разрабатывать модульные программы, которые используют процедуры или функции. Часто используемые языки программирования – это Java или Python. В школах Великобритании и раньше изучали основы компьютерной грамотности, но эти программы были старые и рассчитаны на изучение работы с компьютером в качестве пользователя, что никак не связано с программированием и компьютерными науками. Все эти новые подходы и программы преподавания компьютерных наук вызывали немалый негатив со стороны организаций, чьи ИКТ стандарты были долгие годы внедрены  в школах Великобритании. Новая учебная программа предполагает преподавать детскую компьютерную науку, информационные технологии и цифровую грамотность, она направлена на обучение написанию кода и созданию собственных программ. Предполагаются изучение работы с компьютером, а также изучение принципов работы компьютера и возможностей заставить его работать на себя. Введение нового обучающего стандарта в школьные курсы было связано с частыми жалобами технических компаний на нехватку квалифицированных кадров. В разработку курса были вовлечены Microsoft, Google и Королевская инженерная академия.

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

Интересен опыт обучения программированию своих маленьких детей разработчиками программного обеспечения [21], основой которого являются специальная среда разработки и игровая форма обучения. Существуют специальные обучающие программы для дошкольников: Tynker, ПиктоМир, Box Island и др. Российские педагоги также делятся опытом применения такого типа программ [22, 23].

При изучении вопроса обучения программированию и  изучения компьютерных наук в странах бывшего СССР интересно рассмотреть опыт Республики Армения. В Армении работают порядка 400 IT-компаний, а ежегодно запускаются десятки новых. Также в стране есть уже несколько школ, в которых дети изучают востребованные на рынке программирование, веб-дизайн, кино, видеопроизводство и компьютерные игры. Страна успешно движется в сторону массового внедрения IT-дисциплин во все школьные программы. Здесь следует отметить центр «Айб-Синхрон» и Центр креативных исследований «ТУМО» [24]. Школу «Айб-Синхрон» часто называют школой XXI века. От обычных учебных заведений она отличается высокой технической оснащенностью и специально разработанной программой. Подобные центры дополнительного образования работают во многих городах Армении. Организаторы подчеркивают, что это не просто кружки по интересам: в них рождаются идеи будущих стартапов. В армянских школах по инициативе Союза компаний по информационным технологиям Армении (UITE) реализуется программа «Робототехника начинается со школы» [25], в рамках которой задействовано 55 кружков робототехники для учеников 5–12-х классов. Как отмечает министерство образования и науки Армении, действующие в армянских школах кружки робототехники могут стать новым образовательным брендом. Программа «Робототехника начинается со школы» осуществляется UITE при сотрудничестве с сотовым оператором VivaCell-MTS, благотворительным фондом «Кронимет», организациями World Vision Armenia и Counterpart International Armenia. По мнению руководителя  общественной организации «Союз предприятий информационных технологий», если во всех школах страны будут внедрены «инженерные кабинеты», то к 2025 г. в Армении будет не менее 70 000 хороших специалистов, работающих в самых разных сферах ИТ и конкурентоспособных на мировом рынке. В стране уже в каждой пятой школе страны открыли инженерные лаборатории, где дети с ранних лет могут изучать основы программирования и робототехники.

Результаты исследования

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

В 2020 г. нами проводился опрос студентов Института информационных технологий, математики и кибернетики, обучающихся по направлениям бакалавриата «Фундаментальные информатика и информационные технологии», «Программная инженерия», «Прикладная информатика», «Прикладная математика и информатика» (143 респондента). Результаты исследования показывают, что практически все студенты испытывают трудности в освоении дисциплин, связанных с программированием («Информатика и программирование», «Алгоритмы и структуры данных», «Объектно-ориентированное программирование» и т.д.). Так, 31% респондентов указывают трудности, связанные с незнанием инструментов программирования, 23% – с невозможностью правильно создать структуру программы, 22% – с непониманием алгоритмов, 17 % – с непониманием поставленной задачи, а также 7% указывают на отсутствие интереса к программированию.

Студенту-первокурснику сложно переключаться со школьного языка программирования на профессиональные языки, такие как С++, C# или Java. В качестве языка программирования в школе 86% респондентов указали язык Паскаль, 10% – Бейсик. Только 79% студентов ответили, что писали программы в школе. Первую работающую программу создали при обучении в вузе 21% опрошенных, а 7% студентов отметили, что ими в школе вообще не изучалась дисциплина «Информатика», при этом 2 человека указали, что программирование изучали самостоятельно.

На вопрос: «Если изучали в школе предмет “Информатика (программирование или близкое название)”, то укажите, с какого класса (или в каком классе)» – ответы можно ранжировать следующим образом: 59% респондентов изучали программирование, начиная со средних классов, 31% – начали изучать со старших классов, и только 10% начали изучать программирование с начальной школы. Самый большой «стаж» изучения программирования был указан 10 лет, самый маленький – меньше 1 года перед поступлением в вуз.

При изучении ИКТ в школьном курсе 100% респондентов отмечали, что изучали технологии создания текстовых документов и создания презентаций, а также считают, что владеют технологиями хорошо. Результаты вводного тестирования в этих областях знаний показывают, что  70% студентов  создают красную строку абзаца с помощью клавиши Таб, 10% применяют «Отступ первой строки на линейке», а расстояние между абзацами (отбивку до и после абзаца) изменяют с помощью клавиши Enter 95% респондентов. О некоторых принципах компьютерной графики и законах визуализации информации в презентациях знают только 10% опрошенных.

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

1) «Мелкий сервис» (приложения на смартфон, сайты и т.п.);

2) «То, чего еще нет или будет в ближайшем будущем (или хотелось бы иметь)» (система управления космическим шаттлом, система управления подводным домом и т.п.);

3) «Фабрики и мини-производства» (магазины без обслуживающего персонала, мини-пекарня по заказу «здесь и сейчас» и т.п.);

4) научные исследования (ИС по областям).

Первую группу выбрали 85% респондентов, вторую группу – 5%, третью группу – 10%, четвертую группу не выбрал никто.

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

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

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

В средних классах – изучение основ логических операций, системы счисления, базовые алгоритмы на массивах и т.д.

В старших классах – изучение структур программ, основы архитектуры ЭВМ, принципов хранения, обработки данных, основ работы с документацией, знакомство с инструментами профессиональной разработки, основами оценки информационных технологий (в том числе новых или незнакомых).

Необходимо отметить, что современная культура программирования строится на использовании профессиональных инструментов разработчиков. К таким инструментам можно отнести интегрированные среды разработки (IDE), системы контроля версий (VCS), инструменты тестирования и сетевые хостинг-площадки для размещения кода. Умение работать в интегрированной среде является важной компетенцией, позволяющей освоить работу в рамках производственного процесса. Среди систем контроля версий наиболее распространенной является Git, его использует подавляющее число разработчиков ПО. Git позволяет организовать процесс создания программы в виде нескольких параллельных веток и выполнять откат к предыдущему состоянию кода, если вдруг обнаружена ошибка.

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

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

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

Выводы

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

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