Как только появились первые машины, облегчающие труд человека, так сразу же у них появились как сторонники, так и противники. Компьютеры и робототехника не стали исключением. И споры о том, стоит ли всецело полагаться на компьютер или надо учить «по старинке» не утихают до сих пор.
Программирование, изначально было уделом математиков и требовало умозрительной разработки алгоритмов и ручной подготовки кода и последующего его переноса в вычислительные блоки сначала через панели переключателей, затем через устройства «пробивания» перфокарт и перфолент, а позже вводом двоичных кодов с терминалов. Затем оно переросло в подсказывающий уже целые участки кода искусственный интеллект, создание программ вообще без кода, за счет соединения визуальных функциональных блоков, и в другие методы, которые часто вообще не требуют от человек не то что знания языка программирования, но и самих алгоритмов.
Робототехнику из науки, сопрягающей в себе механику, детали машин, электрику и электронику и информатику, современные стартапы «опускают» до уровня знаний простых рабочих, которым теперь достаточно показать роботу, что ему нужно сделать, а остальное (в том числе и программу) создаст искусственный интеллект. И все это внушает опасение, что поколение за поколением человечество скатиться до уровня, хорошо показанном в комедии «Идиократия».
Мы же поговорим об обучении программированию и робототехнике детей. А также о том, какие доводы приводятся поклонниками «машиннного» и «безмашинного» обучения.
Contra
Начнем со сторонников «машинного» обучения. К ним относятся разработчики различных сред программирования типа Scratch или MakeCode Arcade, онлайн-курсов, игровых программных продуктов. Это также разработчики роботов и микроконтроллеров для детей, завязанных на программное взаимодействие с железом через создание игр или предлагающие рассматривать робота как готового изделия с набором датчиков и двигателей, который нужно запрограммировать установкой готового блока кода.
Они приводят следующие доводы:
Современные дети «рождаются» с гаджетами и «живут» ими, и они привыкли все время проводить перед экраном, и получать информацию оттуда. Смена метода ее получения вызывает у детей стресс, поэтому им надо давать информацию в понятной и привычной детям форме, замещая развлекательный контент обучающим.
Многим современным детям сложно и даже не интересно заниматься механической работой по сборке чего-либо. У многих детей дошкольного и младшего школьного возраста есть проблемы с мелкой моторикой, и они не успевают ничего собирать или конструировать в учебное время.
«Физические» наборы для программирования или конструирования дорогие, дети теряют детали и компоненты или ломают их. Это очень затратно, особенно для домашнего обучения, в отличие от онлайн-платформ или обучения только за компьютером/планшетом.
Большое число детей с признаками аутизма и проблемами социализации не позволяет использовать безмашинные методы, которые часто требуют прямого взаимодействия детей между собой и с учителем, навыков договариваться и работать в команде или даже физического контакта.
Мы живем в эпоху развитой компьютерной техники и использовать «безмашинные» методы, составляя на листочках алгоритмы или используя бумажные справочники для языков программирования — это архаизм.
Pro
Противоположная сторона не так категорична и часто не отказывается от «машинных» методов, предлагая сочетать как работу за вычислительными устройствами, так и занятия без них. Но упор делается на безмашинные методы и доводы приводятся другого вида:
Дети «перегружены» гаджетами, которые вышли на уровень восприятия «бытовой техники». Из-за этого у многих теряется интерес к программированию и робототехнике, так как они не понимают для чего это нужно. Не будете же вы программировать микроволновку?
Есть гигиенические нормы работы за компьютером и смартфоном, которые часто не выполняются в повседневной жизни. А многие родители вообще были бы рады оторвать ребенка от экранов мониторов и переключить их на что-то менее нагружающее зрение.
Чрезмерное увлечение компьютерами и смартфонами ребенка, особенно дошкольника или младшего школьника – это зависимость, которую надо лечить. Не зря во многих странах есть запреты на доступ в те же соцсети до 12-13 лет.
Используя только компьютер, средства помощи при написании кода и наличие огромного числа готовых примеров, дети разучились предварительно представлять себе, что они собираются запрограммировать, не хотят учить основы языков программирования, вникать в те или иные особенности кода. В случае робототехники дети не понимают принципов механики роботов, расположения и движения в пространстве, не понимают связи между программной, электрической и механической частей внутри робота.
Безмашинные методы обучения позволяют социализировать детей, дать им возможность общения друг-с-другом, работы в команде. А так как они часто построены в игровой подвижной форме, то позволяют детям снимать напряжение за счет переключения вида деятельности, а следовательно, больше времени уделять изучаемому предмету и меньше уставать.
Во взрослой деятельности до написания программного кода идут этапы, обычно не требующие применения непосредственно компьютера (разработка ТЗ, проработка информационной схемы, исследование области применения, другие научно-исследовательские работы).
Если с «машинными» методами обучения все достаточно понятно, то про безмашинные многие родители и преподаватели не слышали. Часто приходится слышать, что это что-то скучное и устаревшее, типа Школьного алгоритмического языка или рисовании блок-схем на листочках после записи текста урока под диктовку из учебника. Но это не так.
Ярким примером служит проект CS Unplugged, разработанный Тимом Беллом и его соратниками в Университете Кентербери (Новая Зеландия) и в настоящий момент представляющий собой международный открытый проект по изучению компьютерных наук без компьютера. Он поддержан Google и Microsoft и успешно развивается вот уже более 10 лет.
Идея проекта: изучать разделы информатики в игровой форме, без необходимости использования компьютер. К примеру, изучение двоичного кодирования происходит с помощью карточек, на которых на одной стороне точками отмечены степени двойки, а вторая сторона закрашена в темный цвет («выключена»). Ученики становятся в ряд в порядке следования битов от младшего (с карточкой с одной точкой) до старшего (64 или 128 точек).
Переворачивая те или иные карточки, дети играют роль дисплея двоичной системы, а учитель объясняет логическую связь между наличием (включением) определенного бита в числе и переводом в десятичную форму.
Автор статьи сам использует подобную методику (даже со студентами), объясняя, как быстро перевести число из двоичной в десятичную систему.
В другом примере, при изучении кодировании и битов четности, авторы CS Unplugged предлагают показать … фокус с карточками с черной и белой сторонами (значения 0 и 1), разложенными в виде таблицы 5x5. Учитель добавляет по ряду и столбу карточек-битов четности, руководствуясь числом четных единиц в рядах и столбцах, а потом просит учеников перевернуть одну карточку так, чтобы он этого не видел. Это пример «сбоя» передачи информации и учитель легко находит в каком бите он произошел.
Вы можете сами скачать и посмотреть существующие примеры, а также свободно их использовать на уроках. Некоторые из них даже переведены на русский язык.
Следующим примером служит изучение алгоритмов и робототехники через Исполнителей. Но не привычной нам Черепашки из Logo, а в виде настольных игр.
Та же Черепашка «переползла» в картонный мир в виде игры Robot Turtles, где детям нужно собирать алмазы, программируя бумажными карточками-командами одну из четырех роботов-черепах.
В России была разработана серия алгоритмических игр «Битва Големов», в которой детям предлагается программировать боевых роботов и устраивать баталии на создаваемых ими самими аренах. В отличие от рассчитанной на дошкольников Robot Turtles, в «Битве Големов» игрокам постарше (от 7–8 лет) доступны уже подпрограммы, циклы и условия. А интересно играть в нее будет не только детям, но и взрослым. Последняя версия игры была выпущена в стиле блочного языка программирования Scratch.
Существуют и другие настольные игры, обучающие, например программированию на Python или Java, погружающие детей в мир логики или искусственного интеллекта, а также затрагивающие не только программирование, но и электрическую часть роботов.
От настольных «исполнителей» прямая дорога к реальным. В Зеленограде на базе правил игры «Битва Големов» придумали устраивать битвы, где в качестве роботов выступают сами дети. Игра проходит на импровизированном поле, детям выдаются щиты и мечи, а программу им задают с помощью огромных карт команд.
В робототехнике очень важно также «уйти» от готовых конструкций и дать детям возможность самостоятельно разобраться как с механической, так и электронной составляющими. Здесь «безмашинное» обучение подразумевает работу над роботом и его программой через умственное моделирование своих действий. Например «на листочке» просчитывается будущее поле действия робота и его исполнительных устройств, производятся измерения необходимых перемещений или расположения препятствий и пошагово прописывается требуемый алгоритм, и выполняются нужные расчёты, в том числе и математические.
Да, можно обойтись тем же программным моделированием или просто методом проб и ошибок пытаться раз за разом изменять программу и запускать робота на поле, при этом постоянно изменяя его конструкцию, но…. Лучше следовать принципам «взрослого» конструирования, где сборка робота и написание программы идут только после выполнения проектировочной части. Это сэкономит и время, которого на уроках не так уж много, и спасет нервы как детей, так и преподавателей.
Если вам интересно узнать подробнее о настольных играх для юных программистов и робототехников, или о том же CS Unplugged, или с помощью каких методов мы в RoboUniver обучаем основам логики, техническому творчеству, алгоритмике, проектному мышлению и командной работе, включая туда физику, математику и другие науки, то напишите в комментариях. Мы с радостью расскажем об этом в нашем блоге.
Читателям Хабра мы также дарим скидку 2000 рублей на абонемент для занятий по промокоду HABR2022.
Markscheider
Называйте меня старым пердуном, но я топлю за алгоритмы и блок-схемы. Как минимум, за то, чтобы уметь ими пользоваться.
Возьмем подающего надежды молодого аналитика. Который планирует задокументировать бизнес-процессы с помощью BPMN. Стоп, а разве это не блок-схема? И если этого джуниора в школе на уроках программирования научили хотя бы основам алгоритмизации, разве это не поможет ему в работе?
Про кодеров в чистом виде я не говорю: сегодня позволительно начинать писать программу сразу, минуя стадию построения алгоритма <из темного угла доносится мое неодобрительное ворчание>. Но как средство коммуникации между программистом и непрограммистом упрощенная схема логики работы того или иного модуля - она же бесценна. Ну не может клиентский менеджер охватить взглядом и понять всю глубину и стройность кода! А блок-схема будет ему понятна и он сможет сказать: "вот тут надо не на выход пользователя вести, а на повторную авторизацию".
<бурчание закончил>
akdengi
"Снижение углеродного следа" :) На деле получаем поклонников секты копи-пасты, и код который еле крутится на мощностях, в разы превосходящих реально необходимых. И увы это происходит не только в ИТ. В машиностроении "такая же фигня, малята". Молодые спецы часто не могут эскиз нарисовать или представить какой нибудь разрабатываемый узел умозрительно, не говоря уже о казалось бы банальном понимании связи 3D и 2D или форм детали с ее характеристиками и способами изготовления. Поколение, слепо доверяющее компьютерным рассчетам.