В декабре 2016 года Я написал о своем опыте обучения программированию моего 10-летнего сына. Полтора года спустя его путешествие продолжается со множеством взлетов, падений и сюжетных поворотов.
«Папа. . . Мне скучно! »
Если вы родитель или учитель, вы наверняка слышали это много раз. У детей, как и у большинства людей, короткая продолжительность концентрации внимания, что приводит к кратковременным всплескам активного взаимодействия с новыми игрушками, играми или занятиями, за которыми следуют длительные периоды отсутствия интереса. Как только новизна стирается, им становится скучно, и они ищут что-то новое - это на самом деле похоже на интерфейс веб-разработчиков 😉. Мой сын ничем не отличается.
Каникулы: январь 2017 г. - июль 2017 г.
Энтузиазм моего сына к программированию угас вскоре после того, как я опубликовал первую историю в декабре 2016 года. К январю 2017 года он столкнулся с крутой кривой обучения веб-разработке.
Если вы не знаете, насколько устрашающей является веб-разработка для новичков, прокрутите учебную программу freeCodeCamp (замечательный ресурс, кстати!) И просмотрите оценки времени завершения - и это только для интерфейсной веб-разработки! Это все равно, что подняться на вершину горы и оказаться у подножия другой горы. Не очень мотивирует для 11-летнего ребенка.
Вы могли подумать. . . «Почему я начал его с веб-разработки?»
После Scratch и недолгой работы с Python я в конечном итоге остановился на Javascript и HTML, потому что я веб-разработчик, и это то, что я знаю. Что может быть лучше, чем внутренний наставник, доступный в любое время? Я думал. Оказывается, многое.
Веб-разработка не так хороша для детей
Оглядываясь назад, я думаю, что веб-разработка не является идеальной отправной точкой для детей, переходящих на текстовое кодирование. Дети от природы хороши в обратном проектировании; но в современной веб-разработке увидеть понравившийся веб-сайт и создать его намного сложнее, чем кажется. Репликация современных веб-сайтов с нуля требует многих дополнительных навыков, помимо Javascript и HTML: CSS, JS-фреймворки, инструменты сборки, базы данных, серверные языки и многое другое. Сложность современного веб-разработчика непроста для новичков, не говоря уже о 11-летнем ребенке с ограниченным временем. Всегда есть чему-то еще, чему нужно научиться - за этим очень сложно угнаться.
Как я вписываюсь в картину
«Обучение программированию» никогда не должно ощущаться как работа. Я никогда не заставляю своих детей писать код. Я работающий родитель, и мне неинтересно открывать школу программирования. Обучение программированию всегда вторично по сравнению со свободными играми, чтением, школьными занятиями или иногда просто бездельничанием (да ... дети могут ничего не делать время от времени). Обучение программированию должно быть самостоятельным занятием, иначе оно не продлится долго. Моя роль в этом процессе превратилась в куратора, наставника и мотиватора, работающего по совместительству.
Новая возможность
К январю 2017 года мой сын остановился в программировании. После изучения большого количества HTML и запуска Javascript Road Trip Part 3 на Codeschool (RIP) в конце туннеля не было света. Он перестал программировать и снова начал читать художественную литературу - в частности, серию книг Рик Риордан. Никаких жалоб с моей стороны.
Только в июле 2017 года, во время случайной дискуссии о бейсбольной статистике, переключатель снова включился. . .
"Какой средний уровень?" он спросил.
«Это количество попаданий, деленное на количество летучих мышей».
"Что это значит?"
Мой сын мало играет и не смотрит бейсбол, но любит баскетбол. Поэтому я переключил разговор на что-то более актуальное. . .
«Это похоже на процент бросков в баскетболе: общее количество сделанных бросков разделено на общее количество выполненных бросков. Это простая мера того, насколько хорошо игрок стреляет в баскетбол ".
Я видел, как снова вращаются колеса. «Может, мы что-то тут заметили». Я думал.
«Факты - вещь упрямая, но статистика податлива». - Марк Твен
В течение следующих нескольких недель я показывал примеры действующей статистики везде, где я их замечал, попутно оценивая его интерес. Телевизионные ролики, реклама на YouTube, рекламные щиты, книги - статистика везде! В моей новой роли мотиватора я закрыл сделку », купив Карикатурное введение в статистику Грейди Кляйна / Алана Дабни, и его следующее приключение началось.
Мой сын закончил книгу примерно в августе 2017 года, и я надел шляпу куратора в поисках следующего учебного ресурса.
Чтобы быть сторонником любого самостоятельного обучения ваших детей, необходимо тщательно контролировать содержание. Есть безграничные онлайн-ресурсы для обучения практически чему угодно. Ваша задача - найти качественные ресурсы, которые лучше всего соответствуют стилю обучения вашего ребенка. Я рекомендую сначала протестировать материал самостоятельно (посмотреть несколько видеоуроков, прочитать несколько глав), чтобы не выбирать что-то слишком скучное, быстрое, медленное или плохо подготовленное. Плохие учебные материалы могут негативно повлиять на мнение вашего ребенка по всей теме. Обязательно выбирайте с умом.
Возвращение Python
Я подписался на ежегодное членство в DataCamp во время праздничной распродажи в декабре 2016 года - Data Science была в тренде в технических СМИ в то время, и я хотел развиваться как веб-разработчик. Я просмотрел некоторые курсы, и мне очень понравилась их платформа - очень качественная и глубокая. Я думал, что DataCamp подойдет моему сыну. . .
«Помните Python?» Я спросил его.
«Немного», - ответил он с подозрением на лице.
«Вы знаете, что Python используется во всем мире статистиками, учеными и даже Google (я должен был упомянуть Google 😃) для работы с данными и статистикой? Вам также не нужно вводить скобки и точки с запятой 👏. Хотите попробовать еще раз? » Я спросил.
«Больше нет Javascript?» Он спросил.
«Не сейчас», - ответил я.
«Хорошо», - согласился он.
Август 2017 - октябрь 2017
Он начал с DataCamp Введение в Python для науки о данных (бесплатный курс) в августе 2017 года и добился больших успехов (работая в основном несколько часов по выходным). Первый курс он закончил к сентябрю 2017 года.
Курс Введение в Python для науки о данных отлично подходит для начинающих; Покрытие большого количества материала управляемыми фрагментами с помощью упражнений по написанию кода прямо в браузере. К концу курса он освоил синтаксис Python, списки, функции, пакеты и NumPy.
Другой холм, чтобы подняться
Он перешел на Промежуточный Python для науки о данных, но в октябре 2017 года наткнулся на стену - редко входил в систему и в конечном итоге полностью останавливался.
Я вмешался. . .
«Как дела с курсом DataCamp? Вы в чем-то застряли? » Я спросил.
«Мне это нравится, но я не понимаю, как все это используется».
Контекст для кодирования
На самом деле в приведенном выше диалоговом окне много всего происходит, но ключевое слово - «как». Одна проблема, которую я постоянно замечаю при кодировании движений детей, - это отсутствие контекста. Изучение программных структур и алгоритмов - это хорошо, но абстрактные концепции не приживаются детям, если они не связаны с чем-то в их мире.
Скретч очень популярен среди детей не только из-за метафоры соединяющих блоков, но и из-за того, как он спроектирован с учетом контекста создания и обмена историями, играми и анимациями с сообществом. Это весело и имеет четкую цель - беспроигрышный вариант для детей. Одно из самых серьезных препятствий при переходе от Scratch к текстовому программированию - это потеря этого контекста. Вы больше не создаете забавных вещей для сообщества; вы сами по себе в мире простого текста, редакторов кода и Hello World!. Это большой сдвиг.
На самом деле мой сын спрашивал: «Что в этом для меня? Как Python дает мне суперсилы? »
В поисках нового крючка
Мне нужно было что-то, что возбудило бы любопытство моего сына. Способ вернуть его в приключение по программированию.
В 2017 году ИИ и машинное обучение доминировали в технических СМИ, и в течение того года я поделился с ним множеством интересных новостных статей. Он игнорировал большинство из них (дети, похоже, не любят читать электронную почту 😃), но вот некоторые из историй, которые он нашел интересными - по крайней мере, основанные на обсуждениях в школе и из школы:
- AI учится воссоздавать Super Mario Bros., наблюдая, как в нее играет кто-то другой
- Этот генератор речи с искусственным интеллектом может подделать любой голос
- Новый ИИ может писать музыку так же хорошо, как и человек-композитор
- Японская программа искусственного интеллекта только что написала небольшой роман, и он почти выиграл литературный приз
Заметили тему?
Все истории - примеры кода машинного обучения, выполняющего работу людей. Даруя нам сверхспособности!
«Что, если бы вы могли создать программу для выполнения домашнего задания - всех этих резюме и журнальных записей?» Я сказал.
"Действительно? Как?" Его лицо немного просветлело.
«Вы можете узнать об искусственном интеллекте и машинном обучении с помощью Python».
Могут ли дети действительно понять машинное обучение?
Будем честны. Очень мало материалов по машинному обучению предназначено для детей. Детям нравится углубляться в детали, но для того, чтобы понять машинное обучение, требуется много предварительных знаний в области математики и статистики.
Как веб-разработчик, мои знания линейной алгебры и статистики немного устарели (мягко говоря 😉), поэтому мне сложнее курировать контент и придумывать забавные аналогии кода. Так что на несколько недель я надел исследовательскую шляпу и узнал как можно больше об основах машинного обучения.
Объем ресурсов, доступных для машинного обучения, огромен: видео, блоги, книги, конференции, курсы. После некоторого тестирования я сузил выбор до Udacity, Coursera или DataCamp. Я сосредоточился на структурированном обучении и хорошей среде для практики, что особенно важно, когда я начинаю заниматься такой обширной темой, как машинное обучение. После окончательного обзора курсов я выбрал Udacity из-за их целевых наноразмеров и четко определенных предварительных условий и поставил перед ним долгосрочную цель - пройти глубокое обучение на наноуровне, зная, что это может Пройдут годы, прежде чем он даже начнет этот курс.
Первые дела в первую очередь. . . Вернуться к статистике
Deep Learning NanoDegree выше моего уровня (не говоря уже о моем сыне), поэтому я построил карту курса; прорабатываю свой путь вниз, используя предпосылки и требования. Вот первая итерация:
Введение в Python для науки о данных выделено зеленым цветом, так как мой сын прошел курс и соответствует предварительным требованиям Python. Он сразу начал с курсов статистики.
Важная веха
Моему сыну статистика очень понравилась. Он закончил курс Описательная статистика по Udacity в сентябре 2017 года и начал курс Выводная статистика.
Это был важный момент. Впервые он углубился в предметную область, выходящую за рамки моего уровня. В колледже я прошел всего один курс статистики, и это было несколько лет назад. Я больше не смогу сразу отвечать на его вопросы; ему придется искать ответы самостоятельно. Это момент, когда я полностью отказался от своей роли его учителя кодирования 😢.
Как и ожидалось, он боролся с материалом, но работал очень усердно - намного усерднее, чем я ожидал. К январю 2018 года он почти на две трети проучился по курсу «Выводная статистика». На этом он взял заслуженный перерыв до апреля 2018 года.
Новая возможность
В апреле 2018 года я получил рекламное письмо от Udacity, в котором объявлялось об их новой программе Программирование искусственного интеллекта с помощью Python Nanodegree (да, электронный маркетинг все еще работает). Прошло несколько месяцев с тех пор, как мой сын что-то кодировал, и курс выглядел для него отличным способом ознакомиться с концепциями Python (NumPy, Pandas, Matplotlib) с кратким введением в некоторые дополнительные предпосылки машинного обучения (линейная алгебра и нейронные сети).
Он также был очень мотивирован мыслью о получении действительного сертификата об окончании (G amification FTW) и начал работать над курсом в день, когда мы зачислились.
Реальность наступает
Курсы и лабораторные работы Udacity довольно строгие, и он быстро отставал от рекомендованных сроков завершения. Я не был удивлен, поскольку Udacity рекомендует 10 часов в неделю, чтобы завершить курс вовремя, но я не хотел сдерживать его энтузиазм. В среднем он проводит около 2–4 часов в неделю в течение учебного года, так как материал очень плотный.
Я надеюсь, что он получит право на бесплатное 4-недельное продление от Udacity. Если кто-нибудь из Udacity это читает. . . пожалуйста!
Реалистичные ожидания
Родители, которые только начинают знакомство с программированием для своих детей, могут относиться к этому как к любому другому внешкольному занятию. Кодирование не должно иметь приоритет над другими видами деятельности, такими как учеба, бесплатные игры или просто детство. Это немного абстрактно и не всегда весело, но очень полезно в долгосрочной перспективе.
Лично я горжусь тем, что мой сын вообще готов работать над этим. Я не жду, что в ближайшее время он станет суперзвездой-программистом. Надеюсь, ему удастся построить новые ментальные модели, которые позволят ему подойти к будущим проблемам с другой стороны.
Большинство из нас выросли в мире императивного программирования; где решение проблемы заключалось в последовательном определении каждого шага. Его мир будет другим. Повсеместное распространение ИИ / машинного обучения позволит компьютерам определять шаги с учетом правильных данных и алгоритмов. Надеюсь, он будет готов к этой реальности.
Дорога впереди
Для тех, кто заинтересован, я планирую написать следующий пост примерно через шесть месяцев, в котором я расскажу о последних успехах и проблемах моего сына. Кто знает, может, тогда он перейдет к чему-то новому. . . дети в наши дни.
Я также планирую начать писать о своем опыте обучения программированию младшую дочь (6–9 лет). Моя старшая дочь сейчас работает в Scratch, а младшая - в Scratch Jr.
Следите за обновлениями, советами и советами по обучению детей программированию. Я также буду документировать свой опыт на CodingDad.io. Будьте на связи!