Education

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

Я нашел множество ресурсов для обучения программированию учеников начальной школы. В качестве примера приведу Scratch и “Час кода” на Code.org, которые помогут новичку познакомиться с программированием.

На этих платформах ученики пишут простые программы: двигают нарисованных существ или создают простые игры, чтобы изучить самые основы программирования, такие как циклы и условия. Также в процессе ученики разовьют навыки, которые пригодятся им в будущем при решении различных задач. Главным достоинством этих платформ является то, что система общается с учеником. Это поддерживает интерес ребенка к занятиям.

Однако, обучение программированию подростков старше 6-го класса — это совсем другое. Согласно этой статье, более чем у 95% современных подростков есть смартфон. Поэтому визуализированные данные на Scratch и Code.org их больше не удивляют. Наоборот, я обнаружил, что подростки считают, что это выглядит по-детски и неинтересно.

Вместо этого подросткам хочется создавать что-то реально полезное, что-то, чем они могут похвастаться. Например, написать и запустить реальное приложение на iPhone, или создать собственный сайт, или же взломать какую-нибудь сеть. Но как научить ребенка, умения которого ограничиваются несколькими упражнениями на Scratch, создать приложение на iPhone, так, чтобы у него хватило запала довести это дело до конца?

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

Главная цель этой статьи — поделиться своим опытом, так как я надеюсь, что помогу заинтересовать и других подростков заняться программированием.

У подростков завышенные ожидания

Я понял, что подростки впитывают новые знания, как губка. В то время как взрослые могут смириться с тем, что чего-то не понимают в современной технике, подросткам жизненно необходимо быть крутыми и разбираться в во всех трендах. Я заметил, что подростки обычно пользуются самыми новыми и лучшими приложениями ещё до того, как они появятся в заголовках на TechCrunch или CNBC.

Именно мои ученики показали мне кучу игр “.io” и HQ Trivia. Для них важно, чтобы они изучали что-то крутое, чем они могут поделиться с друзьями.

Первый же их вопрос на первом занятии звучал так: “А мы сможем взламывать сайты и приложения?”.

Я сказал им, что сперва нужно изучить HTML и CSS, чтобы понять, как взламывать сайты и показал им это:

<!DOCTYPE HTML>
<html>
  <head><title>Hello World!</title></head>
  <body><h1>Hello World!</h1></body>
</html>

Я объяснил, что значит каждый тег, и как они будут отображаться на странице. Я загрузил страницу с hello.htmlи все их ожидания увидеть крутую веб-страницу пошли прахом. Им стало очень скучно.

Однако, я продолжил объяснять им HTML, CSS и основы JavaScript. Мне казалось, что им будет интереснее изучать HTML, CSS и JavaScript а так же техники создания простых сайтов. Я был неправ.

Даже после создания нескольких сайтов и запуска их на Firebase, они продолжали твердить, что хотят заниматься чем-то более “реальным”, что они смогут показать своим друзьям.

Их нужно учить делать что-то реально полезное

Я понял, что есть много способов создавать что-то реальное, и это совсем не написание программ с красивым графическим интерфейсом, обучение их структурами данных и т.д.

Я решил, что лучше всего использовать аппаратное оборудование, чтобы ученики могли физически увидеть, что они программируют. Мой выбор пал на Raspberry Pi и Arduino.

Raspberry Pi — это миниатюрный компьютер, на который установлена специальная версия Linux, а также он может работать с большинством языков программирования. Вы можете приобрести различные периферийные устройства, которые могут управляться с помощью созданного вами программного обеспечения.

Arduino сложнее. Это платформа аппаратного обеспечения с открытой спецификацией, и многие компании создают различные устройства, например, автомобиль с автоматической системой управления или четвероногий робот.

При помощи Raspberry Pi мы построили метеостанцию, которая определяет температуру и давление в окружающей среде и отправляет эти данные в облачную базу данных. После этого ученики могли видеть данные по погоде благодаря обновляющемуся графику. Также в рамках этого проекта мы создали простейшие функции, например, меняющиеся единицы измерения температуры или обнаружение минимальной, максимальной и средней температуры. Эти занятия помогли ученикам изучить простые структуры данных и алгоритмы, такие как потоки и сортировка.

После этого мы создали автомобиль с автоматической системой управления на базе Arduino. Каждый ученик написал программу, которая позволяла машине двигаться и обнаруживать препятствия. Затем мы построили лабиринт и я назначил приз тому ученику, чья машина первой выберется из этого лабиринта.

Ученики свободно обсуждали между собой логику, которая поможет машине быстрее выбраться из лабиринта. И им показалось очень классным, что построенная ими машина мгновенно заучивает написанный ими алгоритм. Но самое важное, что ученикам это действительно понравилось, так как эта машина была реальна и осязаема.

Также мы выполнили несколько упражнений, чтобы понять основы взлома. Так же, как и на LeetCode, где участникам помогают решить проблемы с собеседованиями, существует много способов обучить детей основам взлома. Например, HackThis — отличный сайт, который предлагает вам ряд задач, который вы можете просмотреть и решить в вашем браузере. Для решения вам придется использовать инструменты вашего браузера, например инструменты разработчика Chrome, чтобы найти уязвимости, использовав которые, вы сможете получить доступ к системе.

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

Когда они будут более подготовлены и изучат основы Linux, я планирую научить их взламывать при помощи Kali Linux. Думаю, это им понравится ещё больше.

Конкуренция как инструмент обучения

 

И наконец, последнее, что я понял: подростки очень любят соревноваться. Им нравятся упражнения, после которых им сразу дают обратную связь: объявляют счет, дают значки достижений или формируют списки лидеров.

Лучшей платформой, которая мотивирует учеников, по моему мнения, является CodingGame. На ней подростки решают задачи по программированию и повышают свой уровень. Также стоит отметить отличную визуальную составляющую упражнений, что удерживает к ним интерес учеников.

Также мы начинали занятие, уделяя немного времени Clash of Code — быстрой 5-минутной задачке по программированию, в решении которой ученики соревновались с другими ребятами онлайн. И иногда мои ребята опережали игроков, чей уровень был выше, чем у них. Это давало им огромный толчок, чтобы начать очередное занятие по программированию.

Вывод

Обучать программированию очень весело и познавательно. Вы не только узнаёте, как нужно учить других людей, но и сами встаёте на их место. Вы начинаете понимать, как другие люди смотрят на задачу, и что существует множество разных путей решений одной задачи. Также вы учитесь объяснять условия задачи так, чтобы ученикам интересно было над ней думать.

Спасибо, что дочитали до конца!

Перевод статьи Sean ChoiHow to teach programming to teenagers