Программирование (математики и физики)

Материал из Поле цифровой дидактики



Планируемые результаты обучения (Знать, Уметь, Владеть) Результаты обучения: обучающийся понимает и умеет использовать возможности визуальных языков программирования для освоения математических и физических понятий
Знать
  1. основные типы данных, их особенности
  2. особенности реализации программ на визуальных языках различных типов ;
Уметь
  1. выбирать наиболее подходящий способ программирования;
  2. выполнять стандартные операции над данными различного типа;
  3. структурировать программы;
  4. работать с файлами (создавать, записывать, считывать)
  5. использовать стандартные модули и библиотеки для работы с данными, текстами, временем
  6. находить ошибки, улучшать код, документировать программу
  7. уметь использовать код других людей
Владеть
  1. навыками использования нескольких языков визуального программирования для создания моделей физических процессов
Содержание разделов курса
  1. История учебного программирования. Примеры учебных микромиров
  2. История совместной деятельности в цифровой среде. Совместное редактирование текста и кода
  3. Многообразие и возможности языков визуального программирования
  4. Распространённые языковые конструкции
  5. Паттерны поведения в цифровой среде и их симуляция
  6. Создание собственных функций
  7. Обращение к внешним данным, обработка и представление данных
  8. Многоагентое моделирование. Породы агентов
  9. Выращивание данных и их дальнейшее использование
Видео запись
Среды и средства, которые поддерживают учебный курс Snap!, StarLogo Nova, NetsBlox, RAWGraphs
Книги, на которых основывается учебный курс Computer Science with Snap! by Examples, Agent-Based and Individual-Based Modeling: A Practical Introduction, Mindstorms

Учебный курс для студентов бакалавриата МФ 201

История учебного программирования. Примеры учебных микромиров

История совместной деятельности в цифровой среде. Совместное редактирование текста и кода

Многообразие и возможности языков визуального программирования

Распространённые языковые конструкции

Паттерны поведения в цифровой среде и их симуляция

 Description of problemSolution
Генерировать новых агентов120px-Create_netlogo.png
Агент порождает поток других агентов - например, в экологических моделях рождение используется для создания потомков, в играх из пистолета вылетают пули, которые он порождает, в историях Scratch капли дождя клонируются и падают из тучи на землю.
Можно использовать породы или клоны. Например, в NetLogo:
  • observer - наблюдатель может породить новых агентов в центре поля и сказать и что делать crt 10
  • каждая черепаха может порождать новую черепаху командой hatch - hatch-sheep 1
  • каждое пятно может на себе породить черепаху или несколько командой sprout - sprout 10
В Scratch новые агенты создаются через клонирование уже существуюших агентов.
Накапливать энергиюАгент живёт в среде, перемещается, выполняет задания и накапливает энергию или собирает очки
  • заносим эти данные в переменную
  • меняем свойства, которыми обладает агент
  • передаем эти данные
Перевозить другого агента на себеТранспортировка представляет собой ситуацию, когда один агент перевозит на себе другого агента. Например, черепаха в Frogger несёт лягушку, пересекая реку. В экологических симуляциях процесс транспортировки можно использовать, например, для перевозки пыльцы пчёлами.
  • Привязать перевозимого агента к себе, чтобы он следовал за положением агента, которым мы управляем
Перемещаться случайным образомАгент или агенты перемещаются по экрану случайным образом - стандартная для многих игр и симуляций ситуация, которую надо уметь воспроизводить - термиты, птицы и рыбы при формировании стай изначально перемещаются случайным образом.Агент поворачивается в направление, которое выбирается случайным образом и делает ход в этом направлении.
Поглощать агентов120px-Delete_starlogo.png
  • Поглощение: обратный генерации процесс, когда агент не порождает, а поглощает других агентов. Например, земля поглощает падающие с неба капли воды, хищник съедает жертву, с которой он встречается.
Прятать агентов или просто их убивать или умирать самому
Подчиняться клавишам клавиатурыРеагировать на клавиши клавиатуры Движение клавиатуры: нажатия кнопок клавиатуры управляют движением агента. И здесь могут быть паттерны типа Прыгать - как писал Пейперт в этой статье писал про Марио и как воспроизвести поведение МариоИспользовать блоки управления в сочетании с блоками движения
Поиск восхождением к вершинеПоиск восхождением к вершине - алгоритм поиска в компьютерных науках, когда агент просматривает значения переменных на ближайших полях и на поле с максимальным значением переменной. Использование алгоритма поиск восхождением к вершине можно наблюдать в таких играх как Sims или Pac-Man, когда призраки преследуют Pacman, следуя наивысшему значению запаха Pac-man, который распространяется по всему полю см. http://ccl.northwestern.edu/netlogo/models/Pac-ManИспользовать встроенные команды NetLogo
  • uphill patch-variable
  • uphill4 patch-variable
  • Превращаться в другого агентаПревращение - один агент превращается в другого агента. Возможный вариант - агент одной породы превращается в агента другой породы.В примере на Scratch - cпрайт клонируется и содержит в себе разные породы - демонов и драконов. При столкновении с агентом другой породы агент может изменять собственную породу и становиться другим. Например, из породы демонов переходить в породу драконов. В NetLogo можно просто поменять принадлежность к породе и соответственно свойства агента.
    Преследовать другого агентаОдин агент преследует другого агента - поворачивается в его сторону или поворачивается в том же направлении, куда движется другой агентИспользуются команды повернуться к другому агенту
    РаспространятьсяДиффузия: паттерн распространения, когда вы можете распространять определённое количество агента на других агентов, расположенных по близости за счёт процесса диффузии. Например, в модели муравьёв в NetLogo муравьи выделяют вещества феромоны, которые диффундируют на ближайшие поля игрового поля.В некоторых средах конструирования возможность диффузии заложена изначально. Например, в NetLogo стандартная команда к точкам - пятнам на экране diffuse
    Сталкиваться120px-Collision_starlogo.png
  • Паттерн определяет поведение агентов в случае их физического столкновения с другими агентами. Например, столкновение пули с мишенью. В игре Frogger, если грузовик сталкивается с лягушкой, лягушку нужно «раздавить»
  • В ряде среде есть специальный блок Collision - что делать агенту в случае столкновения с другим агентом. Для Scratch решение собирается из блоков сенсоров - если я касаюсь другого агента (указать какого именно), то ...
    ТащитьТащить - паттерн "тащить" противоположен по значению паттерну толкать - агент может тащить за собой другого агента или агентов. Например, поезд тащит за собой вагоны, лошадь тащит за собой сани, буксир тащит за собой баржи или плот.
    ТолкатьПаттерн "толкать" — это паттерн, который мы видим во многих играх. Агент должен толкать ящики или мешки с золотом. Когда игрок толкает коробку или мешок, эти объекты движутся в том направлении (вверх, вниз, вправо или влево), в котором их толкнули.Объект или Агент, над которым совершается действие, получает сигнал от агента субъекта деятельности, поворачивается в ту же сторону, куда смотрит толкающий агент и двигается в эту сторону.

    Создание собственных функций

    Обращение к внешним данным, обработка и представление данных

    Многоагентое моделирование. Породы агентов

    Выращивание данных и их дальнейшее использование