Slide 1

Slide 1 text

Введение в кооперативное программирование: персональная ответственность - коллективный результат. Бесшапошников Никита Олегович Кушниренко Анатолий Георгиевич Леонов Александр Георгиевич Отдел учебной информатики ФГУ ФНЦ НИИСИ РАН Software Engineering Conference Russia 2018 October 12-13 Moscow

Slide 2

Slide 2 text

Коллективное программирование – необходимая компонента учебного процесса (I) • Современное программирование немыслимо без коллективной работы. • Сложившиеся методики обучения программированию ориентированы на индивидуальную, а не коллективную работу. • Известно, как учить студентов программировать типовые задачи в одиночку. Но в практике обучения программированию отсутствуют методики, позволяющие организовать кооперативную работу при выполнении большого числа рутинных упражнений.

Slide 3

Slide 3 text

Коллективное программирование – необходимая компонента учебного процесса (II) • Нужна методика, которая будет одновременно учить и изобретению алгоритма и разделению его на компоненты, допускающая кооперативную разработку командой • Развивать тренингами подобные навыки кооперативной работы можно у обучаемых разного возраста: дошкольников и школьников.

Slide 4

Slide 4 text

Кооперативно-параллельное задание Выдается команде из двух учеников, каждый со своим компьютером

Slide 5

Slide 5 text

Кооперативно-параллельное задание Члены команды сидят рядом и обмениваются информацией без помощи компьютеров

Slide 6

Slide 6 text

Кооперативно-параллельное задание Члены команды должны придумать, как согласовать действия своих роботов

Slide 7

Slide 7 text

ПиктоМир - свободно распространяемая бестекстовая учебная система программирования • Содержит модули для проведения и организации индивидуальных, и кооперативных занятий или олимпиад • Доступ через web-интерфейс: https://piktomir.ru/online • Загрузка для выполнения под iOs, Android, macOs, Windows 7, 8, 10 • Методическое обеспечение годового курса «Алгоритмика для дошкольников» и для занятий в кругу семьи распространяется свободно: https://piktomir.ru/method

Slide 8

Slide 8 text

Простейшее задание – два робота должны закрасить огнеупорной мастикой потрескавшиеся плиты космодрома. Справа шаблоны программ первого и второго роботов Задание определяет общую обстановку, в которой действуют два робота.

Slide 9

Slide 9 text

Простейшее коллективное задание (решение)

Slide 10

Slide 10 text

Задание посложнее – красный робот должен подождать (алгоритм В), пока синий не сделает часть работы

Slide 11

Slide 11 text

Задание посложнее (решение и результат запуска программы)

Slide 12

Slide 12 text

Сложное задание – требуется синхронизировать действия роботов

Slide 13

Slide 13 text

Сложное задание (решение)

Slide 14

Slide 14 text

Хоровод роботов. Показана программа управления клоном синих роботов.

Slide 15

Slide 15 text

И даже три робота!

Slide 16

Slide 16 text

Первая олимпиада по кооперативному программированию • В 2018 года в городе Сургут была проведена первая (в мире ) олимпиада для школьников (7-9 класс) по кооперативному программированию • Примеры задач были показаны выше • Эксперимент показал, что такой формат привлекателен и для новичков и для продвинутых участников.

Slide 17

Slide 17 text

Под капотом • Основной язык программирования: JavaScript, около 20 тыс. строк кода • Базовые возможности для реализации сетевого взаимодействия реализованы на С++ с помощью библиотеки eNet • Организационно, выполнение коллективных заданий проводится под контролем и наблюдением учителя • Технологически, коллективная работа проводятся в автономной локальной сети по принципу «клиент-сервер» • Предприняты специальные меры для обеспечения сохранности созданных учениками программ при сбоях локальной сети.

Slide 18

Slide 18 text

Сетевое взаимодействие (Учитель) Обнаружение и отображение устройств с ПО «ПиктоМир» с помощью broadcast Разделение на команды (пары, тройки,..) и выбор задания каждой команде Создание сервера для управления устройствами: передача заданий по сети, старт заданий, восстановления состояний

Slide 19

Slide 19 text

Сетевое взаимодействие (Ученик) Передача состояния на момент обнаружения ученического устройства с помощью broadcast Создание экземпляра клиента и подключение к серверу учителя (по команде, получаемой по broadcast от учителя) Получение задания по сети, старт задания, восстановления состояний (переподключение, получение прогресса выполнения)

Slide 20

Slide 20 text

Плюсы кооперативного программирования • Поощряется интеллектуальная взаимопомощь внутри команды • Резко уменьшается вероятность тупика в процессе решения задачи: «ум хорошо, а два лучше» • Члены команды в процессе совместной работы учатся оказывать и принимать помощь, выдвигать собственные идеи, обсуждать, отклонять и принимать чужие

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

Спасибо за внимание Никита Бесшапошников, Анатолий Кушниренко, Александр Леонов Email: [email protected] Телефон: +7 499 391-4434 https://piktomir.ru https://infomir.ru https://www.niisi.ru