|
|
(не показано 11 промежуточных версий 2 участников) |
Строка 1: |
Строка 1: |
| Это для курса "Алгоритмы и структуры данных" | | Это для курса "Алгоритмы и структуры данных" |
|
| |
|
| {{#ask:[[Как сделать сортировку в массиве?]] | format=embedded | embedonly=yes}}
| | == Snap! == |
|
| |
|
| {{Curriculum
| | * https://snap.berkeley.edu/project?username=kuptsovaid&projectname=KuptovaID%2dPBD%2d221m |
| Цель
| |
| * теоретические знания и практический опыт в области основ алгоритмизации задач, классификации языков программирования, типов данных, структур данных, взаимосвязь алгоритмов и структур данных, особенностей реализации алгоритмов и типов данных в языках блочного программирования Scratch, Snap!, GP | |
| ; Знать
| |
| : Основные понятия, связанные с миром алгоритмов и структур данных | |
| : основы алгоритмизации задач, структуры данных;
| |
| : типы данных, структуры данных;
| |
| : методы и алгоритмы поиска и сортировки данных;
| |
| ; Уметь
| |
| == обращаться к внешним и внутренним дым из среды Semantic MediaWiki, уметь использовать различные типы данных внутри Semantic MediaWiki ==
| |
| ; Примеры задач на внутренние данные
| |
| * Посчитай внутри вики количество участников из МГПУ [[:Category:UserMGPU]]?
| |
|
| |
|
| {{#ask: [[Category:UserMGPU]] }}
| | <snap project="KuptovaID%2dPBD%2d221m" user="kuptsovaid" /> |
|
| |
|
| * Посчитай число участников, которые указали, что используют язык Scratch?
| |
| * Собери таблицу с описанием писателей [[Category:Person]], которые оказали влияние на язык [[R]]
| |
| * Собери тайм-лайн с языками, ведущими свое происхождение от языка [[Prolog]]
| |
| * ''' Предложи собственную задачу на использование внутренних данных в среде Semantic MediaWiki '''
| |
|
| |
|
| ; Примеры задач на внешние данные
| | {{#ask:[[Как сделать сортировку в массиве?]] | format=embedded | embedonly=yes}} |
| * Размести на странице выборку из датасета, который уже есть в категории [[:Category:Dataset]]
| |
| * ''' Добавь новый датасет в [[:Category:Dataset]] и предложи вариант его использования '''
| |
| | |
| * обмениваться проектами и блоками программ в Snap!
| |
| * сравнивать и объединять статьи о языках программирования
| |
| * импортировать и экспортировать данные в среду визуального программирования Snap!
| |
| * проектировать и программировать линейные и разветвляющиеся структуры алгоритмов;
| |
| * планировать процесс реализации алгоритма при помощи псевдокода и диаграмм
| |
| * использовать язык '''dgl''' , mermaid, '''PlantUML''' встраивать диаграммы алгоритмов в вики страницы
| |
| * представлять алгоритмы на страницах вики в виде диаграмм, псевдокода, кода на различных языках программирования
| |
| * создавать собственные блоки (команды и процедуры с входными параметрами) в среде Snap! (создавать функции с использованием различных типов данных))
| |
| * оценивать и сравнивать эффективность алгоритмов, вычислительную сложность алгоритмов
| |
| * использовать рекурсию в командах и процедурах, использовать рекурсию при создании собственных функций
| |
| * использовать объекты первого класса и лямбда исчисления.
| |
| |Description=Содержание
| |
| ; 1. Введение в алгоритмы и структуры данных
| |
| * Определение алгоритма и структуры данных
| |
| ; 2. Основные алгоритмы
| |
| * Линейный поиск
| |
| * Бинарный поиск
| |
| * Сортировка (вставками, выбором, слиянием, быстрая сортировка)
| |
| * Рекурсия и рекурсивные алгоритмы
| |
| ; 3. Структуры данных
| |
| * Массивы и связные списки
| |
| * Стеки и очереди
| |
| * Деревья (бинарные, сбалансированные, двоичные деревья поиска)
| |
| * Графы (ориентированные и неориентированные, поиск в глубину и ширину)
| |
| |Environment=Snap!, R, RStudio, Lua, Python
| |
| |Book=Стили и методы программирования, Computer Science with Snap! by Examples, Initiation to Algorithmics with Scratch
| |
| }}
| |
| ; Учебная группа, работающая с курсом Алгоритмы и структуры данных данных в в 2023 году - [[:Категория:ПБД221м|ПБД221м]]
| |
| * Учебная группа, работающая с курсом Алгоритмы и структуры данных данных в в 2022 году - [[:Категория:ПБД211М|ПБД211М]]
| |
| | |
| ; Особенность курса - [[Active Essay]] смотрим и тестируем на поле
| |
| | |
| <scratchblocks>
| |
| when [up arrow v] key pressed
| |
| point in direction (0)
| |
| move (10) steps
| |
| when [down arrow v] key pressed
| |
| point in direction (180)
| |
| move (10) steps
| |
| when [right arrow v] key pressed
| |
| point in direction (90)
| |
| move (10) steps
| |
| when [left arrow v] key pressed
| |
| point in direction (-90)
| |
| move (10) steps</scratchblocks>
| |
| | |
| : И смотрим на то, как они выполняются
| |
| <scratch project="210120481" />
| |
| : или в [[Snap!]]
| |
| | |
| <snap project="Flocking_Snap" user="patarakin" />
| |
| | |
| == Цель, результаты освоения дисциплины ==
| |
| В результате изучения данной дисциплины студенты будут иметь представление о современных алгоритмических языках, о способах записи [[алгоритм]]ов и конструирования программ, основах объектного подхода в программировании
| |
| ; Цель
| |
| : теоретические знания и практический опыт в области основ алгоритмизации задач, классификации языков программирования, типов данных, структур данных, взаимосвязь алгоритмов и структур данных, особенностей реализации алгоритмов и типов данных в языках блочного программирования [[Scratch]], [[Snap!]], [[GP]]
| |
| | |
| ; Знать:
| |
| # Основные понятия, связанные с миром алгоритмов и структур данных См. [[:Категория:Понятие]]
| |
| # основы алгоритмизации задач, структуры данных;
| |
| # типы данных, структуры данных;
| |
| # методы и алгоритмы поиска и сортировки данных;
| |
| ; Уметь
| |
| # обращаться к внешним и внутренним данным из среды [[Semantic MediaWiki]], уметь использовать различные типы данных внутри Semantic MediaWiki см. [[:Категория:Dataset]]
| |
| # обмениваться проектами и блоками программ в [[Snap!]]
| |
| # сравнивать и объединять статьи о языках программирования [[Taxonomic_sandbox]]
| |
| # импортировать и экспортировать данные в среду визуального программирования [[Snap!]]
| |
| # проектировать и программировать линейные и разветвляющиеся структуры алгоритмов;
| |
| # планировать процесс реализации алгоритма при помощи псевдокода и диаграмм - [[:Категория:Diagrams]]
| |
| # использовать язык [[graphviz]], [[mermaid]], [[PlantUML]] встраивать диаграммы алгоритмов в вики страницы см. Graphviz + [[:Категория:Diagrams]] -
| |
| # представлять алгоритмы на страницах вики в виде диаграмм, псевдокода, кода на различных языках программирования
| |
| # создавать собственные блоки (команды и процедуры с входными параметрами) в среде Snap! (создавать функции с использованием различных типов данных))
| |
| # оценивать и сравнивать эффективность алгоритмов, вычислительную сложность алгоритмов
| |
| # использовать рекурсию в командах и процедурах, использовать рекурсию при создании собственных функций
| |
| # использовать объекты первого класса и лямбда исчисления
| |
| | |
| == Содержание разделов дисциплины: ==
| |
| === Введение. Основные понятия. Пространство для совместной деятельности ===
| |
| Основы алгоритмизации задач. Semantic MediaWiki как поле совместной деятельности. Типы данных внутри Semantic MediaWiki. Обращение к внешним данным.
| |
| | |
| === История языков программирования и обучающих языков ===
| |
| Современные алгоритмические языки. Вычислительное мышление и вычислительное участие.
| |
| | |
| === Представление алгоритмов в виде диаграмм, псевдокода, кода на различных языках программирования ===
| |
| # проектировать и программировать линейные и разветвляющиеся структуры алгоритмов;
| |
| # планировать процесс реализации алгоритма при помощи псевдокода и диаграмм - [[:Категория:Diagrams]] - например, [[Binary search (diagram)]]
| |
| # использовать язык dgl и [[mermaid]] встраивать диаграммы алгоритмов в вики страницы см. [[Graphviz]]
| |
| | |
| http://digida.mgpu.ru/images/diagrams/Diagrams_37be5e92fa212a080558fc26c16ac9cb.png
| |
| | |
| {{#mermaid:graph TB | |
| A[1-6] --> |Да| B[1-3]
| |
| A --> |Нет| C[7-9]
| |
| | |
| B --> |Да| D[1-2]
| |
| B --> |Нет| E[4-5]
| |
| | |
| D --> |Да| 1
| |
| D --> |Нет| 3
| |
| 1 --> |Нет| 2
| |
| | |
| | |
| E --> |Нет| 6
| |
| E --> |Да| 4
| |
| 4 --> |Нет| 5
| |
| | |
| C -->|Да| F[7-8]
| |
| C -->|Нет| G[10-11]
| |
| | |
| F --> |Да| 7
| |
| 7 --> |Нет| 8
| |
| | |
| F --> |Нет| 9
| |
| | |
| G --> | Да | 10
| |
| 10 --> | Нет| 11
| |
| G --> | Нет| 12
| |
| | |
| }}
| |
| | |
| === Основные характеристики изучаемого алгоритмического языка ===
| |
| Типы данных. Константы. Переменные. Выражения. Арифметические и логические выражения.
| |
| | |
| [[Файл:Snap data types2.png|600px]]
| |
| | |
| Спрайты, данные, процедуры как объекты первого класса. Структуры данных. Импорт и экспорт данных.
| |
| Список случайных чисел из %сколько от %min до %max
| |
| [[Файл:Table sprite.png|800px]]
| |
| | |
| | |
| === Структуры данных ===
| |
| | |
| [[Файл:Collab dataset JSON.png]]
| |
| | |
| * [[Массив]]ы и связные [[список|списки]]
| |
| * Стеки и очереди
| |
| * Деревья (бинарные, сбалансированные, двоичные деревья поиска)
| |
| * Графы (ориентированные и неориентированные, поиск в глубину и ширину)
| |
| | |
| === Алгоритмы сортировки и поиска ===
| |
| Сравнение эффективности и вычислительной сложности алгоритмов
| |
| * [[Временная сложность алгоритма]]
| |
| | |
| === Рекурсия ===
| |
| * [[Рекурсия]]
| |
| * [[Фрактал]]
| |
| | |
| == Литература ==
| |
| === Основная литература ===
| |
| | |
| # [[Стили и методы программирования]],
| |
| # [[Computer Science with Snap! by Examples]],
| |
| # [[Initiation to Algorithmics with Scratch]]
| |
| | |
| === Дополнительная литература ===
| |
| https://snap.berkeley.edu/snap/help/SnapManual.pdf - Руководство по Snap!
| |
| | |
| == Критерии оценки по дисциплине (2022 - 2023) == | |
| | |
| {| {{prettytable}}
| |
| |-
| |
| !{{Hl2}}| Образовательный результат
| |
| !{{Hl2}}| Тема
| |
| !{{Hl2}}| Задание
| |
| !{{Hl2}}| Пример
| |
| |-
| |
| | Знает понятия мира алгоритмов и структур данных
| |
| | Введение. Основные понятия. Пространство для совместной деятельности
| |
| | Использовать различные типы данных внутри Semantic MediaWiki, включить внешние данные в состав статьи
| |
| | Категория понятий - [[:Category:Понятие]]
| |
| В категории статей о датасетах [[:Category:Dataset]]
| |
| |-
| |
| | Умеет сравнивать и объединять статьи о языках программирования
| |
| | История языков программирования и обучающих языков
| |
| | Редактировать, дополнять и объединять статьи о языках программирования
| |
| | [[:Category:Язык программирования]], [[Taxonomic_sandbox]]
| |
| |-
| |
| |
| |
| Умеет проектировать и программировать линейные и разветвляющиеся структуры алгоритмов, планировать процесс реализации алгоритма при помощи псевдокода и диаграмм - [[:Категория:Diagrams]], использовать язык dgl и [[mermaid]] встраивать диаграммы алгоритмов в вики страницы см. [[Graphviz]]
| |
| | Представление алгоритмов в виде диаграмм, [[псевдокод]]а, кода на различных языках программирования
| |
| | Создать диаграмму [[алгоритм]]а, представить реализацию алгоритма на языке высокого уровня
| |
| | Пример
| |
| * [[:Category:Diagrams]]
| |
| * [[Flowchart]]
| |
| |-
| |
| | Умеет создавать собственные блоки (команды и процедуры с входными параметрами) в среде [[Snap!]] (создавать [[Функция|функции]] с использованием различных типов данных))
| |
| | Основные характеристики изучаемого алгоритмического языка
| |
| | Процедуры видоизменения данных в среде [[Snap!]]
| |
| | Примеры видоизменения данных в [[Snap!]], [[Как получить список случайных значений|Получить список значений]]
| |
| |-
| |
| | оценивать и сравнивать эффективность алгоритмов, вычислительную сложность алгоритмов
| |
| | [[Алгоритм]]ы сортировки и поиска
| |
| | Сравнить эффективность выполнения процедур над данными
| |
| | Готовые [[датасет]]ы из категории [[:Category:Dataset]]. [[Сортировка вставками]], [[Быстрая сортировка]]
| |
| |-
| |
| | использовать рекурсию в командах и процедурах, использовать рекурсию при создании собственных функций
| |
| | Рекурсия
| |
| | Создать собственные команды и процедуры, в которых используется рекурсия
| |
| | [[Рекурсия]], [[Фрактал]]
| |
| |}
| |
| | |
| == Напоминание по работа в вики среде ==
| |
| ; [[Мастер-класс «Совместная работа со знаниями на поле цифровой дидактики»]]
| |
| | |
| | |
| ----
| |
|
| |
|
| [[Category:РУП]]
| | </center> |