Программирование (математики и физики): различия между версиями

Материал из Поле цифровой дидактики
 
(не показано 26 промежуточных версий этого же участника)
Строка 6: Строка 6:
; Уметь
; Уметь
# выбирать наиболее подходящий способ программирования;
# выбирать наиболее подходящий способ программирования;
# выполнять стандартные операции над данными различного типа;
# использовать языки визуального программирования для моделирования базовых паттернов;
# структурировать программы;
# использовать распространенные языковые конструкции;
# работать с файлами (создавать, записывать, считывать)
# обрабатывать данные, загружать данные, сохранять данные
# использовать стандартные модули и библиотеки для работы с данными, текстами, временем
# создавать собственные функции
# выращивать данные в искусственных микромирах
# находить ошибки, улучшать код, документировать программу
# находить ошибки, улучшать код, документировать программу
# уметь использовать код других людей
# обращаться к агентам на основе их породных свойств
; Владеть
; Владеть
# навыками использования нескольких языков визуального программирования для создания моделей физических процессов
# навыками использования нескольких языков визуального программирования для создания моделей физических процессов
Строка 26: Строка 27:
|Book=Computer Science with Snap! by Examples, Agent-Based and Individual-Based Modeling: A Practical Introduction, Mindstorms
|Book=Computer Science with Snap! by Examples, Agent-Based and Individual-Based Modeling: A Practical Introduction, Mindstorms
}}
}}
Учебный курс для студентов бакалавриата МФ 201
Учебный курс для студентов бакалавриата группа [[:Категория:МФ-201|МФ-201]]


== История учебного программирования. Примеры учебных микромиров ==
== История учебного программирования. Примеры учебных микромиров ==
[[Путь черепахи: эволюция LOGO-подобных языков]]
{{#ask: [[Конструкционизм]] | ?Description }}
{{#widget:YouTube|id=NGmNvRXMhac|start=5}}
; (Logo OR  Ancestors:Logo)
{{#ask:
[[Category:Язык программирования]]  [[Ancestors::Logo]] OR [[Logo]]
|format=moderntimeline
|?launch year
|? Ancestors
|?Descendants
| background = grey
}}
{{#ask:
[[Category:Язык программирования]]  [[Ancestors::Logo]] OR [[Logo]] | ?Ancestors | format = ul }}
{{#ask: [[Fire (model)]] | ?Description }}
{{#widget:iframe
|url=https://netlogoweb.org/launch#https://netlogoweb.org/assets/modelslib/IABM%20Textbook/chapter%203/Fire%20Extensions/Fire%20Simple%20Extension%201.nlogo
|width=1000
|height=900
}}
----
[[Файл:Fire R.png|600px]]
Примеры микромиров - '''[[:Category:Model]]'''


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


* [[Мастер-класс «Совместная работа со знаниями на поле цифровой дидактики»]]
* https://www.youtube.com/watch?v=CF4YZ3vnFSs&t=5


== Многообразие и возможности  языков визуального программирования ==
== Многообразие и возможности  языков визуального программирования ==
=== [[Scratch]] встраивание проектов в страницы вики ===
: Надо указать id проекта внутри блока <nowiki><scratch project="id" /> </nowiki>
<scratch project="10079315" />
; встраивание кода программы
<scratchblocks>
когда спрайт нажат
сказать ["Привет!"]
идти (выдать случайное от (20) до (40)) шагов
играть звук [мяу v] ::sound
если <касается [край v]>, то
повернуться к [указатель мышки v]
конец
</scratchblocks>
=== [[Snap!]] и встраивание проектов в страницы вики ===
* https://snap.berkeley.edu/project?username=patarakin&projectname=pattern_7_imitation
<snap project="pattern_7_imitation" user="patarakin" />
* https://snap.berkeley.edu/project?username=patarakin&projectname=Alonso_Ball
<snap project="Alonso_Ball" user="patarakin" />
=== StarLogo Nova ===
* https://www.slnova.org/patarakin/projects/906232/
{{#widget:iframe
|url=https://www.slnova.org/patarakin/projects/906232/
|width=1000
|height=800
}}


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


== Паттерны поведения в цифровой среде и их симуляция ==
== Паттерны поведения в цифровой среде и их симуляция ==
{{#ask: [[Category:HowTo]] | ?Description_of_problem | ?Solution }}


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


== Обращение к внешним данным, обработка и представление данных
* [[Как копировать поведение агентов в Snap!]]
 
 
==== Создать агентов в момент запуска модели ====
[[Файл:Create fishes.png]]
 
==== Создавать агентов в случае столкновения с другим агентом ====
[[Файл:Create netlogo.png]]
 
== Обращение к внешним данным, обработка и представление данных ==
;  На примере того, как это можно делать в Snap!
: вбросить данные в формате [[CSV]], [[JSON]] на рабочий экран программы
: обратиться по http адресу к внешним данным
 
=== Датасет в [[Snap!]] ===
 
[[Файл:Collab dataset sc.png|640px]]
 
 
* https://snap.berkeley.edu/project?user=patarakin&project=collab_dataset


== Многоагентое моделирование. Породы агентов
<snap project="collab_dataset" user="patarakin" />
 
== Многоагентое моделирование. Породы агентов ==
 
[[Объединение языков многоагентного моделирования в учебном процессе на базе MediaWiki]]
 
{{#ask: [[Генеалогия многоагентных сред (диаграмма)]] | format=embedded | embedformat=h3 }}


== Выращивание данных и их дальнейшее использование ==
== Выращивание данных и их дальнейшее использование ==
* [[Как вырастить данные в искусственном сообществе]]
=== Эксперименты в среде  NetLogo ===
{{#widget:YouTube|id=_IRTKplE7nw|start=3}}
==== [[StarLogo Nova]] ====
; Проект https://www.slnova.org/patarakin/projects/694467/
: Прямо из этой страницы, куда встроен проект, мы можем данные собрать
{{#widget:iframe
|url=https://www.slnova.org/patarakin/projects/694467/
|width=800
|height=600
}}
Исходное состояние - выбираем параметры
* количество мячей = 5
* количество участников = 175
* рычажок видимости (как близко от участника должен быть мяч, чтобы он начал к нему бежать) = 5
[[Файл:Slnova Data.jpg]]
====== Собираем данные со страницы  ======
500 записей
[[Файл:Slnova Data1.jpg]]
Загружаем [[датасет]] в [[RAWGraphs]] - https://rawgraphs.io/
; Проект https://www.slnova.org/patarakin/projects/761578/
{{#widget:iframe
|url=https://www.slnova.org/patarakin/projects/761578/
|width=800
|height=600
}}
===== [[NetLogo]] =====
Использовать NetLogo Web для получения данных
[[Файл:Flocking netlogo web.jpg]]
Примеры моделей для постановки экспериментов:
# [https://netlogoweb.org/launch#https://netlogoweb.org/assets/modelslib/Sample%20Models/Biology/Flocking.nlogo Образование стаи птиц или рыб]
# [https://netlogoweb.org/launch#https://netlogoweb.org/assets/modelslib/Sample%20Models/Biology/Termites.nlogo Термиты]
# [https://netlogoweb.org/launch#https://netlogoweb.org/assets/modelslib/Sample%20Models/Psychology/Piaget-Vygotsky%20Game.nlogo Обучение по Выготскому или Пиаже] - участники бросают шарики и стараются попасть как можно ближе к линии
Вырастить данные - поставить эксперимент с переменными - использовать [[BehaviorSpace]]
{{#widget:YouTube|id=_IRTKplE7nw|start=10}}
== Критерии оценки по дисциплине ([[:Категория:МФ-201]]) ==
{| {{prettytable}}
|-
!{{Hl2}}| Образовательный результат
!{{Hl2}}| Тема
!{{Hl2}}| Задание
!{{Hl2}}| Пример
|-
| Знает возможности совместной цифровой деятельности и умеет ими пользоваться [[Semantic MediaWiki]]
|  История совместной деятельности в цифровой среде. Совместное редактирование текста и кода
| Зарегистрироваться на площадке, отметить странницу категориями, заполнить поля по форме
|
* [[:Категория:UserMGPU]]
* [[:Категория:МФ-201]]
|-
|  Выбирать способы программирования
| История учебного программирования. Примеры учебных микромиров
| Создайте собственные [[Служебная:Concepts|концепты]] к статьям в категории Языки программирования
|
* [[Концепция:Предки Scratch]]
* Языки [[Концепция:Для создания мобильных приложений|для мобильных приложений]]
* [[Концепция:Объектно-ориентированные языки]]
|-
|  Использовать языки визуального программирования для моделирования базовых паттернов
|
* Многообразие и возможности  языков визуального программирования
* Паттерны поведения в цифровой среде и их симуляция
| Разместить в вики проект, выполненный в среде [[Scratch]] или [[Snap!]] или [[StarLogo Nova]]
|
*  [[Как использовать визуальные блоки на вики страницах]]
* Как [[Организовать обмен сообщениями между агентами]],
* [[Генерировать новых агентов]]
|-
|  Уметь использовать распространенные языковые конструкции
| Распространённые языковые конструкции
| Разместите в вики статью  с примером кода 
* [[How to Make a Top Down Scroller Game]],
* [[Using Clones for Particle Effects]]
|-
|  Создавать собственные функции
|  Создание собственных функций
|  Создайте и опишите собственные полезные функции
|
*[[:Category:Diagrams]],
* [[Языки программирования Time-line]]
|-
|  Обращаться к агентам на основе их породных свойств
| Многоагентое моделирование. Породы агентов
| Разместите в вики пример проекта Snap!, в котором происходит обращение к клонам спрайта
| Примеры
* [[Flocking (model)]]
* [[Как копировать поведение агентов в Snap!]]
* [[Как управлять поведением агентов на основании их пространственных характеристик]]
* [[Как задать свойства породе объектов]]
|-
|  Обрабатывать данные, загружать данные, сохранять данные
| Обращение к внешним данным, обработка и представление данных
| Разместите в вики проект [[Scratch]] или [[Snap!]], в которых происходит обработка данных
|
* [[Как обратиться к внешним данным из Snap!]]
|-
|  Выращивать данные в искусственных микромирах
|  Выращивание данных и их дальнейшее использование
| Разместите в вики проект [[StarLogo Nova]] или [[Snap!]], в которых происходит выращивание данных
|
* [[Как вырастить данные в искусственном сообществе]]
|}
----
== Обсуждение структуры курса  ==
=== Вариант 1 ===
[[Файл:Modelling Course.png]]
=== Вариант 2 ===
<uml>
@startuml
start
:Competence ;
note right
Engage in a design process to develop, test and revise prototypes
Analyze age-appropriate data
end note
:Concept;
note left
Procedure
Variable
API
CSV
Dashboard
Flowchart
Prompt
Team Assembly
end note
:Book;
note right
Mindstorms
Initiation to Algorithmics with Scratch
Thinking Like a Tree
Agent-Based and Individual-Based Modeling: A Practical Introduction
Turtles, termites, and traffic jams
end note
:Digital tool;
fork
  :plantUML ;
fork again
  :Mermaid;
fork again
  :RAWGraphs;
fork again
  :CODAP;
fork again
  :Semantic MediaWiki;
end fork
:Data;
note right
Books (dataset)
GoogleSchool 01(dataset)
Letopisi 2006 (dataset)
end note
:Model ;
note left
Butterfly model
Fire (model)
Segregation (model)
Flocking (model)
Traffic jams
end note
:Programming Language ;
note right
  end note
fork
  :Snap! ;
fork again
  :StarLogo Nova;
fork again
  :NetLogo;
end fork
fork
:Scripting Tutorials ;
note left
How to make something
end note
fork again
  :Project;
note right
How to model some situation
  end note
end fork
stop
@enduml
</uml>

Текущая версия на 08:44, 18 мая 2024



Планируемые результаты обучения (Знать, Уметь, Владеть) Результаты обучения: обучающийся понимает и умеет использовать возможности визуальных языков программирования для освоения математических и физических понятий
Знать
  1. основные типы данных, их особенности
  2. особенности реализации программ на визуальных языках различных типов ;
Уметь
  1. выбирать наиболее подходящий способ программирования;
  2. использовать языки визуального программирования для моделирования базовых паттернов;
  3. использовать распространенные языковые конструкции;
  4. обрабатывать данные, загружать данные, сохранять данные
  5. создавать собственные функции
  6. выращивать данные в искусственных микромирах
  7. находить ошибки, улучшать код, документировать программу
  8. обращаться к агентам на основе их породных свойств
Владеть
  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

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

Путь черепахи: эволюция LOGO-подобных языков

 Description
КонструкционизмКонструкционизм - философия обучения, развитая Сеймуром Пейпертом на основании конструктивизма. К активной позиции конструктивизма конструкционизм добавляет идею того, что люди создают новое знание особенно эффективно, когда они вовлечены в создание продуктов, наделенных личностным смыслом, будь то песочные замки, Лего машины или компьютерные программы.

(Logo OR Ancestors
Logo)


 Description
Fire (model)
  • Forest_fire_model.gif

Запустите модель Fire несколько раз. Если мы запустим его с низкой плотностью деревьев, мы увидим, как и ожидалось, очень небольшое распространение огня. Если мы запустим его с очень высокой плотностью деревьев, мы, как и ожидалось, увидим, как лес уничтожается неумолимым маршем огня. Чего ожидать при средней плотности? Многие предполагают, что если плотность установлена на 50 процентов, то вероятность того, что огонь достигнет правого края леса, будет 50 процентов. Однако если мы попробуем это сделать, то увидим, что при 50-процентной плотности огонь не распространяется сильно. Если мы увеличим его до 57 процентов, огонь горит больше, но обычно все равно не достигает другой стороны леса. Однако если мы увеличим плотность до 61 процента, то есть всего на 2 процента больше, огонь неизбежно достигнет другой стороны. Это неожиданно. Мы ожидаем, что небольшое изменение плотности окажет относительно небольшое влияние на распространение огня. Но, как выясняется, модель Fire имеет «критический параметр» 59% плотности.


Fire R.png

Примеры микромиров - Category:Model

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

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

Scratch встраивание проектов в страницы вики

Надо указать id проекта внутри блока <scratch project="id" />
встраивание кода программы
когда спрайт нажат
сказать ["Привет!"]
идти (выдать случайное от (20) до (40)) шагов
играть звук [мяу v] ::sound
если <касается [край v]>, то
повернуться к [указатель мышки v]
конец

Snap! и встраивание проектов в страницы вики


StarLogo Nova

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

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

 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 решение собирается из блоков сенсоров - если я касаюсь другого агента (указать какого именно), то ...
    ТащитьТащить - паттерн "тащить" противоположен по значению паттерну толкать - агент может тащить за собой другого агента или агентов. Например, поезд тащит за собой вагоны, лошадь тащит за собой сани, буксир тащит за собой баржи или плот.
    ТолкатьПаттерн "толкать" — это паттерн, который мы видим во многих играх. Агент должен толкать ящики или мешки с золотом. Когда игрок толкает коробку или мешок, эти объекты движутся в том направлении (вверх, вниз, вправо или влево), в котором их толкнули.Объект или Агент, над которым совершается действие, получает сигнал от агента субъекта деятельности, поворачивается в ту же сторону, куда смотрит толкающий агент и двигается в эту сторону.

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


    Создать агентов в момент запуска модели

    Create fishes.png

    Создавать агентов в случае столкновения с другим агентом

    Create netlogo.png

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

    На примере того, как это можно делать в Snap!
    вбросить данные в формате CSV, JSON на рабочий экран программы
    обратиться по http адресу к внешним данным

    Датасет в Snap!

    Collab dataset sc.png


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

    Объединение языков многоагентного моделирования в учебном процессе на базе MediaWiki

    Генеалогия многоагентных сред (диаграмма)


    Описание Фрагмент генеалогической схемы происхождения агентных языков
    Область знаний Информатика
    Среды для создания диаграммы: Graphviz


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

    StarLogo Nova

    Проект https://www.slnova.org/patarakin/projects/694467/
    Прямо из этой страницы, куда встроен проект, мы можем данные собрать

    Исходное состояние - выбираем параметры

    • количество мячей = 5
    • количество участников = 175
    • рычажок видимости (как близко от участника должен быть мяч, чтобы он начал к нему бежать) = 5

    Slnova Data.jpg

    Собираем данные со страницы

    500 записей Slnova Data1.jpg

    Загружаем датасет в RAWGraphs - https://rawgraphs.io/


    Проект https://www.slnova.org/patarakin/projects/761578/

    Использовать NetLogo Web для получения данных

    Flocking netlogo web.jpg

    Примеры моделей для постановки экспериментов:

    1. Образование стаи птиц или рыб
    2. Термиты
    3. Обучение по Выготскому или Пиаже - участники бросают шарики и стараются попасть как можно ближе к линии

    Вырастить данные - поставить эксперимент с переменными - использовать BehaviorSpace


    Критерии оценки по дисциплине (Категория:МФ-201)

    Образовательный результат Тема Задание Пример
    Знает возможности совместной цифровой деятельности и умеет ими пользоваться Semantic MediaWiki История совместной деятельности в цифровой среде. Совместное редактирование текста и кода Зарегистрироваться на площадке, отметить странницу категориями, заполнить поля по форме
    Выбирать способы программирования История учебного программирования. Примеры учебных микромиров Создайте собственные концепты к статьям в категории Языки программирования
    Использовать языки визуального программирования для моделирования базовых паттернов
    • Многообразие и возможности языков визуального программирования
    • Паттерны поведения в цифровой среде и их симуляция
    Разместить в вики проект, выполненный в среде Scratch или Snap! или StarLogo Nova
    Уметь использовать распространенные языковые конструкции Распространённые языковые конструкции Разместите в вики статью с примером кода
    Создавать собственные функции Создание собственных функций Создайте и опишите собственные полезные функции
    Обращаться к агентам на основе их породных свойств Многоагентое моделирование. Породы агентов Разместите в вики пример проекта Snap!, в котором происходит обращение к клонам спрайта Примеры
    Обрабатывать данные, загружать данные, сохранять данные Обращение к внешним данным, обработка и представление данных Разместите в вики проект Scratch или Snap!, в которых происходит обработка данных
    Выращивать данные в искусственных микромирах Выращивание данных и их дальнейшее использование Разместите в вики проект StarLogo Nova или Snap!, в которых происходит выращивание данных

    Обсуждение структуры курса

    Вариант 1

    Modelling Course.png

    Вариант 2