Мы поговорили с преподавателями и выпускниками детских программистских школ и секций и выяснили, как занятия в детстве определяют дальнейший карьерный выбор, нужно ли заставлять детей заниматься и можно ли учить информатике без компьютера.
Ведущая подкаста Podlodka Катя Петрова: ходила в летнюю школу программирования
Катя Петрова. Product Marketing Manager в JetBrains, Women Techmakers Ambassador, руководила командой дизайн-систем в Avito, соорганизатор подкаста Podlodka и IT-конференций Podlodka Crew.
Еще в школе мне было веселее и интереснее всего на уроках информатики. Тогда я не думала про работу в IT: мне просто нравилось решать базовые задачи на Pascal. Например, сортировать массивы или выполнять геометрические задачи: запрограммировать рисунок кружочка или звёздочки.
О наших школьных уроках информатики даже снимали репортаж, в котором можно увидеть примеры задач:
С девятого класса нас поделили на направления — физмат, гуманитарный и социально-экономический классы. Большинство девочек тогда выбрали гуманитарный или социально-экономический профиль, а я пошла в физмат. Это было важное решение: не потому, что у меня стало на час информатики больше, а потому, что я попала в комфортную для обучения среду. Мы вместе обсуждали и решали задачи, нам было интересно учиться.Преподаватель никогда не разделяла нас по принципу мальчики и девочки, и не обращала внимание на пол. Единственным критерием было наличие интереса к предмету, а с этим у меня сложностей никогда не возникало.
Учительница информатики стала замечать, что наша группа быстро щелкает задачи, легко справляется с программой, поэтому начала давать нам более сложные и интересные задания. А потом предложила сделать научно-исследовательский проект для школьной конференции «Путь в науку» — подобие курсовой работы.
Один из учебных проектов для конференции — игра на Pascal, где игрок должен найти кратчайший путь от одной вершины графа к другой. В конце игра давала оценку оптимальности пути. Под капотом в ней был реализован алгоритм поиска кратчайшего пути на графе: для восьмого класса это было довольно неплохо. С этой работой мы выиграли школьный конкурс и нас отправили на Всероссийский слет школьников.
Там я встретила мальчика, который все время обходил меня на олимпиадах по информатике. Мне стало интересно, как ему удавалось решить задачи, которые не получались у меня.
Хотя я волновалась и стеснялась, смогла преодолеть себя и подошла к нему. Это был один из переломных моментов моей жизни. Я сказала ему, что он очень классный и спросила, где он научился так круто решать задачи. И тут как в кино он расстегнул свою кофту и показал футболку с надписью «Летняя компьютерная школа».
Это летний лагерь, который существует и сейчас. Там преподают выпускники топовых вузов (например, СПбГУ и ИТМО), а фокус сделан на подготовку олимпиадных программистов и спортивное программирование. Недавно программу расширили: теперь там преподают различные языки программирования и технологии.
Я загорелась идеей туда попасть: вернулась со сбора, нашла сайт, заполнила анкету, сделала тестовое задание и подала заявку. Меня приняли — с этого момента моя жизнь изменилась. Я вышла из школьного пузыря и попала в абсолютно другую среду — провела в летней школе месяц, тренировались решать олимпиадные задачи. Конечно, никакого представления о реальных задачах в IT у меня не появилось. Но я убедилась в том, что мне это очень нравится.
«После этого опыта у меня даже не возникало вопросов, куда поступать — я выбрала информатику. Сдала ЕГЭ, поступила и в СПбГУ, и в ИТМО. Выбрала ИТМО, потому что туда поступили многие ребята из компьютерной школы. Вся моя жизнь с тех пор связана с программированием, о чем я ни разу не пожалела».
Cloud Solution Architect Иван Игнатьев: работая с детьми нужно отпустить свое тщеславие
Cloud Solution Architect. Живет во Франции. Работает в PLUTO INFORMATICS. Сертифицированный системный администратор Linux Foundation (LFCS), сертифицированный эксперт по Microsoft Azure и администратор и специалист по безопасности Kubernetes
В Украине, откуда я родом, была сеть центров научно-технического творчества «Юный техник», которая потом преобразовалось в Малую академию наук. В пятом классе я попал туда в кружок по программированию.
Первые полгода нам преподавали компьютерную грамотность и советские учебные программы для детей типа Кукарача. Кукарача и стала моим первым языком программирования: нас учили с помощью инструкций на русском языке передвигать персонажа-тараканчика по полю. Сейчас дети используют среду Scratch — она похожа на Кукурачу и Logo, но вместо таракана и черепашки там котик.
После Кукарачи мы сразу перешли к программированию на Basic. Я, наверное, отношусь к последнему поколению, которое училось программированию, не имея собственного компьютера. Конечно, это было интересно. У нас не было тогда даже телефонов — только калькулятор.
В школе я делал разные игры — змейка, тетрис, морской бой, двухмерные FPS-стрелялки: по полю бегали кружочки и стреляли друг в друга. Еще были викторины – одни из первых игр вроде «Кто хочет стать миллионером». Делать их достаточно просто — выбираешь A/B/C/D и заносишь в базу вопросы и ответы. Я пробовал писать все классические игры, которые знакомы любому ребенку.
Технологии все время менялись: я уже не использую ни один язык, который изучал в кружке. Но занятие дали мне правильное окружение — там было много других увлеченных детей. Те, кому было скучно, быстро отсеивались. Оставались страстно увлеченные люди, которые хвастались друг перед другом, что нового выучили.
Так с десяти лет я начал увлекаться информатикой и программированием — занимался всю школу, а потом поступил в университет и мое хобби переросло в профессию. Спустя некоторое время я сам стал руководителем кружка, в котором занимался.
Как я преподаю программирование детям
При обучении детей преподаватели сталкиваются с несколькими вызовами:
Заинтересовать
Не отбить желание заниматься — это самая главная цель преподавателя. Многим может показаться, что программирование и информатика — это очень скучно, что нужно много математики.
Если ребенку не понравились занятия, стоит разобраться, почему — возможно, причина в преподавателе или в однокурсниках. Тогда можно попробовать еще раз в другом месте. Но если не понравился сам предмет, то заставлять не стоит — пользы не будет, один вред.
Я очень либеральный преподаватель, никого не насилую занятиями. Основная сложность — найти, чем заинтересовать человека, потому что у каждого своя ситуация. Например, если ребенок увлечен музыкой, я предлагал ему сделать музыкальный редактор. Других пытался заинтересовать чатами и сетевыми играми Сейчас часто мотивирую тем, что ребенок сможет писать скрипты для Minecraft.
Работать с большой группой
Чем больше людей, тем сложнее качественно преподавать. Как сделать интересным материал для многих — для меня до сих пор большой вопрос. Мне проще работать с детьми индивидуально.
Есть, например, курс по Computer Science от Гарварда, это целое шоу. Преподаватель поработал над тем, чтобы превратить урок в представление, которое интересно смотреть и захватывает внимание.
Чтобы сделать продукт такого уровня для широкой аудитории, нужен серьезный ресурс. Я никогда не работал преподавателем, для меня вести кружок — хобби по выходным.
Обучить абстракциям и концепциям
С детьми до 14 лет заниматься достаточно легко. Они активные, веселые. Много экспериментируют эмпирическим путем, открыты и любопытны, но тяжело воспринимают абстракции.
Объектно-ориентированное программирование и архитектура приложений для детей — достаточно сложные вещи. Одно дело двигать персонажа или делать игру, а другое — структурировать приложение, проводить рефакторинг. Но этому на кружках обычно не учат — ограничиваются базовыми понятиями и более интересными практическими заданиями.
Например, я сделал урок по робототехнике детям в возрасте около 10 лет. Задал простенькую задачу — сделать так, чтобы машина заехала на парковку. Задачу можно быстро решить математическим путем, вычислив длину окружности колеса: сколько машина проедет, сколько нужно оборотов, чтобы повернуть машину на определенный градус. За 10 минут это все можно просчитать, запрограммировать и оно будет работать.
В теории звучит просто, но преподать этот метод расчета очень сложно. Дети предпочли пойти экспериментальным путем — найти те же самые числа, передвигая машинку и записывая результат. Они добились решения этой задачи без расчетов, потому что так интереснее, нагляднее, машинка двигается постоянно, не нужно сидеть и что-то представлять. Но это заняло час вместо 15 минут.
Читайте также: Что такое пет-проект и где искать идеи: опыт студентов Хекслета
Найти общий язык с подростками
С ребятами 15-16 лет заниматься уже сложнее — есть проблема межличностных отношений, отношений с родителями. В школах подростков часто подавляют правилами и замечаниями, и они замыкаются в себе. В результате их сложно разговорить, получить ответ на вопросы. Подростки меньше проявляют эмоций и не всегда понятно, что с ними происходит. Например, понятен ли им материал и что нужно дополнительно разъяснить.
Закрытость подростков — ключевая сложность для преподавателей. И школа своим давлением совсем не помогает. Вместо поддержки детям там рассказывают, что скоро надо поступать в университет, а они занимаются ерундой вместо того, чтобы готовиться к экзаменам. Так школа убивает энтузиазм учиться.
Обучать онлайн
Для детей при обучении важна среда. Я не сторонник онлайн-формата обучения с маленькими детьми. Онлайн — это очень высокая психологическая нагрузка на ребенка: нужно сохранять высокую концентрацию при отсутствии социального взаимодействия. Хотя есть категории детей, у которых есть психологические или физические предпосылки для онлайн обучения — например, дети с аутизмом могут учиться онлайн и это будет шагом к интеграции в общество. Но большинству детей нужны единомышленники и наставник рядом. Очень скучно заниматься робототехникой онлайн, особенно если не можешь позволить себе приобрести нужный набор компонентов.
Мне самому интересно смотреть детские онлайн-уроки по математике на Khan Academy. Но я не уверен, что этот формат удачен для детей. Мне кажется, что чем ближе к реальности, к социализации, — тем лучше. Социальные навыки и практика для меня важнее теории, которая быстро меняется. Младшего школьника от первой работы отдаляет минимум десять-двенадцать лет, за это время теоретическая база много раз серьезно изменится. Поэтому главное, что должно остаться у ребенка после занятий — сформированное логическое мышление и коммуникативные навыки, а не фреймворки и технологии.
«Мне нравится преподавать. Дети — это всегда позитивная энергия, новые идеи и оригинальный, незашоренный взгляд на вещи. Но если вы привыкли, что что-то устроено определенным образом, это не значит, что так и должно быть. Это требует от преподавателя гибкости, способности принять, что могут быть другие варианты. А для этого нужно отпустить свое тщеславие».
Павел Иванов: объяснить двоичную систему счисления можно даже без компьютера
Преподаватель информатики
Я работаю преподавателем информатики в Проекте «Дети и наука». Это фонд, который занимается образованием детей в небольших группах. У него есть небольшая школа с малокомплектными классами. Я веду там лабораторию по информатике с вечерними занятиями для детей два раза в неделю.
Как составлять программу обучения детей информатике
При обучении детей информатике я всегда учитываю, с какой базой пришел ребенок. Например, если он учится в пятом классе и еще не сталкивался с обычными и десятичными дробями, то может не понять часть материала о типах переменных и их применении. То же самое касается декартовой системы координат, квадратного корня, степеней. Всегда нужно отталкиваться от того, что дети уже прошли по другим предметам до прихода в кружок. Содержание урока не должно превращаться в черный ящик: это приводит к когнитивной перегрузке.
По программе Пиктомир мы занимаемся с детьми из начальной школы — основы программирования там даются на уровне игры. Задача детей — построить логику движения робота и закрасить маршрут с помощью визуальных команд.
«Информатика — не про программирование и не про профессию. Этот предмет преподают, чтобы сформировать общее понимание об информации, вычислимости и развить аналитическое мышление.».
Как мотивировать детей заниматься информатикой
Существует множество способов, но в массовой школе урок информатики идет один раз в неделю, в классе более 20 человек и один преподаватель. Зачастую такие уроки очень неэффективны.
Я считаю, что ситуация в массовой школе не будет лучше, потому что неоткуда взять преподавателей — по нашим оценкам, на рынке не хватает от 300 до 500 тыс. учителей. В результате учителя работают по две-три ставки и быстро выгорают. На индивидуальный подход в массовой школе ресурса и вовсе не хватает.
Во внутреннюю мотивацию ребенка как единственный движущий фактор я не верю, потому что она рано или поздно сужается до узкого круга задач, которые ребенку интересны.
Интерес ― это всегда отрицание другого интереса. Целостное образование так не работает: оно появляется там, где преподаватель этот интерес направляет, заставляет ребенка начать учить что-то новое, чем он сам бы не заинтересовался, направляет и определяет фокус. Какими способами воздействия этого добиться, зависит от политики учебного заведения: например, оно может быть склонно к гуманизму или к административному контролю.
Учебные материалы должны быть проработаны, а для этого необходимо работать вместе с методистами, которые и разрабатывают учебные программы. Делают они это посредством анализа контрольных работ, причин, почему дети не справляются, перестраивая содержание и порядок задач. В массовой школе с этим существуют большие проблемы.
Чем обучение детей отличается от обучения взрослых
Взрослые уже сформированы: у них есть определенная база знаний, сформировались привычки и ритм работы, они выучили некоторые концепции, часть из которых ошибочна. Поэтому взрослых часто приходится переучивать: добиваться, чтобы они понимали идею и подход, а не вслепую воспроизводили решения задач.
Дети учатся с нуля. Можно провести параллель с музыкальной школой: как руку поставили, так человек и будет играть. Исправить это можно, но придется заново раскладывать процесс на элементарные частицы, переучивать движения. Это всегда тяжелее: пальцы уже привыкли ложиться на определенное место. Также и в теоретических областях. Человек привык думать определенными абстракциями, их нужно достать из головы, пересобрать и вложить в правильном порядке.
Плюс некоторые зоны головного мозга у детей в младшей и средней школе только развиваются, и нужно строить учебный процесс, исходя из этого. Например, префронтальная кора, которую обычно связывают с развитием произвольного контроля деятельности, в норме активно развивается в старшем подростковом возрасте.
Различий очень много, поэтому ответ довольно простой: обучение взрослых и детей отличается буквально всем. Обучая взрослых, нужно опираться на андрагогику, а не на педагогику.
Читайте также: Как решить задачу, если непонятно, с чего начать: советы от Хекслета
Какие инструменты мы используем для обучения детей
На уроках мы используем как уже зарекомендовавшие себя, так и новые системы обучения. Среди них КуМир, фэнтэзи-консоли вроде TIC-80 или PICO-8, учебные платы и ретро-компьютеры, готовые теоретические программы и переведенные учебники про устройство компьютера (такие, как «Код. Тайный язык информатики» Чарльза Петцольда) и основы компьютерных наук и математического мышления (такие, как «Искусство доказательства в математике» Дэниэла Веллемана). Каждый учебный материал интересен по-своему. Кратко расскажу о нескольких из них:
КуМир и другие экосистемы
Использовать индустриальные языки программирования (например, С, C# или Java) в больших классах по информатике не стоит. Ошибка, которая может возникнуть в процессе обучения, может быть связана не столько с базовыми концепциями, сколько с деталями реализации конкретного языка. Она будет стопорить учебный процесс для большей части класса и создавать проблемы учителю. Поэтому мы используем инструменты, которые проектировались прежде всего для учебных целей.
К сожалению, экосистем с понятной документацией и описанием ошибок, готовыми практикумами из коробки и собственными учебниками очень мало. Мы стараемся максимально использовать существующие, чтобы разнообразить занятия.
Пример такой экосистемы: среда разработки drRacket. В ней можно переключать диалекты языка, о ней написана книга «Как проектировать программы» (недавно ДМК-Пресс, наша школа и сообщество энтузиастов перевели ее на русский язык) и есть подробная документация.
Мы начинаем учить детей с помощью проекта КуМир Анатолия Кушниренко. Это язык для обучения основам программирования в средней школе. Она активно используется с середины 1990-х и создавалась на основе методики, разработанной Андреем Ершовым в 1980-х. О среде есть учебники: как авторские самого Кушниренко, так и учебники Константина Полякова. В КуМир доступны практикумы, в которых дети, например, могут управлять роботом — заставить его пройти по определенному маршруту и закрасить пройденные клетки.
Главные преимущества КуМира во встроенной в среду документации, интуитивно понятном и простом интерфейсе и устройстве самого языка. Например, если ребенок некорректно называет переменную, он увидит сообщение на русском языке, что ее имя не может начинаться с цифры, а не непонятную пятикласснику ошибку Syntax Error в REPL. В Python типичная ошибка выглядит как «нет метода foo у объекта bar». Ребенку, не знакомому с ООП, будет очень сложно разобраться в причинах возникновения ошибки и это значительно усложнит обучение.
Хотя я работаю с детьми пятого-седьмого классов, геймификация позволяет давать им элементы материала более старших классов.
Читайте также: Публичные выступления, грамотные коммиты и еще два навыка для долгосрочного роста программиста
Конечно, всегда есть более и менее способные ученики. Я стараюсь подбирать материал так, чтобы он покрыл максимальную аудиторию. В небольших классах эта проблема почти не стоит: к каждому можно найти индивидуальный подход.
В КуМире все ошибки расписаны понятно: ребенок может исправить и найти их самостоятельно. Плюс ребенку гораздо легче разрешить проблемы алгоритмического понимания работы кода, работая с процедурным языком. В Python принципы ООП начинаются с самого начала: нельзя программировать на нем, не разобравшись с ними. В этом языке программирования даже коллекции и модули имеют объектный интерфейс.
Когда персональные компьютеры стали популярны в начале 1980-х годов, их стали завозить в школы и учить детей в начальных классах детей на них печатать. Одновременно с этим давали язык Logo с базовыми командой и черепашкой, которая умела рисовать. С ее помощью можно было создавать простые и сложные графические изображения командами по учебнику. В то же время автор классического курса по введению в компьютерные науки «Структура и интерпретация компьютерных программ» Гарольд Абельсон написал книгу «Черепашья геометрия», по которой дети могли изучать базовую математику через язык Logo. Для этого они должны были писать микропрограммы, которые объясняли основы геометрии, физики и так далее. К сожалению, эта книга устарела вместе со средой, в которой велась разработка.
PICO-8
PICO-8 — 8-битная фэнтези-консоль, которая позволяет буквально в несколько строк на урезанном диалекте языке Lua, написать игру и быстро выложить ее в онлайн, чтобы другие пользователи в сообществе смогли в нее поиграть. Например, тетрис или платформер с уровнями в режиме редактора. Фэнтези-консоли ― это интересное направление: они возвращают пользователя во времена Commodore и ZX Spectrum, когда разработка игр не была такой сложной, как сейчас.
Сейчас мы изучаем, что еще можно внедрить для обучения в начальных классах средней и в начальной школе, чтобы дать детям основы вычислительного мышления. Нам важно научить детей навыку генерализовать задачи, выделять из них части, представлять в виде алгоритма, рецепта. А еще мы хотим давать базовые математические понятия под соусом информатики. Эти знания потом пригодятся в основном математическом курсе.
Допустим, в PICO-8 при разработке игр дети неизбежно сталкиваются с необходимостью написать функцию-предикат для определения столкновений между объектами. Задача учеников — просчитать математически, например, пересекаются ли точка и круг на игровом поле или нет. Для решения этой задачи используется формула теоремы Пифагора. С ее помощью дети определяют дистанцию между точкой и центром круга. И если эта дистанция меньше, чем радиус круга, то возникает коллизия.
Гигатрон
В 70-х годах плату на компьютер можно было просто спаять — напечатать, расставить на ней микроконтроллеры и получить приставку к телевизору с клавиатурой, на которой уже можно было что-то попечатать. Это делалось с нуля вручную. Существовали DIY-клубы вроде Homebrew Computer Club, из которого родилась компания Apple.
Гигатрон устроен по принципу раннего компьютера: это минималистичный 8-битный ретро-компьютер. Все элементы припаиваются на одну плату и в итоге вы получаете компьютер, на котором можете запустить Snake, Фрактал Мандельброта, распечатать что-то, картинки посмотреть. Все это делается с нуля из элементарных компонентов. Мы в школе пытаемся демонстрировать подобные вещи, показывая, как устроен компьютер, отталкиваясь от основ.
CS Unplugged
CS Unplugged — это готовые пакеты для преподавателей по темам из компьютерных наук, которые подаются в виде игры, и которые мы планируем перевести на русский язык в ближайшее время. Чтобы заниматься по ним, компьютер не нужен. Посмотреть, как работает система, можно на YouTube.
Все объяснения концепций, алгоритмов, систем счисления в ней наглядные и интересные. Пакеты подходят для возраста от шести до двенадцати лет и очень нравятся детям. Например, можно объяснить, что такое алгоритм двоичного поиска буквально на пальцах.
Micro:Bit
Это учебный микроконтроллер — небольшая плата, у которой есть контакты, экран со светодиодами, две кнопки, набор элементарных датчиков вроде акселерометра и Bluetooth-антенна. Плату можно расширять дополнительными модулями и программировать их — например, подключить дополнительный экран или джойстик, набор для автополива цветов или робота, умеющего кататься по заданной траектории.
С помощью Micro:Bit можно разобраться в принципе работы микроконтроллера и в том, как он программируется — что никакой магии здесь нет, этот контроллер можно подключать к внешним устройствам, и он будет работать. Это один из оптимальных конструкторов, который можно использовать, чтобы объяснить, как работает компьютер.
Литература
Недавно совместно с «ДМК Пресс», мы начали переводить книги для основ компьютерных наук. Одна из них ― «How to Design Programs» («Как проектировать программы»). Она считается более простой, чем легендарный SICP, и предназначена для людей, которые хотят научиться проектированию программ и основам вычислительного мышления. Книга уже доступна для приобретения в магазине ДМК.
Стоит ли заставлять детей учиться
Я рекомендую посмотреть лекцию Тамары Эйдельман «Школа ― не поле для битвы». Там она говорит следующее:
«Когда я начинала работать, все истории о том, что делали другие учителя, и то, на чем я себя ловила, казались мне дикими. Я думала, что я пришла в школу, чтобы принести туда свободу. В какой-то мере я думаю так и сейчас. Но мне это представлялось так: «Ура, ребята, свобода! Все!». Что все? Вам все можно? Это тот вопрос, на который, как мне кажется, педагог отвечает для себя каждый день: где найти баланс между свободой и принуждением? Как сделать так, чтобы свобода не стала вседозволенностью, а принуждение не стало унижением?
Сейчас существует огромное количество замечательных методик свободного образования. Они прекрасны, очень хороши. Из них очень многое можно взять. Очень здорово играть с детьми: играть любят все с первого по 11 класс и даже взрослые. Можно учить через игру, но можно ли учить только через игру? Дети будут нестись в школу счастливые, но они не научатся тому, что они должны делать какие-то вещи, даже когда им не хочется. Это такое, может быть, не очень приятное умение, но, согласитесь, довольно важное в нашей жизни».
Я считаю также: воспитательный момент ― это всегда компромисс. А опираться только на внутреннюю мотивацию ребенка к игре нельзя. Должен быть воспитательный момент, потому что ресурсы естественного интереса довольно ограниченны. Детям тяжело объяснить, зачем им учиться чему-то. Но есть вещи, которые просто нужно знать — в какой-то момент нужно настоять, чтобы ребенок это выучил. Иначе в будущем могут возникнуть проблемы.
Например, у человека не было интереса к математике и в седьмом классе он бросил ее учить. Но прошло время, он закончил бакалавриат по филологии и решил пойти в магистратуру на компьютерную лингвистику. И тут оказалось, что понятия алгоритмов, теории вероятностей и матстатистики ему нужны. Но пропустив четыре года занятий по математике в школе, он создал себе образовательные тупики.
«Школа существует для того, чтобы объяснить объективные реалии окружающего мира. Поэтому программа дает всеобъемлющие знания. Мы не можем предсказать, куда человек свернет в своей жизни, но базовые понятия о мире, в котором он живет, и его устройстве он должен иметь. Информатика ― это один из тех предметов, который описывает эту объективную реальность».