В прошлом году у меня была возможность поработать с соучредителем фонда WAAW, доктором Уномой Окорафор, над разработкой учебной программы, чтобы научить женщин изучать программирование для решения основных проблем в их сообществах. В феврале 2017 года я присоединилась к доктору Уноме и ее команде фонда WAAW в Нигерии, чтобы опробовать учебную программу в рамках программы фонда SheHacksAfrica, трехнедельного интенсива по программированию для женщин в Африке.

ИННОВАЦИИ, ОТКЛЮЧЕННЫЕ

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

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

ПРОГРАММИРОВАНИЕ ВАШЕГО РОБОТА

Базовое задание «Запрограммируй своего робота» требует, чтобы одна группа учеников взяла на себя роль «программиста», а по крайней мере один ученик должен взять на себя роль «робота». Задача, поставленная перед студентами SheHacks, заключалась в том, чтобы запрограммировать своего «робота» так, чтобы он ходил из одного конца комнаты в другой. Команда должна была следовать трем правилам:

  • Роботу завязывали глаза, прежде чем они начинали свою процедуру программирования.
  • Начальное и конечное местоположение маршрута нельзя было изменить (примечание: мы выбрали маршрут с препятствиями, такими как мебель и повороты).
  • Последний шаг должен дать указание роботу сесть на стул, расположенный в конце маршрута.

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

ПРОВЕРКА ВАШЕГО РОБОТА

Большинство команд не смогли заставить робота пройти из точки А в точку Б из-за мебельных барьеров и необходимости поворота направо, чтобы добраться до места назначения. Они узнали о влиянии переменных зависимостей, таких как «размер обуви», походка, точное исходное положение и другие переменные факторы. Одна команда, которая выполнила цель, сделала это с очень небольшим отрывом; сдвинься их робот на несколько сантиметров, он ударился бы об пол, а не о сиденье стула.

УСТРАНЕНИЕ НЕИСПРАВНОСТЕЙ ВАШЕГО РОБОТА

Идеи команды по улучшению своих «программ» были сосредоточены на определении более точного количества шагов путем более точного измерения комнаты или определения размеров обуви. Это отличные идеи, но они добавляют еще одну зависимость: рулетку (у нас ее не было).

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

  • Внимательно наблюдайте за своим окружением. Выявите менее изменчивые факторы — в комнате были квадратные потолки и плитка на полу. Внимание к деталям является важным навыком для программиста.
  • Контролируйте точку входа — X должен обозначать начальную точку робота. Многие из их программ начинались с того, что робот стоял «где-то рядом» с точкой старта.
  • Наблюдайте за текущим состоянием и при необходимости измените его. Определите любые факторы, которыми вы можете управлять, чтобы улучшить успех программы. Робот слепой или видит?

СЕКРЕТ

Никто никогда не говорил, что повязку нельзя снять. Вы управляете компьютером.

ПСЕВДОКОД
Если не entryPoint, то установите entryPoint
Если robot.vision = false, то удалите повязку на глаза
Для x = 0, чтобы плитки повернуть Переместить 1 плитку
Повернуть направо
For y = totilesToSeat Переместите 1 плитку
Поверните направо
Переместите -1 плитку
Сядьте