Через 10 лет нехватка программистов вырастет в несколько раз.
Мы создаем онлайн-курс по обучению детей от 11 лет основам программирования. Благодаря дистанционной форме не нужно арендовать помещение и покупать компьютеры, можно сделать большой территориальный охват, а цены ниже, чем у конкурентов.
Однако сделать хороший дистанционный курс для детей намного сложнее, чем для взрослых. В статье расскажу о том, как мы стараемся удержать внимание учеников и помочь им сделать первые шаги в программировании.
Уровень 1. Первые шаги
Перед нашим основным курсом мы хотели использовать готовую платформу для обучения программированию в игровой форме. Наш выбор пал на CodeMonkey. Мы провели тестовое обучение и получили высокие оценки родителей и высокую заинтересованность детей в продолжении обучения программированию.
Вот чем хорош CodeMonkey:
1. Обучение в игровой форме и в маленьких дозах.
Дети часто отвлекаются - им трудно долго держать внимание на одной задаче. В CodeMonkey всё обучение идет в игровой форме на небольших задачах.
2. У всех задач одна цель - обезьяна должна собрать все бананы.
Ребенок получает постановку задачи не в текстовом виде, а в виде карты. Это сильно повышает интерес ребенка решать задачу.
3. В CodeMonkey готово более пятисот задач.
В известном всем Scratch ученик на старте получает пустое поле и это часто ставит его в тупик. В CodeMonkey всё обучение разбито на темы. Задания идут по нарастающей сложности. Это сильно упрощает жизнь и учителю и ученику.
4. Работа с текстовым редактором.
Визуальные блоки, которые используются во многих детских системах, это не плохо. Однако реальное программирование - это работа с текстом программы.
В CodeMonkey есть базовые конструкции языков программирования:
- Операторы условия и присваивания;
- Операторы цикла (until, while, for);
- Функции;
- Объекты и методы.
Дети с самого начала привыкают работать с кодом.
5. Задачу дают с куском кода, который нужно дополнить/исправить.
В CodeMonkey задачи на новые темы даются с уже готовым решением, где нужно исправить одно число или добавить одну строчку кода. Таким образом, снова понижается барьер входа в программирование.
6. Возможность самому сделать прикольную компьютерную игру.
Детям нравится играть и делать мини-игры. На последних уровнях обучения CodeMonkey предоставляет простой движок для создания игр.
Слабые места CodeMonkey
Мы выделили отсутствие трёх важных вещей:
- Задачи очень просты. Отсутствуют классические задачи школьного курса, например: сортировка пузырьком, создание мини калькулятора и т.д.
- Детей не учат отладке программ. Я закончил педагогический университет и пять лет обучал детей основам программирования. Для себя понял - если ребенок научился делать трассировку программ, он почти познал дао программирования.
- У детей случаются простые “затыки”, и если им не помочь - они бросают тему. В CodeMonkey нет кнопки “Помочь решить задачу.”
Итоги по CodeMonkey
В целом, считаю CodeMonkey практически идеальной средой для знакомства с программированием.
Чтобы ребенок преодолел “затыки” и понял тему:
- Мы для каждой задачи CodeMonkey написали подсказку (примерный алгоритм).
- Если подсказка не помогла - ребенок может посмотреть записанный нами видеоролик с решением и комментариями преподавателя.
- Если и с видео роликом непонятны все аспекты, то можно пообщаться с преподавателем в чате.
Мы прекрасно понимаем, что, несмотря на наши усилия, из-за дистанционной формы не получится поговорить с каждым ребенком по отдельности и объяснить все нюансы, поэтому часть детей не пройдёт Уровень 1.
Уровень 2. Основные задачи курса
После решения задач CodeMonkey дети, изучающие наш курс, переходят к основным задачам.
Мы стремимся сформировать у обучаемых алгоритмический стиль мышления, умение формализовывать задачи и разбивать их на составные части. Всё это мы называем базовыми навыками хорошего программиста.
К таким навыкам мы относим:
1. Умение видеть суть задачи;
2. Определять, что вводит пользователь (входные данные программы);
3. Определять, что программа выводит пользователю (выходные данные);
4. Разбивать задачу на подзадачи;
5. Продумывать алгоритм выполнения программы;
6. Производить отладку программы.
Мы используем обычные задачи продвинутого школьного курса, примеры:
- Дано целое число x от 1 до 999 и y. Вставить между каждой цифрой числа x знак действия {+. -, *} так, чтобы результатом выполнения действий стало число y. Например: x = 256; y =32; Ответ: 2+5*6 = 32/
- Дано положительное целое число x. Найти сумму всех четных целых чисел от 1 до x.
- Написать программу, которая считает: сколько можно купить быков, коров и телят, платя за быка 10 руб., за корову — 5 руб., а за теленка — 0,5 руб., если на 100 руб. надо купить 100 голов скота? Написать программу, которая угадывает целое число, которое загадал пользователь (от 1 до 100).
- Программа выводит на экран предполагаемый ответ, если загаданное пользователем число больше, чем выдала программа, пользователь вводит ">", если загаданное пользователем число меньше, чем выдала программа, пользователь вводит "<". Если программа угадала число, пользователь вводит "ДА". Пользователь должен быть честен. Программа должна угадать число, используя как можно меньше попыток.
- Заменить буквы цифрами так, чтобы соотношение оказалось верным (одинаковым буквам соответствуют одинаковые цифры, разным — разные): ХРУСТ* ГРОХОТ = РРРРРРРРРРР.
Темы такие же как везде: присваивание, ветвление, переменные, циклы, процедуры. Однако, каждую задачу мы пытаемся как можно лучше разложить по полочкам. К каждой задаче прикреплен мини-тест, который позволяет, в некотором роде, заменить общение с преподавателем.
Например, для задачи Сложить два числа A и B, мини-тест содержит следующие вопросы:
Что вводит пользователь:
- A
- B
- A, B, S
- A, B
Что программа выводит пользователю:
- A
- S
- B
- A, B, S
Такой мини-тест помогает формировать алгоритмический стиль мышления, умение формализовывать задачи и разбивать их на составные части. И конечно для каждой задачи есть решение с подробным объяснением и возможность задать уточняющие вопросы в чате.
Для обучения детей основам программирования мы выбрали статически типизированный язык TypeScript. Сейчас мы дорабатываем систему, которая позволит прямо в браузере решать, отлаживать задачи и мгновенно проверять их автоматизированной системой.
Уровень 3. Дипломный проект
Дипломные проекты выполняются в конце курса. Мы считаем, что очень важно, чтобы ученик столкнулся с большой задачей и понял, что реальные проекты не пишутся за 30 строк кода. Что есть много работы по проектированию и тестированию приложения.
В больших проектных заданиях ученик учится решать задачи реальных проектов:
- Составление мини технического задания;
- Планирование проекта, разбиение на подзадачи;
- Разработка прототипа;
- Написание тестов и тестирование проекта;
- Разработка первой версии;
- Сдача проекта наставнику.
Примеры больших проектных заданий:
- Создать игру «Тетрис».
- Разработать игру «Шахматы» (или другую логическую игру) с возможностью играть вдвоем или против компьютера.
Естественно большинство проектов, намного проще. Самые маленькие ученики будут в качестве проектного задания делать игру на CodeMonkey. Остальным мы предложим Visual Studio Code.
Как проходит обучение
Каждую неделю ученикам открываются новые темы в нашей системе дистанционного образования.
Каждая тема содержит различные типы заданий:
- Изучение материала;
- Тесты;
- Решений задач в CodeMonkey;
- Решений задач на TypeScript;
- Домашнее задание.
После выполнения задания ученик переводит задание в статус “Решено”. Часть заданий проверяется автоматически, часть нашим наставником.
В конце каждой недели родитель и ученик получают письмо с полной статистикой и вопросами для обсуждения.
Высылаем результаты недели по ученику:
Тема 1.1. Как работают компьютеры
a. Что такое компьютеры - узнай новое (Пройдено)
b. Что такое компьютер - реши тест (Пройдено)
c. Устройства ввода и вывода информации - узнай новое (Не пройдено)
d. Устройства ввода и вывода информации - реши тест (Не пройдено)
и т.д
Заключение
Как бы мы ни старались помочь ученику, путь к знанием сложен и тернист. Ученику сильно поможет активная позиция родителей. Мы считаем, что наш курс для детей, родители которых готовы еженедельно обсуждать задания и материалы курса. Если родитель видит что ребёнок начинает “плавать” в материале или теряет интерес, нужно обязательно помочь ему и/или обратиться к наставнику
Одна из важнейших наших с родителями задач - зажечь у ученика тягу к знаниям и изучению мира. Знания - это суперсила в мире, где в скором будущем большинство профессий будут заменены роботами и программами.
Как сказал известный многим человек:
Ничто не даётся даром в этом мире, и приобретение знания — труднейшая из всех задач, с какими человек может столкнуться. Человек идёт к знанию так же, как он идёт на войну — полностью пробуждённый, полный страха, благоговения и безусловной решимости
Создавая курс, мы тоже идём к новому знанию. Идеального правильного решения нет, поэтомы мы находимся в поисках правильного содержания, формы и работающей бизнес-модели. С удовольствием послушаем ваши предложения и критику.
Что вы думает о нашем курсе ?
Комментарий недоступен
Надо учить программированию в форме смешных комментов.
Артём, я тоже в ожидании годных комментов, присоединюсь к Вам)
да господи, если так пойдёт, через 10 лет в россии самыми востребованными профессиями будут собиратели валежника и охотники на струю бобров
Бобровая струя даст всем достаточно энергии для программирования!
мне не 11, но я готова учиться. где регистрироваться?
Будем Вам рады) http://codeking.online/
Code Monkey. Неплохо.
Я не верю в это. Скорее, профессия себя перерастет. Посмотрите на развитие общественного транспорта и метро, количество перевозок значительно увеличилось, но где-же представители перспективной профессии - извозчики?
В чем я уверен, что произойдет определенная эволюция и программисты сами уничтожат отрасль в результате внедрения автоматизации и систем ИИ. Я не говорю что программистов не будет, но их станет мало - для контроля работ и т.д.
Комментарий недоступен
Для того, чтоб ИИ вышел на тот уровень, о котором Вы говорите, должен пройти не один десяток лет.
Комментарий недоступен
Ерунда полная. Если ребёнок в 11 лет не может научиться программировать без свистелок и перделок то нахер не надо ему становиться программистом
Дети разные, не все способны к самоорганизации. Не значит, что подход должен быть как в Спарте)
А как же легаси, чтобы не было неоправданных надежд?
Кстати, это интересный вопрос. Мы подумаем над тем, как подготовить детей к ТАКОМУ
Еще один длиннопооост, не многовато для понедельника?
Комментарий удален модератором
У меня вьетнамские флэшбэки с этого поста.
Я бы и сам по такому поучился))0
Павел, будем рады видеть Вас среди наших учеников)
Раз уж речь идет о typescript - можно было бы добавить главу о написании тестов (юнит-тесты/спеки).
Чтобы не только авторы курса писали проверки и рисовали зеленые галочки (от этого не уйти на начальном этапе), но и было понимание как это все проверяется и поддерживается в реальном мире. Это и с легаси можно связать, да.
Комментарий недоступен
Спасибо Вам, это хорошее предложение!
С детства портить детей программированием. И не стыдно вам?
Одна из важнейших наших с родителями задач - зажечь у ученика тягу к знаниям и изучению мира. Мы учим детей думать, решать задачи, создавать алгоритмы.
Это полезно, кем бы не стал ребёнок.
А если уже не ребёнок, но ещё не решил кем стать
Комментарий недоступен
А у меня нет( Я теперь наверстываю упущенное и в CodeMonkey залипаю
Подождите, Вы про черепашку, связанную с языком программирования Кумир или про "вышла черепаха"?
Я думаю, что не нужно использовать такой логотип. Такое ощущение, что рандомно выбран вторичный логотип из логофолио какого-нибудь дизайнера.
Комментарий недоступен
Нет, мы его заказывали и выбирали из нескольких вариантов. У нас были и другие версии того, что в итоге будет логотипом. Можно тут совместное голосование за лучший вариант устроить)
The courses are offered in english too?
Комментарий недоступен
I'm sorry, but no( Someday, someday...
уже есть острая нехватка безопасников, а программистов пруд пруди, я серьезно, одни некачественные уебки, которые учились на курсах с одной стороны и другие некачественные уебки, которые учились сами по книгам
и не там, не там, никто не учил как безопасно создавать и тестировать на уязвимости приложения, только "проверяйте данные для ввода и экранируйте символы при выводе"
не понимаю почему рекламный длинопост на неактуал собрал столько лайков
Какие доказательства этого утверждения?
Вот неплохая статья на эту тему https://www.forbes.com/sites/quora/2017/01/20/will-the-demand-for-developers-continue-to-increase/#693b67f033ee