Программирование на языках высокого уровня: различия между версиями

Материал из Поле цифровой дидактики
Строка 58: Строка 58:
[[Category:Язык программирования]] [[Визуальная реализация::Блоки-Иконки]]  [[Description::+]] [[ActiveNow::Project is active]] | ?Description | ?Адрес_сообщества
[[Category:Язык программирования]] [[Визуальная реализация::Блоки-Иконки]]  [[Description::+]] [[ActiveNow::Project is active]] | ?Description | ?Адрес_сообщества
}}
}}
=== Понятия ===
{{#ask:  [[Категория:Понятие]] [[Environment::+]] | ?Description | ?Inventor }}


=== [[:Category:Person|Авторы]] и книги, которые оказали влияние на курс ===
=== [[:Category:Person|Авторы]] и книги, которые оказали влияние на курс ===

Версия 12:12, 4 сентября 2024



Планируемые результаты обучения (Знать, Уметь, Владеть) Целью освоения дисциплины является формирование у студентов понимания общих принципов использования языков высокого уровня

Результаты обучения: обучающийся понимает и умеет использовать базовые конструкции языков программирования высокого уровня

Знать
  1. основные типы данных, их особенности
  2. основы функционального и объектно-ориентированного программирования;
  3. особенности реализации программ на языках различных типов ;
Уметь
  1. выбирать наиболее подходящий способ программирования;
  2. выполнять стандартные операции над данными различного типа;
  3. писать программу разными способами - с использованием процедурного, функционального, объектно-ориентированного подходов
  4. структурировать программы;
  5. работать с файлами (создавать, записывать, считывать)
  6. использовать стандартные модули и библиотеки для работы с данными, текстами, временем
  7. находить ошибки, улучшать код, документировать программу
Владеть
  1. навыками совмещения нескольких языков высокого уровня
  2. навыками совместной деятельности в среде Semantic MediaWiki
Содержание разделов курса
  1. Языки высокого уровня. Типология языков
  2. Визуальное программирование
  3. Стандартные типы данных
  4. Работа с данными. Среда выращивания данных и анализа данных
  5. Концепции программирования. Распространённые языковые конструкции
  6. Контейнеры для хранения данных.
  7. Функциональное программирование. Функции высшего порядка
  8. Объектно-ориентированное программирование
  9. Алгоритмы поиска и сортировки в разных языках
  10. Модули и библиотеки
  11. Работа с медиа. Программирование игр и программирование внутри игр.
Видео запись
Среды и средства, которые поддерживают учебный курс Snap!, Python, PHP, Semantic MediaWiki, Lisp, Lua, R, JavaScript
Книги, на которых основывается учебный курс The Wiki Way: Quick Collaboration on the Web, Стили и методы программирования, Structure and Interpretation of Computer Programs, Simply Scheme: Introducing Computer Science
Курс предназначен для магистрантов Категория:ИВО-241м - 2024 год


Содержание разделов дисциплины

Введение

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

Особенности курса

Перечень языков визуально-блочного программирования, активных в настоящее время {{#ask: [[Category:Язык программирования]] [[Визуальная реализация::Блоки-Иконки]] [[Description::+]] [[ActiveNow::Project is active]] | ?Description | ?Адрес_сообщества }}

 DescriptionАдрес сообщества
AgentCubesУчебный блочный язык программирования, ориентированный на создание трёхмерных игр, цифровых историй и симуляцийhttps://agentcubesonline.com/
AgentsheetsПервый язык блочного программирования для создания игр, симуляций и освоения вычислительного мышления. Разработан лабораторией масштабируемого дизайнаhttp://www.agentsheets.com/
AlgoBrixОбучающий язык блочного программирования, поддерживающий программирование роботов и кубиковhttp://www.algobrix.com
AliceЯзык для создания трехмерных миров и обучения основам программирования. Alice представляет собой среду, в которой можно манипулировать 3D-объектами (двигать, вращать, менять цвет и т. д.) и создавать программы, генерирующие анимацию в виртуальных мирах. Она очень похожа на профессиональные современные IDE. Рабочая плоскость разбита на несколько окон: в одном в реальном времени отображается виртуальный мир; в другом присутствует дерево объектов, и для каждого из них предоставляется набор доступных свойств; центральной часть отведена, естественно, под редактор исходного кода; имеется и специальная область событий, позволяющая управлять всем происходящим.http://www.alice.org/
App InventorApp Inventor является бесплатным инструментом для программирования для создания мобильных приложений для Android. Он был разработан Массачусетским технологическим институтом и предоставляет простой интерфейс для создания мобильных приложений, который доступен для любого пользователя. Для программирования в App Inventor используется визуальный язык программирования, очень похожий на язык Scratch и StarLogo Nova.
webapis-get-all-posts.png
http://appinventor.mit.edu/
CreatiCodeСреда для создания 3х мерных игр средствами блочного программированияhttps://www.creaticode.com/
DBSnapКлон Snap! для работами с базами данныхhttps://ysilva.cs.luc.edu/dbsnap/app.html
DRAKONДружелюбный русский алгоритмический язык, который обеспечивает наглядность (сокр. ДРАКОН) — визуальный алгоритмический язык программирования и моделированияhttp://drakon.su/
GPБлочный язык общего назначения, который может использоваться не только в образовательных целяхhttps://gpblocks.org/
Gamestar MechanicСреда и сообщество для создания игр. Gamestar Mechanic is an online game design platform built as a game about making gameshttps://gamestarmechanic.com/
MicroBlocksЯзык программирования - клон языка Scratch специально спроектированный для управления физическими объектамиhttps://microblocks.fun/
NetsBloxВизуальный блочный язык программирования - производный от Scratch и Snap! - внимание уделено сетевым возможностям, интеграции с Google картами. Внутри среды NetsBlox участники проектов могут коллективно редактировать блоки программы так же как это происходит в Google-документах.https://netsblox.org/
OctoStudioСреда для разработки школьниками своих собственных игр на мобильных устройствахhttps://www.media.mit.edu/projects/octostudio/overview/
Pocket CodeМобильное приложение для создание детьми игр и цифровых историйhttps://share.catrob.at/pocketcode
SciSnap!Расширения языка Snap! для использования в изучении математики
ScratchСреда программирования, которая позволяет детям создавать собственные анимированные и интерактивные истории, игры и другие произведения. Этими произведениями можно обмениваться внутри международной среды, которая постепенно формируется в сети Интернет. Scratch — это учебный блочный язык программирования, позволяющий ученикам создавать игры, цифровые истории. Среда разработки дает возможность детям редактировать аудиофайлы и монтировать небольшие, но полноценные видеоролики. В новые версии языка создатели обещают добавить функционал для создания собственных мобильных приложений.https://scratch.mit.edu
ScratchJRScratch Junior – это визуальная среда программирования для детей от 5 до 7 лет. С ее помощью малыши могут создавать мультики, расставляя блоки действий в последовательном порядке.https://scratchjr.org/
Snap!Блочный язык программирования для преподавания алгоритмов и структур данных. Snap! - потомок языка Scratch. В отличие от Scratch Snap! поддерживает лямбда-исчисление, объекты первого класса, процедуры, рекурсия и множество других возможностей. С версии 4.0 Snap! получил современное название и был переписан на JavaScript. Moscow_city_univ.pnghttp://snap.berkeley.edu/
Snap4arduinoЯзык программирования для Arduino
  • Arduino_connect.png
https://snap4arduino.rocks/
SqueakСреда разработки живых интерактивных программ на основе SmallTalkhttp://www.squeak.org/
StarLogo Nova120px-Slnova.png
  • StarLogo Nova – среда совместного агентного моделирования в трехмерной среде. Во многом это среда продолжает и развивает традиции языка Scratch. При этом здесь можно ставить серьезные эксперименты и получать воспроизводимые результаты. Центральной метафорой среды является мир (World), в котором можно создавать агенты различных пород.
  • https://www.slnova.org
    ThunkableThunkable был создан в 2015 году на основе более известного конструктора приложений MIT App Inventor 2, как платформа для разработки на Android. Со временем инструмент обрел кросс-платформенность (iOS и Android) и стал платформой для разработки веб-приложений. Пользователи Thunkable могут добавлять кнопки, текст, изображения и даже карты, чтобы создать полнофункциональное приложение с такими функциями, как push-уведомления, датчики, геолокация, камера, Bluetooth, автономные возможности, и другое. Создание приложений в базовом аккаунте является бесплатным, но при этом можно создавать только общедоступные приложения.https://thunkable.com/
    ToonTalkМини-язык, в котором ученик может собирать алгоритмы из объектов (вещей) на рабочем поле. Полностью веб-приложение.https://toontalk.github.io/ToonTalk/
    ПервоЛогоПервоЛого — универсальная проектная среда на базе языка Лого для начального и дошкольного образования. В ПервоЛого можно создавать проекты, даже не умея читать и считать — как очень простые, состоящие из картинки и текста или звука, так и весьма сложные, включающие в себя различные запрограммированные объекты, роль которых исполняет черепашка.

    Понятия

     DescriptionInventor
    1 ученик:1 компьютерМодель мобильного обучения «1 ученик : 1 компьютер» («модель 1:1», eLearning 1:1) - это образовательная ситуация, в которой основным инструментом обучения школьника является компьютер, а в качестве методов обучения используются технологии и сервисы сетевого взаимодействия, информационного поиска и создания цифровых объектов. Оптимальным вариантом реализации модели является тот, при котором в распоряжении каждого учащегося и каждого учителя имеется собственный портативный, связанный с компьютерами других учащихся по беспроводной локальной сети, ноутбук, имеющий доступ к школьному или классному серверу (роль последнего может выполнять компьютер учителя) и имеющий выход в сеть интернет.Kay
    Papert
    APIИнтерфейс прикладного программирования application programming interface (API) - — описание способов взаимодействия одной компьютерной программы с другими. API (интерфейс прикладного программирования) упрощает процесс программирования при создании приложений, абстрагируя базовую реализацию и предоставляя только объекты или действия, необходимые разработчику. Если графический интерфейс для почтового клиента может предоставить пользователю кнопку, которая выполнит все шаги для выборки и выделения новых писем, то API для ввода/вывода файлов может дать разработчику функцию, которая копирует файл из одного места в другое, не требуя от разработчика понимания операций файловой системы.
    BackpackBackpack - Рюкзак - понятие инструмента, куда можно положить функции, скрипты, звуки, картинки и т.п. полезные вещи для дальнейшего использования в своих программах.
    • 110px-Img11.png
    Big O notation«O» большое — математические обозначения для сравнения асимптотического поведения (асимптотики) функций. Используются в различных разделах математики, но активнее всего — в математическом анализе, теории чисел и комбинаторике, а также в информатике и теории алгоритмов.Бахман
    CSVCSV (от англ. Comma-Separated Values — значения, разделённые запятыми) — текстовый формат, предназначенный для представления табличных данных. Строка таблицы соответствует строке текста, которая содержит одно или несколько полей, разделенных запятыми.
    Complex network analysisComplex network analysis refers to the study of large networks that possess properties which could not be found otherwise in simple graphs. They generally represent bigger systems, like the networks of all web pages on the WWW. It has emerged as a new field comprising basics of graph theory, community detection and machine learning. These networks can be studied in static or dynamic arrangement, depending on the nature of the problem and the data available. Complex networks are of two basic types that are scale-free networks and random or small-world network. Scale-free networks are more loosely connected, having long tails and fewer paths between pairs of nodes.
    DREAMСпецификация Descriptive Agent based Modeling DREAM используется для описания и представления многоагентных моделей.Niazi
    DashboardДашборд — это информационная панель, которая получает данные из других систем и отображает их в понятном виде. — «приборная панель» или «приборная доска». Дашборды бывают интерактивными и данные в нем - кликабельными. Информация из различных источников автоматически собирается, группируется и представляется на дашборде.
    DynabookDynabook — концепция устройства для обучения. Создана Аланом Кеем в 1968 году, за два года до основания Xerox PARC. Кей хотел сделать «персональный компьютер для детей всех возрастов».Kay
    FaaSУровень абстракции, более известный как бессерверные вычисления, ориентирован скорее на тех, кто занимается разработкой . Аппаратные ресурсы абстрагированы, и пользователь может сосредоточиться на создании ПО, а не на управлении инфраструктурой : это забота поставщика. FaaS может быть особенно интересным вариантом для микро- и наносервисов, актуальных для мобильных приложений и интернета вещей. Примеры FaaS — AWS Lambda и Google Cloud Functions.
    FlockingСтая, образование стаи - процесс формирования коллективного поведения без каких-либо руководящих указаний в результате наблюдения за поведением товарищей по стае.Wilensky
    Reynolds
    FlowchartБлок-схема — распространённый тип схем (графических моделей), описывающих алгоритмы или процессы, в которых отдельные шаги изображаются в виде блоков различной формы, соединённых между собой линиями, указывающими направление последовательности. В вики создаются и отображаются при помощи языков graphviz, PlanUML и mermaid Diagrams_213d6d74673645b1ce04cf0868570ef7.png
    FooFoobar или foo — это метапеременная, а также текст-заполнитель, используемый в программировании или в документациях, связанных с программированием. Этот термин используется для наименования переменных, функций или команд, точная идентичность которых не важна и служит только для демонстрации концепции.
    GISГеоинформационная система (географическая информационная система, ГИС) — система сбора, хранения, анализа и графической визуализации пространственных (географических) данных и связанной с ними информации о необходимых объектах. Понятие геоинформационной системы также используется в более узком смысле — как инструмента (программного продукта), позволяющего пользователям искать, анализировать и редактировать как цифровую карту местности, так и дополнительную информацию об объектах
    GPTGPT = stands for generation Generative Pre-trained Transformer
    Game designОбласть разработки компьютерных игр
    HTMLHTML — язык гипертекстовой разметки
    HTTPHTTP является основой обмена данными для Всемирной паутины. Это независимый от языка программирования протокол, предназначенный для обмена документами (также называемыми ресурсами) между приложениями через интернет. Протокол HTTP используется широким спектром приложений, наиболее известными из которых являются веб-браузеры.
    Inquiry based learningИсследовательское обучение или обучение через открытия — педагогический подход, разработанный в 1960-х годах как ответ на традиционные формы обучения, в которых требовалось запоминания информации из учебных материалов. Философия «обучения через открытие» происходит из конструктивистских теорий обучения, таких, как работы Пиаже, Дьюи, Выготского и Паулу ФрейреВыготский
    Пиаже
    Papert
    Дьюи
    JSONJSON (англ. JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript. Как и многие другие текстовые форматы, JSON легко читается людьми. Формат JSON был разработан Дугласом Крокфордом. Несмотря на то, что он очень похож на буквенный синтаксис объекта JavaScript, его можно использовать независимо от JavaScript, и многие среды программирования имеют возможность читать (анализировать) и генерировать JSON.Крокфорд
    K-meansМетод k-средних (англ. k-means) — наиболее популярный метод кластеризации. Действие алгоритма таково, что он стремится минимизировать суммарное квадратичное отклонение точек кластеров от центров этих кластеров.
    LMSLms (learning management system) - программное приложение для администрирования учебных курсов в рамках дистанционного обучения.
    Learning designТермин учебный дизайн (Learning Design) дизайн учебных сценариев, сформировался в период 2000 – 2007 гг. Основной подход дизайна учебных сценариев связан с разработкой спецификации формального языка, который могли бы понимать и выполнять не только люди, но и компьютерные программы. Второй, более неформальный подход, связан с тем, что большее внимание уделяется педагогике и действиям, которые совершает ученик, а не учебным материалам и учебным объектам, которые представляются учебными центрами.
    MQTTMQTT (Message Queue Telemetry Transport) – это основанный на стандартах протокол, или набор правил, обмена сообщениями, используемый для взаимодействия между компьютерами. Интеллектуальные датчики, носимые устройства и другие устройства Интернета вещей (IoT) обычно передают и получают данные по сетям с ограниченными ресурсами и пропускной способностью. Эти устройства IoT используют MQTT для передачи данных, поскольку он прост в реализации и может эффективно передавать данные IoT. MQTT поддерживает передачу сообщений от устройств в облако и в обратном направлении.Стэнфорд-Кларк
    MarkdownMarkdown (Маркдаун) - это облегченный язык разметки с синтаксисом форматирования обычного текста, на основе которой могут быть созданы документы разного формата - HTML (веб страницы), PDF, документы в формате MS Word, интерактивные приложения.
    MemexМемекс (англ. memex, словослияние memory и index) — наименование гипотетического прототипа гипертекстовой системы, описанной Бушем в эссе «Как мы можем мыслить», опубликованном в журнале The Atlantic в 1945 году. Буш изобразил мемекс как устройство, в котором человек сможет хранить свои книги, записи и контакты и которое «выдаёт нужную информацию с достаточной скоростью и гибкостью». Мемекс позволял бы существенно расширить и дополнить возможности памяти человека. Концепция мемекса оказала большое влияние на разработку ранних гипертекстовых системБуш
    ODD принципыПротокол описания модели при её публикации: The Overview, Design concepts and Details (ODD) protocol for describing Individual- and Agent-Based Models (ABMs) is now widely accepted and used to document such models in journal articles.

    Протокол ODD состоит из 21 элемента, которые разделены на три категории: «Обзор» (Overview), «Концепции проектирования» (Design concepts) и «Детали» (Details); отсюда и аббревиатура ODD. Каждая из этих категорий служит своей цели: дать обзор, объяснить, как использовались концепции дизайна, важные для модели, и объяснить все детали концепции модели. Принципы дизайна исследовательской многоагентной модели. 21 принцип разбит по группам. Например:

    Адаптация
    Какое адаптивное поведение демонстрируют агенты и почему? Как они могут реагировать на изменения в своей среде и в самих себе? Какие решения они принимают?
    Обучение
    Меняются ли агенты со временем, как они принимают адаптивные решения, в результате своего нового опыта? Если да, то как?
    Railsback
    Grimm
    PromptПромпт (от англ. prompt – «побуждать») – это запрос, вводные данные, которые вводит пользователь, когда общаетесь с нейросетью. «Промптинг (prompting) — это способ программного управления планированием вашей модели машинного обучения, который позволяет пользователю задать начальные условия для модели, такие как фраза или ключевые слова, которые модель должна использовать для создания ответа.
    Prompt engineering is the process of creating inputs for AI models to improve the output for a given task. A prompt is a broad instruction that triggers an AI model to generate content; it could be a statement, a block of code, or a string of words.
    RESTREST (от англ. Representational State Transfer — «передача репрезентативного состояния» или «передача „самоописываемого“ состояния») — архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Другими словами, REST — это набор правил того, как программисту организовать написание кода серверного приложения, чтобы все системы легко обменивались данными и приложение можно было масштабировать. REST представляет собой согласованный набор ограничений, учитываемых при проектировании распределённой гипермедиа-системы.Филдинг
    RemixРеми́кс (англ. remix) — версия музыкального произведения, записанная позже оригинальной версии, как правило, в более современном варианте аранжировки. Иногда создаётся путём «перемешивания» нескольких частей исходной композиции, наложения на неё различных звуков, спецэффектов, изменения темпа, тональности и т. п
    SLAMSLAM (англ. simultaneous localization and mapping — одновременная локализация и построение карты) — метод, используемый в мобильных автономных средствах для построения карты в неизвестном пространстве или для обновления карты в заранее известном пространстве с одновременным контролем текущего местоположения и пройденного пути. Популярные методы приближённого решения данной задачи — фильтр частиц и расширенный фильтр Кальмана. Некоторые реализации метода используются в беспилотных автомобилях, летательных аппаратах, автономных подводных аппаратах, планетоходах, и даже внутри человеческого тела.
    SpriteСпрайт - sprite - графический объект в компьютерной графике. В ряде визуальных языков программирования спрайт присутствует как объект, наделённый собственными свойствами и методами
    Team AssemblyTeam Assembly - формирование команд. Ключевое понятие в области Team Science - как образуются командыGuimera
    TeammateТоварищ по команде - teammate
    URIURI— унифицированный (единообразный) идентификатор ресурса. URI — последовательность символов, идентифицирующая абстрактный или физический ресурс. Ранее назывался Universal Resource Identifier — универсальный идентификатор ресурса.
    URLУнифицированный указатель ресурса (от англ. Uniform Resource Locator, сокр. URL — система унифицированных адресов электронных ресурсов, или единообразный определитель местонахождения ресурса. Используется как стандарт записи ссылок на объекты в Интернете (Гипертекстовые ссылки во «всемирной паутине» www).Бернерс-Ли
    User interfaceИнтерфе́йс по́льзователя, он же по́льзовательский интерфейс (UI — англ. user interface) — интерфейс, обеспечивающий передачу информации между пользователем-человеком и программно-аппаратными компонентами компьютерной системы.
    VOMASVOMAS (Virtual Overlay Multi-agent System) - подход к описанию многоагентных систем. В основе подхода лежит использование данных для проверки адекватности модели.Niazi
    WWWВсемирная паутина — глобальное информационное пространство, основанное на физической инфраструктуре сети Интернет и гипертекстовом протоколе передачи данных HTTP. Всемирную паутину образуют миллионы веб-серверов — программ, запускаемых на подключённых к сети компьютерах и использующих протокол HTTP для передачи данных.
    XMLXML (Extensible Markup Language) - это язык разметки, описывающий целый класс объектов данных, называемых XML-документами. Этот язык используется в качестве средства для описания грамматики других языков и контроля за правильностью составления документов.
    АбстракцияСоставной элемент вычислительного мышления. Фундаментальная идея абстракции состоит в разделении несущественных деталей реализации подпрограммы и характеристик, существенных для корректного её использования.Harvey
    АвтономияСпособность человека выбирать и иметь выбор. Подробно рассматривается в теории самодтерминации.Deci
    АгентАгенты - это автономные объекты, которые могут самостоятельно реагировать на внешние события и выбирать соответствующие действия. Это - некто или нечто, выполняющий инструкции. В информатике - сущность, которая расположена в некоторой среде и способна в этой среде к автономным целенаправленным действиям.Papert
    Агентное моделированиеАгентное моделирование (agent-based model) (ABM)— метод имитационного моделирования, исследующий поведение децентрализованных агентов и то, как такое поведение определяет поведение всей системы в целом. В отличие от системной динамики аналитик определяет поведение агентов на индивидуальном уровне, а глобальное поведение возникает как результат деятельности множества агентов (моделирование «снизу вверх»). ABM представляют собой модели, в которых отдельные лица или агенты описываются как уникальные и автономные объекты, которые обычно взаимодействуют друг с другом и с окружающей их средой на местном уровне. Агентами могут быть организмы, люди, предприятия, учреждения и любые другие объекты, преследующие определенную цель. Когда мы даем агентам правила адаптации к изменениям в их среде и к тому, что делают другие агенты, тогда поведение каждого отдельного агента и, следовательно, поведение всей системы вытекает из этих правил, характеристик агентов и окружающей среды. Эмерджентность - это основная объясняющая концепция агентного моделирования. Эпштейн и Акстелл (1996) удачно описали этот вид объяснения своим знаменитым вопросом:
    • «Сможете ли вы его вырастить?»:
      • Можете ли вы заставить вашу модельную систему выглядеть и вести себя как настоящая, снабдив своих агентов правильным адаптивным поведением?
    Wilensky
    Epstein
    Railsback
    Grim
    АдаптацияАдапта́ция (лат. adapto «приспособляю») — приспособление строения и функций организма, его органов и клеток к условиям внешней среды. Процессы адаптации направлены на сохранение гомеостаза.
  • Адаптация в кибернетике — процесс накопления и использования информации в системе, направленный на достижение определённого, обычно оптимального в некотором смысле, состояния или динамики (поведения) системы при начальной неопределённости и изменяющихся внешних условий, изменений окружающей среды. При адаптации могут изменяться параметры и структура системы, алгоритм её функционирования, управляющие воздействия и т. п.
  • Дарвин
    Павлов
    Селье
    Активное эссеAn “Active Essay” is a new kind of literacy, combining a written essay, live simulations, and the programs that make them work in order to provide a deep explanation of a dynamic system. The reader works directly with multiple ways of representing the concepts under discussion. By “playing with” the simulations and code, the reader gets some hands-on experience with the topic. Active Essays -термин Алана Кея «активное эссе», где виды изложения и аргумента, которые можно ожидать в эссе, усиливаются благодаря тому, что интерактивная программа является одним из многих типов медиа для нового типа документа.Kay
    АкторА́ктор — действующий субъект (индивидуальный или коллективный); индивид, социальная группа, организация, институт, общность людей, совершающих действия, направленные на других.

    Актор в агентно-ориентированном программировании и модели акторов — программная сущность заданной структуры и механизмов взаимодействия.

    А́ктор в UML (англ. actor) — множество логически связанных ролей, исполняемых при взаимодействии с прецедентами или сущностями.
    Латур
    Акторно-сетевая теорияКлючевое положение теории состоит в том, что участники сетей — люди — рассматриваются наравне со всеми другими сущностями, включенными в сеть. Объектом изучения акторно-сетевой теории является сеть социальных взаимодействий, неотделимая от социальных акторов. Акторно-сетевая теория обосновывает равенство всех узлов сети тем, что без других сущностей человек не может существовать ни одного мгновения. Внутри акторно-сетевой теории люди не имеют никакого преимущества перед объектами или орудиями. Отношения между людьми, вещами, медиаторами, компьютерными программами полностью симметричны. Люди, орудия и объекты рассматриваются как равные узлы гибридной сети.Латур
    АлгоритмАлгоритм — конечная совокупность точно заданных правил решения некоторого класса задач или набор инструкций, описывающих порядок действий исполнителя для решения определённой задачи. В старой трактовке вместо слова «порядок» использовалось слово «последовательность», но по мере развития параллельности в работе компьютеров слово «последовательность» стали заменять более общим словом «порядок». Независимые инструкции могут выполняться в произвольном порядке, параллельно, если это позволяют используемые исполнители. Aлгоритм (algorithm) — это любая корректно определенная вычислительная процедура, на вход (input) которой подается некоторая величина или набор величин, и результатом выполнения которой является выходная (output) величина или набор значений. Таким образом, алгоритм представляет собой последовательность вычислительных шагов, преобразующих входные величины в выходные.
    Diagrams_bed5db8cee4f071de30328edd77489b1.png
    Анализ социальных сетей/Ключевые понятияСтатья, в которой собраны ключевые понятия для анализа социальных сететейБарабаши
    Морено
    … следующие результаты

    Авторы и книги, которые оказали влияние на курс

    Языки высокого уровня. Типология языков

    • Используя WebGrid соберите поле своих собственных представлений о языках высокого уровня
    Lisp Prolog C Python Snap!(Scratch)
    (progn(setq x"Здравствуй, учебный курс!")x)
    
    :-Print('Здравствуй, учебный курс!').
    
    #include <stdio.h>
    int main(void)
    {printf("Здравствуй, учебный курс!");
    return 0;}
    
    print("Здравствуй, учебный курс!")
    
    когда спрайт нажат
    сказать ["Здравствуй, учебный курс!"]
    


    Лента времени обучающих языков (от Lisp & Logo)


    Паттерны поведения компьютерных агентов и их возможная реализация

     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 решение собирается из блоков сенсоров - если я касаюсь другого агента (указать какого именно), то ...
    ТащитьТащить - паттерн "тащить" противоположен по значению паттерну толкать - агент может тащить за собой другого агента или агентов. Например, поезд тащит за собой вагоны, лошадь тащит за собой сани, буксир тащит за собой баржи или плот.
    ТолкатьПаттерн "толкать" — это паттерн, который мы видим во многих играх. Агент должен толкать ящики или мешки с золотом. Когда игрок толкает коробку или мешок, эти объекты движутся в том направлении (вверх, вниз, вправо или влево), в котором их толкнули.Объект или Агент, над которым совершается действие, получает сигнал от агента субъекта деятельности, поворачивается в ту же сторону, куда смотрит толкающий агент и двигается в эту сторону.
    Пример реализации простых паттернов поведения агентов в среде Scratch или в среде Snap!
    https://snap.berkeley.edu/snap/snap.html#present:Username=patarakin&ProjectName=Simple_Game

    Работа с изображением

    https://snap.berkeley.edu/snap/snap.html#present:Username=patarakin&ProjectName=image_data


    Загрузка CSV данных

    Работа с изображением как с данными

    Стандартные типы данных

    Для Snap!

    Data snap.jpg

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

    Контейнеры для хранения данных

    Функциональное программирование

    Языки функционального программирования общего назначения

    {{#ask: [[Category:Язык программирования]] [[Назначение языка::Язык общего назначения]] [[Programming paradigm::Функциональное программирование]] | ?Description }}

     Description
    ClojureClojure является функциональным языком программирования с поддержкой функций в качестве объектов первого класса (first class objects) и неизменяемыми (за исключением специальных случаев) данными, включая поддержку "ленивых" коллекций данных. Современный диалект Лиспа, язык программирования общего назначения с поддержкой разработки в интерактивном режиме, поощряющий функциональное программирование и упрощающий поддержку многопоточности. Clojure работает на платформах JVM и CLR. Clojure отличает философия «код как данные» (гомоиконность) и развитая система лисп-макросов.
    FennelFennel is a programming language that brings together the speed, simplicity, and reach of Lua with the flexibility of a lisp syntax and macro system.
    GPБлочный язык общего назначения, который может использоваться не только в образовательных целях
    JavaScriptJavaScript обычно используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам. Основные архитектурные черты: динамическая типизация, слабая типизация, автоматическое управление памятью, прототипное программирование, функции как объекты первого класса.
    LispLISP (от англ. LISt Processing language — «язык обработки списков», современное написание: Lisp) — семейство языков программирования, программы и данные в которых представляются в виде списков.
    ScalaScala — мультипарадигмальный язык программирования, спроектированный кратким и типобезопасным для простого и быстрого создания компонентного программного обеспечения, сочетающий возможности функционального и объектно-ориентированного программирования.
    SchemeScheme — функциональный язык программирования, один из трёх наиболее популярных диалектов Лиспа. Обладает минималистичным дизайном, содержит минимум примитивных конструкций и позволяет выразить всё необходимое путём надстройки над ними. Например, использует всего два механизма организации циклов — хвостовую рекурсию и итеративный подход (в котором используются временные переменные для сохранения промежуточного результата).
    SwiftЯзык программирования Swift используют, чтобы писать приложения и программы для устройств Apple: айфонов, айпадов, умных часов, телевизоров, макбуков и стационарных компьютеров с macOS. В iOS-разработке этот язык считается стандартом.
    РЕФАЛРЕФАЛ (Рекурсивных функций алгоритмический) — один из старейших функциональных языков программирования, ориентированный на символьные вычисления: обработку символьных строк (например, алгебраические выкладки); перевод с одного языка (искусственного или естественного) на другой; решение проблем, связанных с искусственным интеллектом. Соединяет в себе математическую простоту с практической направленностью на написание больших и сложных программ.

    Функции высшего порядка

    Объектно-ориентированное программирование

    Языки визуального программирования

    Визуальная реализация :Блоки-Иконки

    AgentCubes, Agentsheets, AlgoBlock, AlgoBrix, Alice, App Inventor, Beetle Blocks, Blockly, Boxer, CreatiCode, DBSnap, DRAKON, Etoys, GP, GameBlox, Gamefroot, Gamestar Mechanic, Hopscotch, Kodu, LogoBlocks, Looking Glass, MakeCode, Mama, MicroBlocks, Move the Turtle, NetsBlox, OctoStudio, Piktomir, Pocket Code, Robo Pro Light, SciSnap!, Scratch, ScratchJR, Snap!, Snap4arduino, Sophie, Squeak, Stagecast Creator, StarLogo Nova, Tangible Programming Bricks, The Incredible Machine, Thunkable, ToonTalk, Битва Големов, ПервоЛого

    Примеры создания моделей в среде StarLogo Nova


    Возможность встраивать модели StarLogo Nova + NetLogo Web

    Алгоритмы поиска и сортировки в разных языках

    Scratch

     Description
    Сортировка пузырькомСортиро́вка простыми обменами, сортировка пузырько́м (англ. bubble sort) — простой алгоритм сортировки. Для понимания и реализации этот алгоритм — простейший, но эффективен он лишь для небольших массивов. Метод сортировки обменами лежит в основе некоторых более совершенных алгоритмов, таких как шейкерная сортировка, пирамидальная сортировка и быстрая сортировка. 400px-SortingBubble_ed.png

    Модули и библиотеки



    Описание Диаграмма, в которой демонстрируются основные принципы модульного программирования
    Область знаний Информатика, Управление
    Среды для создания диаграммы: Graphviz



    Как узнать какие модули (Extension) уже есть в системе


    Где посмотреть всё разнообразие доступных расширений

    Пространство Модулей + Lua

    Модули в Scratch

    Цветные ящики являются модулями, из которых строится среда Scratch
    StarLogo Nova + Snap!


    Собственные блоки и ящики блоков в Snap!

    Работа с данными. Среды выращивания данных и анализа данных.

    См. Семинары МГПУ о данных в образовании

     DescriptionExamples
    GoogleSchool 01(dataset)Датасет собран из лог-файла действий учителей внутри школыВ статье Патаракин Е.Д., Ярмахов Б.Б. Анализ связей между сотрудниками школы на основе их взаимодействия в домене Google Apps для образования // ОБРАЗОВАТЕЛЬНЫЕ ТЕХНОЛОГИИ И ОБЩЕСТВО. 2016. Vol. 19, № 2. P. 585–599.
    GoogleSchool 02(dataset)Датасет собран из лог-файла действий учителей внутри школы в среде GoogleApps - совместные действия учителей над документами различного типа превращаются в социальный граф.В статье Патаракин Е.Д., Ярмахов Б.Б. Анализ связей между сотрудниками школы на основе их взаимодействия в домене Google Apps для образования // ОБРАЗОВАТЕЛЬНЫЕ ТЕХНОЛОГИИ И ОБЩЕСТВО. 2016. Vol. 19, № 2. P. 585–599.
    Letopisi 2006 (dataset)120px-Hist_2006_associatios.png Лог-файл действий участников проекта Letopisi в 2006 годуPatarakin E.D. Wikigrams-Based Social Inquiry // Digital Tools and Solutions for Inquiry-Based STEM Learning. IGI Global, 2017. Vol. 1. P. 112–138.
    Preschool Digital Scopus120px-Co-ocurence-network.jpg

    1709 публикаций (стандартный набор полей Скопус) - Для выделения данных из базы Scopus использовалась следующая формула:

    • ALL (( preschool OR "primary school" ) AND ( "psychological" OR "pedagogical" ) AND ( computer OR internet OR digital ) ) AND PUBYEAR > 1999 AND ( LIMIT-TO ( ACCESSTYPE(OA) ) )
    В статье "Связь цифрового компонента обучения и развития детей дошкольного и школьного возраста: обзор исследований и международных образовательных практик" В вики тестируем анализ данных при помощи разных пакетов.
    Scopus Games (dataset)Датасет по публикациям о компьютерных играх, собранный в ScopusВКР Райкова Александра Дмитриевна Развитие навыков вычислительного мышления у детей дошкольного и младшего школьного возраста при помощи видеоигр https://youtu.be/2-M1W-wnT-U
    Библиосет: публикационная активность ВВГУ120px-Vl_sci_schools.png Данные о публикационной активности Владивостокского государственного университета https://vvsu.ru/ выгружены из Scopus в формате RIS.Научная статья
    Взаимное копирование МЭШ (датасет)При изучении записей действий над учебными сценариями в МЭШ из всей таблицы действий учителей над объектами-сценариями были выделены только действия взаимного копирования. В результате был выделен граф совместных копирований состоящий из 145 компонент. При этом узлы и связи распределены крайне неравномерно. Главный компонент содержит 1174 узлов и 17928 связей, а на остальные 144 компоненты приходится всего 378 узлов и 3421 связи.
    375px-Giant_copies.png
    Патаракин Е.Д., Буров В.В. Незримый колледж МЭШ // Вестник Мгпу. Серия: Информатика И Информатизация Образования. 2022. № 2 (60). 38-52 https://www.elibrary.ru/item.asp?id=49058657

    Взаимное копирование МЭШ (датасет)

    Описание датасета При изучении записей действий над учебными сценариями в МЭШ из всей таблицы действий учителей над объектами-сценариями были выделены только действия взаимного копирования. В результате был выделен граф совместных копирований состоящий из 145 компонент. При этом узлы и связи распределены крайне неравномерно. Главный компонент содержит 1174 узлов и 17928 связей, а на остальные 144 компоненты приходится всего 378 узлов и 3421 связи.
    375px-Giant_copies.png
    Описание полей
    1. from - ID участника, который копирует сценарий
    2. to - ID участника, у которого копируют сценарий
    3. subject - предмет сценария копируемого урока
    4. date_of_action - время действия
    Форматы данных CSV
    Область знаний Математика, Педагогика, Психология, Управление
    Веб-сайт - ссылка на датасет http://www.uic.unn.ru/pustyn/data-sets/mesh/giant recicrop component.csv
    Примеры использования датасета Патаракин Е.Д., Буров В.В. Незримый колледж МЭШ // Вестник Мгпу. Серия: Информатика И Информатизация Образования. 2022. № 2 (60). 38-52 https://www.elibrary.ru/item.asp?id=49058657
    Год создания датасета 2022



    Что делают в МЭШ учителя иностранного языка

    Описание - в статье Незримый колледж МЭШ

    Главный компонент содержит 1174 узла и 17928 связей.

    Датасет в вики

    Копирующий Копируемый Предмет Время
    1106 901 Химия 2016-12-01T16:40:44Z
    1480 234 Химия 2017-06-23T09:55:48Z
    234 1480 Химия 2017-10-12T06:08:15Z
    650 927 Химия 2018-02-21T20:15:05Z
    1362 901 Химия 2018-06-27T20:39:01Z
    390 881 Химия 2018-08-29T22:36:47Z
    647 604 Химия 2019-02-01T16:04:44Z
    430 585 Химия 2019-03-28T06:24:56Z
    927 650 Химия 2020-05-15T05:37:58Z

    Представление агентов - учителей в Snap!

    Snap! + данные

    Примеры проектов и отдельных скриптов
    Пример, как можно обратиться из Snap! к внешним датасетам и совершить действия над данными: выделить столбец, сложить данные в столбце, отсортировать данные по значению, построить гистограмму


    WoS collection script pic.png


    Food scripte.png


    Snap Ages Plots.jpg

    Работа с медиа. Программирование игр и программирование внутри игр

    Описания игр

    Категория:DEG




    Критерии оценки по дисциплине

    Образовательный результат Тема Задание Пример


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