Найти в Дзене
Nuances of programming

Как обучать программированию подростков?

Оглавление

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

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

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

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

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

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

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

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

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

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

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

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

-2

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

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

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

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

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

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

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

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

-3

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

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

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

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

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

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

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

-4

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

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

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

Вывод

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

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

Читайте нас в телеграмме и vk

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