София Зайцева
3 896
Блоги

Как мы дистанционно учим детей программировать

Через 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. Устройства ввода и вывода информации - реши тест (Не пройдено)

и т.д

Заключение

Как бы мы ни старались помочь ученику, путь к знанием сложен и тернист. Ученику сильно поможет активная позиция родителей. Мы считаем, что наш курс для детей, родители которых готовы еженедельно обсуждать задания и материалы курса. Если родитель видит что ребёнок начинает “плавать” в материале или теряет интерес, нужно обязательно помочь ему и/или обратиться к наставнику

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

Как сказал известный многим человек:

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

Создавая курс, мы тоже идём к новому знанию. Идеального правильного решения нет, поэтомы мы находимся в поисках правильного содержания, формы и работающей бизнес-модели. С удовольствием послушаем ваши предложения и критику.

Что вы думает о нашем курсе ?

{ "author_name": "София Зайцева", "author_type": "self", "tags": [], "comments": 99, "likes": 26, "favorites": 26, "is_advertisement": false, "section_name": "blog", "id": "68861", "is_wide": "" }
Популярные материалы
Показать еще
{ "is_needs_advanced_access": true }

Популярные комментарии

Дискуссии по теме
доступны только владельцам клубного аккаунта

Купить за 75₽
Авторизоваться

Преимущества
клубного аккаунта

  • отсутствие рекламы
  • возможность писать комментарии и статьи
  • общение с членами клуба
Подробнее

Преимущества
клубного аккаунта

  • отсутствие рекламы
  • возможность читать и писать комментарии
  • общение с членами клуба
  • возможность создавать записи

Сколько это стоит?

Членство в клубе стоит всего 75₽ в месяц. Или даже дешевле при оплате за год.

Что такое клуб?

Клуб ТЖ это сообщество единомышленников. Мы любим читать новости, любим писать статьи, любим общаться друг с другом.

Вступить в клуб

Комментарии Комм.

Популярные

По порядку

0

Прямой эфир

Вы не против подписаться на важные новости от TJ?

Нет, не против
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "i", "ps": "cndo", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "i", "ps": "cndo", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfk" } } }, { "id": 6, "disable": true, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byswn", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "cndo", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223677-0", "render_to": "inpage_VI-223677-0-130073047", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=cndo&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudv", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fzvc" } } } ]