|
|
| Строка 1: |
Строка 1: |
| {| class="wikitable"
| |
| ! Модуль !! Тематика !! Ключевые артефакты
| |
| |-
| |
| | 1. Введение в [[MediaWiki]] и [[Semantic MediaWiki]] || Структура вики, свойства и запросы ask, концепция активных эссе || Страницы курса, семантические свойства, простые ask-запросы
| |
| |-
| |
| | 2. Основы [[Lua]] и [[Scribunto]] || Синтаксис Lua, модули, вызов <nowiki>{{#invoke:}}</nowiki>|| Module:Hello, простые функции, параметры шаблонов
| |
| |-
| |
| | 3. Обработка семантических данных в Lua || Получение и обработка результатов ask, генерация таблиц || Модуль, генерирующий динамическое содержание по свойствам [[SMW]]
| |
| |-
| |
| | 4. [[Scratch]] и визуальное программирование || Связь блок-схем с кодом[[Lua]], переход от блоков к тексту || Задания по переписыванию Scratch-программ на Lua
| |
| |-
| |
| | 5. [[NetLogo]] и агентные модели || Основы [[NetLogo]], turtles/patches, модели экосистем и IoT || Простая модель в NetLogo, описание в вики
| |
| |-
| |
| | 6. [[Lua]] + [[NetLogo]] || Экспорт/импорт параметров моделей через вики, сценарии активных эссе || Страница с параметризацией модели, запуск и анализ результатов
| |
| |-
| |
| | 7. [[Lua]] и [[IoT]] || NodeMCU/[[ESP8266]], базовые сценарии умного класса, связь с вики || Мини-проект: датчик температуры и страница с данными
| |
| |-
| |
| | 8. Итоговый проект активного эссе || Комплексный проект по предметной области студента || [[Активное эссе]] с ask, Lua-модулями, ссылками на модели NetLogo и/или IoT
| |
| |}
| |
|
| |
|
|
| |
| === Схема ===
| |
|
| |
| {| class="wikitable"
| |
| ! Этап
| |
| ! Что делает студент
| |
| ! Когнитивная задача
| |
| |-
| |
| | Use
| |
| | запускает готовый артефакт как пользователь
| |
| | наблюдение
| |
| |-
| |
| | Understand
| |
| | читает исходный код / wiki-текст, понимает структуру
| |
| | анализ
| |
| |-
| |
| | Remix
| |
| | модифицирует артефакт под свою задачу / данные
| |
| | творчество
| |
| |-
| |
| | Document
| |
| | описывает, что именно он изменил и зачем
| |
| | рефлексия
| |
| |-
| |
| | Demonstrate
| |
| | создаёт страницу-демо с примерами использования
| |
| | публикация
| |
| |}
| |
|
| |
| == Базовые ==
| |
|
| |
| === NetLogo ===
| |
|
| |
| # [[NetLogo]] — обзорная страница языка агентного моделирования;
| |
| # [[Netlogo patches]] — пассивные агенты-клетки;
| |
| # [[NetLogo widgets]] — кнопки, слайдеры, мониторы;
| |
| # [[Ants]] — пример полноценной модели (муравьи и феромоны).
| |
|
| |
| В NetLogo-ветке студент не меняет саму модель, а обогащает вокруг неё текст wiki-страницы: добавляет готовые процедуры и команды, которые читатель может скопировать в Command Center или на вкладку Code работающей модели. То есть remix-страница NetLogo становится не новой моделью, а новым сценарием использования старой модели.
| |
|
| |
| ==== Основания ====
| |
|
| |
| {| class="wikitable"
| |
| ! Страница
| |
| ! Модель
| |
| ! Тип remix
| |
| |-
| |
| | <[[Netlogo_patches]]
| |
| | работа с клетками
| |
| | добавить команды для покраски / измерения патчей
| |
| |-
| |
| | [[NetLogo_widgets]]
| |
| | интерфейсные элементы
| |
| | добавить процедуры, связанные с кнопками и слайдерами
| |
| |-
| |
| | [[Ants]]
| |
| | муравьи и феромоны
| |
| | добавить сценарии исследования поведения колонии
| |
| |}
| |
|
| |
| ==== Структура remix-страницы NetLogo ====
| |
| {| class="wikitable"
| |
| ! Раздел
| |
| ! Содержание
| |
| |-
| |
| | Введение
| |
| | краткое описание, чей это remix и зачем
| |
| |-
| |
| | Встроенная модель
| |
| | та же модель, что на исходной странице (через <code><iframe></code> или шаблон)
| |
| |-
| |
| | Команды для Command Center
| |
| | короткие фрагменты кода, которые читатель вводит в командную строку
| |
| |-
| |
| | Процедуры для вкладки Code
| |
| | более длинные фрагменты — процедуры, добавляемые в модель
| |
| |-
| |
| | Вопросы для исследования
| |
| | 3–5 вопросов, на которые можно ответить с помощью этих команд
| |
| |-
| |
| | Наблюдения
| |
| | что студент заметил, запустив свои команды
| |
| |}
| |
|
| |
| ==== Примеры кода NetLogo для remix-страниц ====
| |
|
| |
| <syntaxhighlight lang="Lisp" line>
| |
| ask patches [ set pcolor red ]
| |
| ask turtles [ fd 1 ]
| |
| ask turtles [ set color blue ]
| |
| show count turtles
| |
| ask patches with [pxcor > 0] [ set pcolor yellow ]
| |
| </syntaxhighlight>
| |
|
| |
| Такие команды читатель копирует прямо в Command Center запущенной модели (одной строкой) и сразу видит результат. Ключевое слово '''ask''' — основа обращения к агентам в [[NetLogo]]: оно адресует команды либо всем агентам, либо подмножеству. Точно так же как и ask в [[SMW]].
| |
|
| |
| <syntaxhighlight lang="Lisp" line>
| |
| to scatter-ants [n]
| |
| create-turtles n [
| |
| setxy random-xcor random-ycor
| |
| set color red
| |
| set shape "bug"
| |
| ]
| |
| end
| |
| </syntaxhighlight>
| |
|
| |
|
| |
| ==== Требования к remix-странице NetLogo ====
| |
|
| |
| {| class="wikitable"
| |
| ! Требование
| |
| ! Минимум
| |
| |-
| |
| | Встроенная исходная модель
| |
| | обязательна
| |
| |-
| |
| | Команды для Command Center
| |
| | не менее 3
| |
| |-
| |
| | Процедуры для вкладки Code
| |
| | не менее 2
| |
| |-
| |
| | Вопросы для исследования
| |
| | не менее 3
| |
| |-
| |
| | Наблюдения / выводы
| |
| | не менее 1 абзаца
| |
| |}
| |
|
| |
| === Lua ===
| |
| {| class="wikitable"
| |
| ! Модуль
| |
| ! Что делает
| |
| ! Уровень
| |
| |-
| |
| | <code>Module:Card</code>
| |
| | инфокарточка из именованных аргументов
| |
| | вводный
| |
| |-
| |
| | <code>Module:Table</code>
| |
| | wikitable из списка
| |
| | вводный
| |
| |-
| |
| | <code>Module:Aggregator</code>
| |
| | анализ wiki-страницы: слова, ссылки, заголовки
| |
| | базовый
| |
| |-
| |
| | <code>Module:DatasetAggregator</code>
| |
| | анализ внешнего CSV (через External Data)
| |
| | продвинутый
| |
| |-
| |
| | <code>Module:Badge</code>
| |
| | цветные метки статуса
| |
| | вводный
| |
| |-
| |
| | <code>Module:ProgressBar</code>
| |
| | HTML-прогрессбар
| |
| | средний
| |
| |-
| |
| | <code>Module:Glossary</code>
| |
| | двухколоночный словарь из аргументов
| |
| | базовый
| |
| |}
| |
|
| |
| === Требования к [[remix]] Lua ===
| |
| {| class="wikitable"
| |
| ! Обязательное требование
| |
| ! Минимум
| |
| |-
| |
| | Личный remix-модуль <code>Module:Name/Student</code>
| |
| | 1
| |
| |-
| |
| | Новые функции или режимы по сравнению с исходным
| |
| | 2
| |
| |-
| |
| | Страница документации <code>/doc</code>
| |
| | 1
| |
| |-
| |
| | Страница-демо с примерами вызова
| |
| | 1
| |
| |-
| |
| | Работоспособность на digida.mgpu.ru
| |
| | обязательна
| |
| |}
| |
|
| |
| Пример remix-идеи для Lua
| |
|
| |
| Исходный <code>Module:Aggregator</code> считает слова в wiki-тексте страницы. Remix <code>Module:Aggregator/Ivanov</code> добавляет два режима — <code>templates</code> (подсчёт шаблонов) и <code>categories</code> (подсчёт категорий):
| |
|
| |
| <syntaxhighlight lang="lua" line>
| |
| local function countTemplates(text)
| |
| local n = 0
| |
| for _ in mw.ustring.gmatch(text, "{{[^}]+}}") do
| |
| n = n + 1
| |
| end
| |
| return n
| |
| end
| |
| </syntaxhighlight>
| |
|
| |
| === Сравнение направлений NetLogo <-> Lua ===
| |
| {| class="wikitable"
| |
| ! Параметр
| |
| ! Lua + Scribunto
| |
| ! NetLogo
| |
| |-
| |
| | Что ремиксит студент
| |
| | код модуля
| |
| | текст wiki-страницы вокруг модели
| |
| |-
| |
| | Где живёт результат
| |
| | <code>Module:Name/Student</code>
| |
| | <code>Page/Student</code>
| |
| |-
| |
| | Язык кода
| |
| | Lua
| |
| | NetLogo
| |
| |-
| |
| | Что добавляется
| |
| | новые функции / режимы
| |
| | новые команды / процедуры
| |
| |-
| |
| | Как читатель взаимодействует
| |
| | вызывает модуль через <code>#invoke</code>
| |
| | копирует команды в Command Center
| |
| |-
| |
| | Минимальный remix
| |
| | 2 новые функции
| |
| | 3 команды + 2 процедуры
| |
| |-
| |
| | Тип мышления
| |
| | [[абстракция]], [[функция|функции]]
| |
| | поведение, [[агент]]ы
| |
| |}
| |