Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Образовательные ступеньки в информатике для малолеток

Самое трудное в образовательной практике -- это предложить какую-то связанную последовательность курсов. Так, курс алгоритмики в ПиктоМире -- это всего две недели, а курс алгоритмики с роботом на КуМире -- это ещё полгода, на уровне начальной школы. Что делать после этого?! Бросать информатику на пять следующих лет, потом добавить еще полгода какого-нибудь программирования на уровне средней школы, и опять бросать? Ниже -- мои соображения сегодняшнего дня, и более прагматичные: я постарался быть максимально приближенным к нынешним софтовым реалиям, а не изобретать новые обучающие среды и новые языки программирования. Прошлый раз я много более радикально фантазировал на эти темы примерно год назад -- http://ailev.livejournal.com/955671.html.

Главная мысль -- что нет никаких "одиноких курсов, сферических в вакууме". Это всё короткие (по сравнению с общим временем образования) ступеньки каких-то учебных многоуровневых лесенок, и нужно чётко понимать: что перед, и что после каждой ступеньки, и исходить из удивительной скоротечности каждой отдельной ступеньки.

Основной принцип этой "ступенчатости": решение множества задач для каждой "ступеньки", при росте как выразительных средств (от игрушечных языков до настоящих), так и сложности решаемых задач (по мере роста "настоящести"). Искусство тут -- как не застревать на отдельных ступеньках, так и не пытаться скакнуть через ступеньки (типа начинать обучать малолеток сразу Ершолу в КуМире без пиктографического языка из ПиктоМира, и Питону без Ершола).

1. Алгоритмика -- ПиктоМир.
Это две недели, но без этой махонькой ступеньки малолеткам очень трудно прорваться к настоящей алгоритмике с использование текстового языка. Подробности -- http://ailev.livejournal.com/922715.html (и парочка видео с семинаров: http://ailev.livejournal.com/966698.html, http://ailev.livejournal.com/973947.html).
Это должен быть пиктографический язык, минимизирующий собственно "язык программирования". Исполнитель почти ничего не умеет делать, мир/обстановка крайне бедна. И это хорошо, это всего на пару недель поиграться, бедность тут не порок, а тщательно разработанное достоинство.

Дитёнка после этого соображает про последовательность команд, исполнителя, алгоритм и вспомогательный алгоритм, повторения и условия.

2. Алгоритмика -- нарисованный робот в КуМире.
Это примерно полгода, никаких структур данных, и почти никакой численной математики (за исключением нескольких задач в самом конце курса -- на "радиацию").

Подробности -- http://ailev.livejournal.com/948015.html, а про особенности перехода от ПиктоМира к КуМиру я рассказал в http://ailev.livejournal.com/1013690.html. Почему не страшно этому учить малолеток (ибо некоторые волнуются, что "у обученного этим страшным вещам дитёнка не будет детства") -- http://ailev.livejournal.com/966480.html

Дитенка после этого может писать простейшие программы на императивном языке со "структурным программированием", но ничего не понимает в структурах данных. Это должен быть Ершол, а не "настоящий язык программирования" -- т.е. сам язык программирования должен быть беден и минимален (зато русскоязычен, плюс крайне конкретизированная диагностика ошибок).

3. Алгоритмика -- embedded systems, настоящий робот LEGO.
Правильно было бы оставить язык Ершол и среду КуМира, но нарисованного робота заменить на колёсного из LEGO. Я бы намеренно ограничился датчиком освещения, датчиками пульта управления (в качестве которого мог бы выступать смартфон с тачскрином, например), видеокамерой (тоже от смартфона) и двумя колёсами как эффекторами. Это я так учитываю свою неудавшуюся попытку сразу скакнуть через несколько ступенек (http://ailev.livejournal.com/983196.html).

Примерная последовательность серий задач курса:
-- расчёты скорости передвижения при параллельной работе колёс по прямой (при этом колёса будут разных диаметров – маленькие, большие и очень большие)
-- расчёты скорости передвижения при поворотах разного радиуса (змейки), также при разных колёсах.
-- калибровки невязки между колёсами и прохождения сложных маршрутов
-- алгоритм ПИД и прохождение по нарисованной кривой. Калибровка алгоритма (разные кривые). Это традиционное первое соревнование роботов.
-- пульт дистанционного управления (там много особенностей, ибо управление должно быть пропорциональным)
-- подключение телефона с видеокамерой, прохождение по нарисованной пунктирной линии – это традиционное второе соревнование роботов.
-- повторение всего предыдущего набора задач для Python (меняем язык, но оставляем предметную область: просто повторяем все задачи, формулируя их на "настоящем языке программирования" -- понятно, что этот Python практически не будет использоваться в части его структур данных, это пока алгоритмика).

Тренируется:
-- плавающая арифметика (хинт: в начальной школе этого нет)
-- математика обороты-диаметры-пути-скорости, коэффициенты (ага, понятие "коэффициента" в начальной школе -- это не так просто)
-- освоение разных исполнителей (датчики освещенности, пульта управления, видеокамера; эффекторы – колёса и дисплей робота)
-- пропорциональность (ПИД и работа с пультом), реальное время
-- разборки с пикселями при работе с видео
В итоге -- понимание, как программируются современные механизмы (embedded systems), а также переход к относительно современному языку/среде программирования (Python). Но это только алгоритмика, ибо ни о каких структурах данных речи ещё не идёт.

4. Информатика = алгоритмика + структуры данных.
Берётся какая-то оффлайновая игра, и к ней пишутся скрипты на Python -- моды, NPC и т.д.. Мир опять становится "нарисованным", но уже 3D, и отнюдь не "простым": богатые структуры данных нужны именно для представления сложного мира -- это совсем по-другому "интересно", нежели какие-то бедные "нарисованные миры" в курсе алгоритмики, что я отмечал при выборе робототехники на третьей ступеньке в http://ailev.livejournal.com/967480.html. Интерфейс скриптования игр содержит большое количество развесистых структур данных, и дитятко учится с этими структурами данных работать. За идею спасибо justy_tylor. Другим кандидатом в языки выступал Lua, но целью данного "семестра" является уже не "алгоритмика", а разбирательство со структурами данных -- поэтому Python, в нём это побогаче будет. Но недостаточно богато, чтобы вляпаться в "перескок через ступеньку сложности" и попасть в какой-нибудь материал, доступный только для студентов (не забываем, что мы учим деток, это даже не старшая школа!).

Далее -- можно повторить всё то же самое для какой-то из MMORPG (программирование-в-большом!), и даже можно поменять язык программирования (ибо к этому моменту будет опыт как смены языка, так и смены "мира/исполнителей", хотя и по отдельности -- и речь идёт о таком же скачке, только "комбинированном").

5. Информатика как таковая -- с выходом на программную инженерию.
И только теперь можно думать о лингвистике, компиляторах, базах знаний/онтологиях и прочих специфических задачах. Ну, и об инженерии (требованиях, архитектурах и т.д.) тоже позже (см. последовательность, которую я предложил в постинге "верхнее образование инженеров-программистов" http://ailev.livejournal.com/937201.html).

Увы, учебный софт и наборы задач существуют пока только для первых двух ступеней, а вот для третьей и четвертой -- придётся изобретать по ходу дела, и срочно (см. http://ailev.livejournal.com/1020631.html). Для пятой -- пока даже не обсуждаем.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 31 comments