Алгоритмы и структуры данных (syllabus): различия между версиями

Материал из Поле цифровой дидактики
Строка 1: Строка 1:
{{Curriculum
uU{{Curriculum
|Learning_outcomes=Цель
|Learning_outcomes=Цель
* теоретические знания и практический опыт в области основ алгоритмизации задач, классификации языков программирования, типов данных, структур данных, взаимосвязь алгоритмов и структур данных, особенностей реализации алгоритмов и типов данных в языках блочного программирования Scratch, Snap!, GP
* теоретические знания и практический опыт в области основ алгоритмизации задач, классификации языков программирования, типов данных, структур данных, взаимосвязь алгоритмов и структур данных, особенностей реализации алгоритмов и типов данных в языках блочного программирования Scratch, Snap!, GP
Строка 14: Строка 14:
* проектировать и программировать линейные и разветвляющиеся структуры алгоритмов;
* проектировать и программировать линейные и разветвляющиеся структуры алгоритмов;
* планировать процесс реализации алгоритма при помощи псевдокода и диаграмм  
* планировать процесс реализации алгоритма при помощи псевдокода и диаграмм  
* использовать язык dgl и mermaid встраивать диаграммы алгоритмов в вики страницы  
* использовать язык '''dgl''' , mermaid, '''PlantUML''' встраивать диаграммы алгоритмов в вики страницы  
* представлять алгоритмы на страницах вики в виде диаграмм, псевдокода, кода на различных языках программирования
* представлять алгоритмы на страницах вики в виде диаграмм, псевдокода, кода на различных языках программирования
* создавать собственные блоки (команды и процедуры с входными параметрами) в среде Snap! (создавать функции с использованием различных типов данных))
* создавать собственные блоки (команды и процедуры с входными параметрами) в среде Snap! (создавать функции с использованием различных типов данных))
Строка 78: Строка 78:
# проектировать и программировать  линейные и  разветвляющиеся структуры алгоритмов;
# проектировать и программировать  линейные и  разветвляющиеся структуры алгоритмов;
# планировать процесс реализации алгоритма при помощи псевдокода и диаграмм - [[:Категория:Diagrams]]
# планировать процесс реализации алгоритма при помощи псевдокода и диаграмм - [[:Категория:Diagrams]]
# использовать язык dgl и [[mermaid]] встраивать диаграммы алгоритмов в вики страницы см. Graphviz + [[:Категория:Diagrams]] -  
# использовать язык [[graphviz]], [[mermaid]], [[PlantUML]] встраивать диаграммы алгоритмов в вики страницы см. Graphviz + [[:Категория:Diagrams]] -  
# представлять алгоритмы на страницах вики в виде диаграмм, псевдокода, кода на различных языках программирования
# представлять алгоритмы на страницах вики в виде диаграмм, псевдокода, кода на различных языках программирования
# создавать собственные блоки (команды и процедуры с входными параметрами) в среде Snap! (создавать функции с использованием различных типов данных))
# создавать собственные блоки (команды и процедуры с входными параметрами) в среде Snap! (создавать функции с использованием различных типов данных))

Версия 15:49, 9 ноября 2023

uU


Планируемые результаты обучения (Знать, Уметь, Владеть) Цель
  • теоретические знания и практический опыт в области основ алгоритмизации задач, классификации языков программирования, типов данных, структур данных, взаимосвязь алгоритмов и структур данных, особенностей реализации алгоритмов и типов данных в языках блочного программирования Scratch, Snap!, GP
Знать
Основные понятия, связанные с миром алгоритмов и структур данных
основы алгоритмизации задач, структуры данных;
типы данных, структуры данных;
методы и алгоритмы поиска и сортировки данных;
Уметь
  • обращаться к внешним и внутренним данным из среды Semantic MediaWiki, уметь использовать различные типы данных внутри Semantic MediaWiki
  • обмениваться проектами и блоками программ в Snap!
  • сравнивать и объединять статьи о языках программирования
  • импортировать и экспортировать данные в среду визуального программирования Snap!
  • проектировать и программировать линейные и разветвляющиеся структуры алгоритмов;
  • планировать процесс реализации алгоритма при помощи псевдокода и диаграмм
  • использовать язык dgl , mermaid, PlantUML встраивать диаграммы алгоритмов в вики страницы
  • представлять алгоритмы на страницах вики в виде диаграмм, псевдокода, кода на различных языках программирования
  • создавать собственные блоки (команды и процедуры с входными параметрами) в среде Snap! (создавать функции с использованием различных типов данных))
  • оценивать и сравнивать эффективность алгоритмов, вычислительную сложность алгоритмов
  • использовать рекурсию в командах и процедурах, использовать рекурсию при создании собственных функций
  • использовать объекты первого класса и лямбда исчисления.
Содержание разделов курса Содержание
1. Введение в алгоритмы и структуры данных
  • Определение алгоритма и структуры данных
2. Основные алгоритмы
  • Линейный поиск
  • Бинарный поиск
  • Сортировка (вставками, выбором, слиянием, быстрая сортировка)
  • Рекурсия и рекурсивные алгоритмы
3. Структуры данных
  • Массивы и связные списки
  • Стеки и очереди
  • Деревья (бинарные, сбалансированные, двоичные деревья поиска)
  • Графы (ориентированные и неориентированные, поиск в глубину и ширину)
Видео запись
Среды и средства, которые поддерживают учебный курс Snap!, R, RStudio, Lua, Python
Книги, на которых основывается учебный курс Стили и методы программирования, Computer Science with Snap! by Examples, Initiation to Algorithmics with Scratch
Учебная группа, работающая с курсом Алгоритмы и структуры данных данных в в 2023 году - ПБД221м
  • Учебная группа, работающая с курсом Алгоритмы и структуры данных данных в в 2022 году - ПБД211М
Особенность курса - Active Essay смотрим и тестируем на поле
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
И смотрим на то, как они выполняются
или в Snap!

Цель, результаты освоения дисциплины

В результате изучения данной дисциплины студенты будут иметь представление о современных алгоритмических языках, о способах записи алгоритмов и конструирования программ, основах объектного подхода в программировании

Цель
теоретические знания и практический опыт в области основ алгоритмизации задач, классификации языков программирования, типов данных, структур данных, взаимосвязь алгоритмов и структур данных, особенностей реализации алгоритмов и типов данных в языках блочного программирования Scratch, Snap!, GP
Знать
  1. Основные понятия, связанные с миром алгоритмов и структур данных См. Категория:Понятие
  2. основы алгоритмизации задач, структуры данных;
  3. типы данных, структуры данных;
  4. методы и алгоритмы поиска и сортировки данных;
Уметь
  1. обращаться к внешним и внутренним данным из среды Semantic MediaWiki, уметь использовать различные типы данных внутри Semantic MediaWiki см. Категория:Dataset
  2. обмениваться проектами и блоками программ в Snap!
  3. сравнивать и объединять статьи о языках программирования Taxonomic_sandbox
  4. импортировать и экспортировать данные в среду визуального программирования Snap!
  5. проектировать и программировать линейные и разветвляющиеся структуры алгоритмов;
  6. планировать процесс реализации алгоритма при помощи псевдокода и диаграмм - Категория:Diagrams
  7. использовать язык graphviz, mermaid, PlantUML встраивать диаграммы алгоритмов в вики страницы см. Graphviz + Категория:Diagrams -
  8. представлять алгоритмы на страницах вики в виде диаграмм, псевдокода, кода на различных языках программирования
  9. создавать собственные блоки (команды и процедуры с входными параметрами) в среде Snap! (создавать функции с использованием различных типов данных))
  10. оценивать и сравнивать эффективность алгоритмов, вычислительную сложность алгоритмов
  11. использовать рекурсию в командах и процедурах, использовать рекурсию при создании собственных функций
  12. использовать объекты первого класса и лямбда исчисления

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

Введение. Основные понятия. Пространство для совместной деятельности

Основы алгоритмизации задач. Semantic MediaWiki как поле совместной деятельности. Типы данных внутри Semantic MediaWiki. Обращение к внешним данным.

История языков программирования и обучающих языков

Современные алгоритмические языки. Вычислительное мышление и вычислительное участие.

Представление алгоритмов в виде диаграмм, псевдокода, кода на различных языках программирования

  1. проектировать и программировать линейные и разветвляющиеся структуры алгоритмов;
  2. планировать процесс реализации алгоритма при помощи псевдокода и диаграмм - Категория:Diagrams - например, Binary search (diagram)
  3. использовать язык dgl и mermaid встраивать диаграммы алгоритмов в вики страницы см. Graphviz

Diagrams_37be5e92fa212a080558fc26c16ac9cb.png

Основные характеристики изучаемого алгоритмического языка

Типы данных. Константы. Переменные. Выражения. Арифметические и логические выражения.

Snap data types2.png

Спрайты, данные, процедуры как объекты первого класса. Структуры данных. Импорт и экспорт данных. Список случайных чисел из %сколько от %min до %max Table sprite.png


Структуры данных

Collab dataset JSON.png

  • Массивы и связные списки
  • Стеки и очереди
  • Деревья (бинарные, сбалансированные, двоичные деревья поиска)
  • Графы (ориентированные и неориентированные, поиск в глубину и ширину)

Алгоритмы сортировки и поиска

Сравнение эффективности и вычислительной сложности алгоритмов

Рекурсия

Tree recursion.png


Литература

Основная литература

  1. Стили и методы программирования,
  2. Computer Science with Snap! by Examples,
  3. Initiation to Algorithmics with Scratch

Дополнительная литература

https://snap.berkeley.edu/snap/help/SnapManual.pdf - Руководство по Snap!

Критерии оценки по дисциплине (2022 - 2023)

Образовательный результат Тема Задание Пример
Знает понятия мира алгоритмов и структур данных Введение. Основные понятия. Пространство для совместной деятельности Использовать различные типы данных внутри Semantic MediaWiki, включить внешние данные в состав статьи Категория понятий - Category:Понятие

В категории статей о датасетах Category:Dataset

Умеет сравнивать и объединять статьи о языках программирования История языков программирования и обучающих языков Редактировать, дополнять и объединять статьи о языках программирования Category:Язык программирования, Taxonomic_sandbox

Умеет проектировать и программировать линейные и разветвляющиеся структуры алгоритмов, планировать процесс реализации алгоритма при помощи псевдокода и диаграмм - Категория:Diagrams, использовать язык dgl и mermaid встраивать диаграммы алгоритмов в вики страницы см. Graphviz

Представление алгоритмов в виде диаграмм, псевдокода, кода на различных языках программирования Создать диаграмму алгоритма, представить реализацию алгоритма на языке высокого уровня Пример
Умеет создавать собственные блоки (команды и процедуры с входными параметрами) в среде Snap! (создавать функции с использованием различных типов данных)) Основные характеристики изучаемого алгоритмического языка Процедуры видоизменения данных в среде Snap! Примеры видоизменения данных в Snap!, Получить список значений
оценивать и сравнивать эффективность алгоритмов, вычислительную сложность алгоритмов Алгоритмы сортировки и поиска Сравнить эффективность выполнения процедур над данными Готовые датасеты из категории Category:Dataset. Сортировка вставками, Быстрая сортировка
использовать рекурсию в командах и процедурах, использовать рекурсию при создании собственных функций Рекурсия Создать собственные команды и процедуры, в которых используется рекурсия Рекурсия, Фрактал

Напоминание по работа в вики среде

Мастер-класс «Совместная работа со знаниями на поле цифровой дидактики»
 DescriptionEnvironment
How to make a TimeLineСоздать ленту времени, используя возможности Semantic MediaWikiSemantic MediaWiki
Как включить Snap! проект в состав вики страницыИспользуем заклинание - snap project="Название" user="Имя_Автора" - примеры в тексте статьиSnap!
Semantic MediaWiki
Как вставлять химические формулы в тексты вики статейВ вики есть расширение https://www.mediawiki.org/wiki/Extension:SimpleMathJax и оно позволяет встраивать в страницы математические и химические формулы. Нужно использовать тег chemSemantic MediaWiki
Как встроить статью в другую статью?Я хочу встроить другую статью в свою.
  • Использовать запрос ask и формат embedded
Semantic MediaWiki
Как делать таблицы в викиТаблицы являются удобной формой для отображения информации. Но таблицы выполняют лишь тогда свою роль, когда между строчками и столбцами имеется смысловая связь, то есть информацию в них можно рассортировать неким образом, например, по дате или алфавиту. С другой стороны, таблицы сложнее обычного текста. Так что применять их имеет смысл лишь там, где они действительно улучшают восприятие материала, поэтому предварительно обдумывайте: не лучше ли использовать обычный список.Semantic MediaWiki
Как добавить видео на страницу викиНа страницу вики можно вставить видео из внешнего источника при помощи виджета. В настоящее время только видео с YouTube.Semantic MediaWiki
Как добавить диаграмму связей на вики страницуВ вики есть несколько текстовых редакторов диаграмм Mermaid, GraphViz, PlantUML и каждый из редакторов позволяет из текстовых команд получить граф. Базовый синтаксис общий A -> BSemantic MediaWiki
Как добавить изображение на вики страницуМожно добавить изображение загрузив файл в формате png или jpg, или добавив изображение с внешнего ресурса. При загрузке изображений с внешних ресурсов можно пользоваться только разрешёнными источниками. Например, wikimedia.org, www.mgpu.ru, samsmu.ruSemantic MediaWiki
Как добавить листинг программы на вики страницуДля многих языков можно использовать Extension:SyntaxHighlight - Extension:SyntaxHighlight syntaxhighlight - в статье показаны несколько примеров для языков Python, R, C++, Lisp, Prolog, Javascript, JuliaSemantic MediaWiki
Как добавлять на вики страницу элементы интерфейсаКак добавлять на вики страницу элементы интерфейса - поля ввода, кнопки, возможность выбора и т.п. Для этого используется расширение Page FormsSemantic MediaWiki
Как использовать песочницу MediaWiki APIСовременные MediaWiki площадки поддерживают не только собственный API, но и инструмент для формирования запросов к нему. В этой статье рассказываются приёмы формирования таких запросов. Обратите внимание, что правила общие для всех площадок - Служебная:ApiSandboxSemantic MediaWiki
Как обратиться к внешним данным из викиИспользуем расширение External Data и получаем данные на вики странице - в виде списка или таблицыSemantic MediaWiki
External Data Extension
Как пользоваться волшебными словами внутри викиКак получить доступ к данным о страницах, правках, числе участников и т.п. внутри вики?Semantic MediaWiki
Как пользоваться различными пространствами викиКак не потеряться в богатстве вики возможностей, попробовать различные пространства и ничего не сломатьSemantic MediaWiki
Как провести сравнение источников на вики страницеЕсли мы хотим представить рядом и сравнить разные источники компетенций на вики страницеSemantic MediaWiki
Как собрать информацию о группе СЦТО-231мЭто учебный проект сбора информации об участниках из категории Категория:СЦТО-231мSemantic MediaWiki
Как создать и добавить свойство в SMW викиНам нужно создать свойство в вики и затем добавить это свойство в статьи определённой категории. Нам нужны:
Свойство, Шаблон, Форма
Semantic MediaWiki
Как строить графики на вики страницахВ Semantic MediaWiki есть возможность представлять информацию о количестве статей с различными свойствами при помощи графиков. Используются возможности расширения Данная страница содержит примеры графического вывода информацииSemantic MediaWiki
Как узнать в вики времяМы хотим, чтобы на странице было бы время - день и числоSemantic MediaWiki
Как узнать распределение всех статей по свойствуМножество статей со свойством Field_of_knowledge - как посмотреть распределение статей по этому свойству?Semantic MediaWiki
Обратиться к объектам по их свойствамЛюбая команда к агентам или объектам предполагает, что вы можете к ним обратиться, назвать их свойства и передать им указание что-то сделать. Например, всем страницам SMW из класса Язык программирования и свойством Ages::<10 показаться в формате нумерованного списка. Или всем черепах, с координатами по оси X > 0 и жёлтого цвета приказываю умереть
  • 120px-Netlogoweb_ask.png
NetLogo
Snap!
Semantic MediaWiki
Представить данные датасета в виде графаЕсть датасет и мы хотим превратить его в таблицу и граф, чтобы посмотреть на взаимосвязи узлов.NetLogo
Snap!
Semantic MediaWiki
VOSviewer
RStudio
Notepad++
Представить объекты на географической карте в викиУ нас есть объекты, для который есть их географические координаты. Мы хотим представить их на карте внутри вики.Semantic MediaWiki

см. Проектирование и разработка приложений