Программирование (математики и физики)
Планируемые результаты обучения (Знать, Уметь, Владеть) | Результаты обучения: обучающийся понимает и умеет использовать возможности визуальных языков программирования для освоения математических и физических понятий
|
---|---|
Содержание разделов курса |
|
Видео запись | |
Среды и средства, которые поддерживают учебный курс | Snap!, StarLogo Nova, NetsBlox, RAWGraphs |
Книги, на которых основывается учебный курс | Computer Science with Snap! by Examples, Agent-Based and Individual-Based Modeling: A Practical Introduction, Mindstorms |
Учебный курс для студентов бакалавриата группа МФ-201
История учебного программирования. Примеры учебных микромиров
Путь черепахи: эволюция LOGO-подобных языков
Description | |
---|---|
Конструкционизм | Конструкционизм - философия обучения, развитая Сеймуром Пейпертом на основании конструктивизма. К активной позиции конструктивизма конструкционизм добавляет идею того, что люди создают новое знание особенно эффективно, когда они вовлечены в создание продуктов, наделенных личностным смыслом, будь то песочные замки, Лего машины или компьютерные программы. |
- (Logo OR Ancestors
- Logo)
- AlgoBlock (Ancestors: Лого)
- App Inventor (Ancestors: Scratch, Лого, Blockly)
- Boxer (Ancestors: Лого)
- DBSnap (Ancestors: Scratch, Snap!, Лого)
- GP (Ancestors: Scratch, Лого)
- Josef (Ancestors: Лого)
- KTurtle (Ancestors: Лого, Kumir)
- LogoBlocks (Ancestors: Лого)
- LogoWriter (Ancestors: Лого)
- Move the Turtle (Ancestors: Лого)
- NetLogo (Ancestors: Лого, StarLogo)
- NetsBlox (Ancestors: Scratch, Snap!, Лого)
- Scratch (Ancestors: Лого, Squeak, Agentsheets)
- Smalltalk (Ancestors: Лого, Lisp)
- Snap! (Ancestors: Scratch, Лого, Lisp, Smalltalk, Scheme)
- StarLogo (Ancestors: Лого)
- StarLogo Nova (Ancestors: NetLogo, Scratch, Лого)
- UCB Logo (Ancestors: Лого, Lisp)
- Лого (Ancestors: Lisp)
- ПервоЛого (Ancestors: Лого)
Description | |
---|---|
Fire (model) |
Запустите модель Fire несколько раз. Если мы запустим его с низкой плотностью деревьев, мы увидим, как и ожидалось, очень небольшое распространение огня. Если мы запустим его с очень высокой плотностью деревьев, мы, как и ожидалось, увидим, как лес уничтожается неумолимым маршем огня. Чего ожидать при средней плотности? Многие предполагают, что если плотность установлена на 50 процентов, то вероятность того, что огонь достигнет правого края леса, будет 50 процентов. Однако если мы попробуем это сделать, то увидим, что при 50-процентной плотности огонь не распространяется сильно. Если мы увеличим его до 57 процентов, огонь горит больше, но обычно все равно не достигает другой стороны леса. Однако если мы увеличим плотность до 61 процента, то есть всего на 2 процента больше, огонь неизбежно достигнет другой стороны. Это неожиданно. Мы ожидаем, что небольшое изменение плотности окажет относительно небольшое влияние на распространение огня. Но, как выясняется, модель Fire имеет «критический параметр» 59% плотности. |
Примеры микромиров - Category:Model
История совместной деятельности в цифровой среде. Совместное редактирование текста и кода
- Мастер-класс «Совместная работа со знаниями на поле цифровой дидактики»
- https://www.youtube.com/watch?v=CF4YZ3vnFSs&t=5
Многообразие и возможности языков визуального программирования
Scratch встраивание проектов в страницы вики
- Надо указать id проекта внутри блока <scratch project="id" />
- встраивание кода программы
когда спрайт нажат сказать ["Привет!"] идти (выдать случайное от (20) до (40)) шагов играть звук [мяу v] ::sound если <касается [край v]>, то повернуться к [указатель мышки v] конец
Snap! и встраивание проектов в страницы вики
StarLogo Nova
Распространённые языковые конструкции
Паттерны поведения в цифровой среде и их симуляция
Description of problem | Solution | |
---|---|---|
Генерировать новых агентов | Агент порождает поток других агентов - например, в экологических моделях рождение используется для создания потомков, в играх из пистолета вылетают пули, которые он порождает, в историях Scratch капли дождя клонируются и падают из тучи на землю. | Можно использовать породы или клоны. Например, в NetLogo:
|
Накапливать энергию | Агент живёт в среде, перемещается, выполняет задания и накапливает энергию или собирает очки |
|
Перевозить другого агента на себе | Транспортировка представляет собой ситуацию, когда один агент перевозит на себе другого агента. Например, черепаха в Frogger несёт лягушку, пересекая реку. В экологических симуляциях процесс транспортировки можно использовать, например, для перевозки пыльцы пчёлами. |
|
Перемещаться случайным образом | Агент или агенты перемещаются по экрану случайным образом - стандартная для многих игр и симуляций ситуация, которую надо уметь воспроизводить - термиты, птицы и рыбы при формировании стай изначально перемещаются случайным образом. | Агент поворачивается в направление, которое выбирается случайным образом и делает ход в этом направлении. |
Поглощать агентов |
| Прятать агентов или просто их убивать или умирать самому |
Подчиняться клавишам клавиатуры | Реагировать на клавиши клавиатуры Движение клавиатуры: нажатия кнопок клавиатуры управляют движением агента. И здесь могут быть паттерны типа Прыгать - как писал Пейперт в этой статье писал про Марио и как воспроизвести поведение Марио | Использовать блоки управления в сочетании с блоками движения |
Поиск восхождением к вершине | Поиск восхождением к вершине - алгоритм поиска в компьютерных науках, когда агент просматривает значения переменных на ближайших полях и на поле с максимальным значением переменной. Использование алгоритма поиск восхождением к вершине можно наблюдать в таких играх как Sims или Pac-Man, когда призраки преследуют Pacman, следуя наивысшему значению запаха Pac-man, который распространяется по всему полю см. http://ccl.northwestern.edu/netlogo/models/Pac-Man | Использовать встроенные команды NetLogo
|
Превращаться в другого агента | Превращение - один агент превращается в другого агента. Возможный вариант - агент одной породы превращается в агента другой породы. | В примере на Scratch - cпрайт клонируется и содержит в себе разные породы - демонов и драконов. При столкновении с агентом другой породы агент может изменять собственную породу и становиться другим. Например, из породы демонов переходить в породу драконов. В NetLogo можно просто поменять принадлежность к породе и соответственно свойства агента. |
Преследовать другого агента | Один агент преследует другого агента - поворачивается в его сторону или поворачивается в том же направлении, куда движется другой агент | Используются команды повернуться к другому агенту |
Распространяться | Диффузия: паттерн распространения, когда вы можете распространять определённое количество агента на других агентов, расположенных по близости за счёт процесса диффузии. Например, в модели муравьёв в NetLogo муравьи выделяют вещества феромоны, которые диффундируют на ближайшие поля игрового поля. | В некоторых средах конструирования возможность диффузии заложена изначально. Например, в NetLogo стандартная команда к точкам - пятнам на экране diffuse |
Сталкиваться |
| В ряде среде есть специальный блок Collision - что делать агенту в случае столкновения с другим агентом. Для Scratch решение собирается из блоков сенсоров - если я касаюсь другого агента (указать какого именно), то ... |
Тащить | Тащить - паттерн "тащить" противоположен по значению паттерну толкать - агент может тащить за собой другого агента или агентов. Например, поезд тащит за собой вагоны, лошадь тащит за собой сани, буксир тащит за собой баржи или плот. | |
Толкать | Паттерн "толкать" — это паттерн, который мы видим во многих играх. Агент должен толкать ящики или мешки с золотом. Когда игрок толкает коробку или мешок, эти объекты движутся в том направлении (вверх, вниз, вправо или влево), в котором их толкнули. | Объект или Агент, над которым совершается действие, получает сигнал от агента субъекта деятельности, поворачивается в ту же сторону, куда смотрит толкающий агент и двигается в эту сторону. |
Создание собственных функций
Создать агентов в момент запуска модели
Создавать агентов в случае столкновения с другим агентом
Обращение к внешним данным, обработка и представление данных
- На примере того, как это можно делать в Snap!
- вбросить данные в формате CSV, JSON на рабочий экран программы
- обратиться по http адресу к внешним данным
Датасет в Snap!
Многоагентое моделирование. Породы агентов
Объединение языков многоагентного моделирования в учебном процессе на базе MediaWiki
Генеалогия многоагентных сред (диаграмма)
Описание | Фрагмент генеалогической схемы происхождения агентных языков |
---|---|
Область знаний | Информатика |
Среды для создания диаграммы: | Graphviz |
Выращивание данных и их дальнейшее использование
Эксперименты в среде NetLogo
StarLogo Nova
- Проект https://www.slnova.org/patarakin/projects/694467/
- Прямо из этой страницы, куда встроен проект, мы можем данные собрать
Исходное состояние - выбираем параметры
- количество мячей = 5
- количество участников = 175
- рычажок видимости (как близко от участника должен быть мяч, чтобы он начал к нему бежать) = 5
Собираем данные со страницы
Загружаем датасет в RAWGraphs - https://rawgraphs.io/
NetLogo
Использовать NetLogo Web для получения данных
Примеры моделей для постановки экспериментов:
- Образование стаи птиц или рыб
- Термиты
- Обучение по Выготскому или Пиаже - участники бросают шарики и стараются попасть как можно ближе к линии
Вырастить данные - поставить эксперимент с переменными - использовать BehaviorSpace
Критерии оценки по дисциплине (Категория:МФ-201)
Образовательный результат | Тема | Задание | Пример |
---|---|---|---|
Знает возможности совместной цифровой деятельности и умеет ими пользоваться Semantic MediaWiki | История совместной деятельности в цифровой среде. Совместное редактирование текста и кода | Зарегистрироваться на площадке, отметить странницу категориями, заполнить поля по форме | |
Выбирать способы программирования | История учебного программирования. Примеры учебных микромиров | Создайте собственные концепты к статьям в категории Языки программирования | |
Использовать языки визуального программирования для моделирования базовых паттернов |
|
Разместить в вики проект, выполненный в среде Scratch или Snap! или StarLogo Nova | |
Уметь использовать распространенные языковые конструкции | Распространённые языковые конструкции | Разместите в вики статью с примером кода | |
Создавать собственные функции | Создание собственных функций | Создайте и опишите собственные полезные функции | |
Обращаться к агентам на основе их породных свойств | Многоагентое моделирование. Породы агентов | Разместите в вики пример проекта Snap!, в котором происходит обращение к клонам спрайта | Примеры |
Обрабатывать данные, загружать данные, сохранять данные | Обращение к внешним данным, обработка и представление данных | Разместите в вики проект Scratch или Snap!, в которых происходит обработка данных | |
Выращивать данные в искусственных микромирах | Выращивание данных и их дальнейшее использование | Разместите в вики проект StarLogo Nova или Snap!, в которых происходит выращивание данных |