Школьная информатика делится примерно на 2 больших раздела — базовые компьютерные навыки и навыки программирования.
К базовым компьютерным навыкам можно отнести темы «что такое папка и файл», а также «подготовка презентаций в программе MS PowerPoint».
К навыкам программирования — все, что касается представления и обработки информации.
И мне не очень нравится то, какие варианты есть для получения навыков программирования.
Уровень обучения (и, соответственно, понимания) базовым вещам довольно низкий. Пример — ниже.
Почему это важно? У Украины огромный потенциал, наши программисты на первом месте по фрилансу в Европе, айти-индустрия может наполнять бюджет гораздо сильнее, чем сейчас.
По идее, в школе на уроках информатики должны обучать принципам работы с информацией — и таким образом подготавливать ученика к новому миру 21 века.
Ведь именно для подготовки к этому многие правительства вкладывают средства в программы обучения программированию в школах — рассчитывая, что чем раньше, тем лучше.
На сегодняшний день занятия по программированию вводятся в младшей школе многих стран первого мира (Соединенные штаты, Канада, Китай, Великобритания и т. п.).
В нашей стране также размышляют об этом, например, вот отчет по социологическому исследованию прошлого года. Из него видно, что почти 84% опрошенных хотели бы, чтобы «Программирование» как школьный предмет был добавлен в учебную программу.
Однако, как я уже сказал, у меня есть ощущение, что действительно понять, научиться по тем материалам, которые сейчас есть — довольно сложно.
И, в качестве минутки славы, расскажу, как мы подошли к решению этого вопроса.
Рассмотрим базовую задачу школы (а иногда и университета) — подготовка по вопросу «системы счисления и их применение».
Мой критерий успешности обучения прост. У любого ученика или студента сразу возникает вопрос «а зачем это нужно?» — и, если он удовлетворен ответом, то еще и вопрос «как это работает?»
Если обучающийся получает ответ на эти два вопроса, то ему несложно освоить данную тему, так как он понимает общий контекст и ему интересно, а полученные знания и навыки он начинает считать «своими собственными», они добавляют ему ценности.
Если же у него нет ответа на какой-то из двух этих вопросов, то такая тема считается мучительно сухой, идет она тяжело и быстро забывается, а студент думает плохо и о себе, и об учителе. Нам такого не нужно.
Возьмем тему «Системы счисления».
Чтобы проверить, понял ученик тему или нет, я задаю всего 2 вопроса:
Если считать в двоичной системе, какое число идет после 111?
Переведи в уме двоичное число 1010 в десятичное — сколько будет?
Если отвечает уверенно и достаточно быстро — значит, суть понял, потому что эти два вопроса элементарны для того, кто ПОНЯЛ, и трудны для того, кто просто ЗАУЧИЛ.
Системы счисления — в обычной школе
В школе идут путем объяснения математического аппарата, стоящим за системами счисления. Получается довольно сухо. Например, перевод десятичного числа в двоичную форму делается через множественное нахождение остатка после деления на 2.
Я считаю, это довольно неочевидный способ. Еще можно понять, почему происходит именно деление на два (ибо перевод происходит в двоичную систему), но уже довольно трудно пояснить, отчего же полученные остатки потом нужно записывать в обратном порядке.
А если ученику непонятно, то и не интересно. А если нет интереса, то и запоминается с трудом.
В жизни ученик делает вывод «Это слишком сложно! И не нужно!» — и применять это не будет. Еще и про себя подумает «опять я ничего не могу понять».
Выходит, что школа дает довольно слабый ответ на вопрос «как», и практически не отвечает на вопрос «зачем».
Ладно, идем дальше.
Системы счисления на онлайн-курсах
Давайте попробуем зайти на «Прометеус» — у них на курсе «Программирование на языке Питон» рассказывают и о системах счисления (таймкод 11:00).
Но мы видим довольно сухую статичную схему. Вам нужно разобраться в довольно сложной теме двоичного исчисления за несколько минут видео, глядя на схему — даже не очень понятно, что и как меняется.
Очевидно, что ответа на вопрос «какое число идет после 111» вы не получите — непонятно.
Думаю, никого не удивит, что разобраться таким методом будет немыслимо тяжело.
Ну хорошо, ну может довольно разрекламированный курс Гарвардского университета по компьютерным наукам "CS50" поможет? Давайте проверим (таймкод 3:00).
Американский парень просто вам говорит, что «ноль — это ноль», «один — это один», а потом сразу будет 10, и потом 11. Понятно? Думаю, нет.
Вот спросите кого-то, кто не программист, а каким будет следующее число? Я думаю, он не ответит.
Принцип переноса разряда проскочили, и все, уже непонятно.
Что мы предлагаем
Мы решили взяться за эту проблему и рассказать ее постепенно (чтобы было понятно) — мы отсняли видеоролики по каждой из этих тем:
- понимание принципа «системы счисления» (это главное);
- как переводить числа из одной системы счисления в другую;
- где это применяется в жизни, вокруг нас.
Мы взяли только 2, 10 и 16-ричными системами (8-ричная система идет бонусом в одном видео). Да, ученик не будет знать, как перевести число в какую-нибудь шестиричную систему, но мы подумали, что это не критично — важно понять 3 основные системы.
1. «Двоичная система счисления»
Вставка из кино вначале — это и есть первый ответ на вопрос «Зачем это нужно?» В фильме «Ядро» программист-хакер говорит военным: «Вы сколько языков знаете, пять? А вот я — всего один, это нули и единицы, но его одного хватит, чтобы украсть все ваши деньги из любой точки мира».
Дальше берём метафору «одометр» (это прибор в авто, который крутится и показывает, сколько машина проехала), и показываем очевидную вещь, как это работает для десятичной системы — а потом по тому же принципу показываем на двоичном «алфавите».
Вот тут и происходит магический момент — ученику становится ясно, как это работает, и вот он уже, представляя себе одометр, мысленно крутит колёсики и говорит: 0, 1, 10, 11, 100.
«Аха»-момент достигнут!
Но у нас есть кое-что и поинтересней. Показываем биты на прямо на руке!
Все пальцы сжаты — это 0.
Оттопырен большой палец — это 1.
Оттопырен только указательный палец, а большой сжат — это 10 (в десятичной системе это просто 2).
Оттопырены указательный и большой пальцы — это 11 (то есть 3).
«А теперь покажите следующее число (десятичное 4)», — говорю я. Говорю эти тихим голосом, потому что я знаю, что сейчас будет взрыв восторга.
Я проверял это на детях в классе несколько раз — это непередаваемое ощущение, когда весь класс медленно, вдумчиво оттопыривает средние пальцы, при этом у отличниц глаза делаются большими из-за смешанных чувств между «это правильный ответ!» и «о боже, что я делаю?!», а мальчишки на задних партах показывают друг другу в лицо средние пальцы и орут «На 4! На 4!»
Скажете, провокативно? Да, очень!
Поняли они материал? Однозначно да. Это нам и нужно.
Если выбирать между «тема слишком скучная» и «им придется показывать неприличные жесты, зато запомнят» лично я выбираю понимание и обучение. Я знаю многих, кто со мной не согласятся, но также знаю и многих учителей, которые пользуются нашими видео именно из-за вот таких нестандартных ходов.
2. «Шестнадцатеричная система счисления»
Когда тема «двоичная система счисления» уже пройдена, то можно не обрезать «алфавит» цифр, а наоборот, наращивать.
И тут мы сразу даем несколько ответов на вопрос «зачем это нужно».
Во-первых, это RGB-кодирование цвета — а ну-ка, давайте в CSS поменяем синий цвет шапки Фейсбука на красный? Или зеленый? Какой вы хотите?
Во-вторых, на примере фильма «Марсианин» разбираем, как главный герой наладил общение с базой на земле, хотя у него была только камера, которая умела поворачиваться на заданный угол — именно за счет кодировки символов ASCII в 16-ричных символах. А это уже хорошее начинание по большой теме «Кодирование символов» из школьной программы.
3. «Перевод чисел из 2-чной в 10-чную систему счисления»
Перевод из двоичной в десятичную и обратно мы разбираем сначала по-школьному, академически правильно (т. е. медленно), а потом по-нашему — на пальцах и быстро.
Из двоичной в десятичную систему в школе переводят вот таким образом:
А мы учим делать это практически мгновенно вот так (для этого придется заучить наизусть таблицу первых степеней двойки):
4. «Перевод из 10-чной системы счисления в 2-чную»
Обратная операция «по-правильному» делается ну очень долго:
Мы же сначала предлагаем выучить степени двойки (играя в игру "2048" на телефоне, она бесплатна — видите, даже игры могут быть частью обучения), а потом опять делать перевод быстро — на пальцах:
Провокации продолжаются — ведь тема большая. Учитывая, что ответ на вопрос «как» — всегда технически сложный (нужно освоить новый трюк), без провокаций тут не обойтись — все ради того, чтобы «активное пятно» в мозгу было больше и активнее.
Дальше темы обзорные, для расширения кругозора — применение всех 3 систем счисления в жизни (закрепление ответа на вопрос «зачем это нужно»).
5. «Применение 2-чной системы счисления в реальной жизни»
Мы решили рассказать о QR-кодах в качестве применения двоичной системы. Ведь там даже есть защита от повреждений (дополнительная информация для восстановления в конце).
Мы показываем, как фраза (в данном случае — "Zero to hero", название нашего проекта) перерабатывается в биты, а потом в QR-картинку с довольно сложной структурой.
5. «Применение 16-чной системы счисления в реальной жизни»
16-ричная система — самая ёмкая из всех, и именно поэтому она используются для кодирования чего-то объемного. Например, для записи MD5-хеша при скачивании фильма или UUID-хеша для нумерации объектов — всего 32 символа, чтобы проверить, правильно ваш фильм скачался или нет.
6. «Применение 8-чной системы счисления и права доступа к файлу»
Тут просто — объясняем, что такое права "755" для файла в Линуксе. Это полезно и для будущих веб-дизайнеров, и для сисадминов.
В одной толковой книжке под названием «Искусство объяснять» говорится, что хорошее объяснение снижает цену, которую ваш ученик «платит» за понимание. Если объяснение хорошее — он заплатит несколькими минутами. Если объяснение скучное и плохо состряпанное — ему придется грызть этот гранит довольно долго, пока наконец он не достигнет нужного «аха!».
Увы, обычные учебные заведения мало пытаются эту цену снизить — потому что это сложно, действительно сложно.
А мы пробуем. Пользуйтесь на здоровье.
P.S. Сейчас мы хотим перевести эти видео на украинский язык. Если кто-то захочет помочь — напишите мне на [email protected]