Алгоритмы и структуры данных (syllabus): различия между версиями
Patarakin (обсуждение | вклад) |
Patarakin (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
{{Curriculum | uU{{Curriculum | ||
|Learning_outcomes=Цель | |Learning_outcomes=Цель | ||
* теоретические знания и практический опыт в области основ алгоритмизации задач, классификации языков программирования, типов данных, структур данных, взаимосвязь алгоритмов и структур данных, особенностей реализации алгоритмов и типов данных в языках блочного программирования Scratch, Snap!, GP | * теоретические знания и практический опыт в области основ алгоритмизации задач, классификации языков программирования, типов данных, структур данных, взаимосвязь алгоритмов и структур данных, особенностей реализации алгоритмов и типов данных в языках блочного программирования Scratch, Snap!, GP | ||
Строка 14: | Строка 14: | ||
* проектировать и программировать линейные и разветвляющиеся структуры алгоритмов; | * проектировать и программировать линейные и разветвляющиеся структуры алгоритмов; | ||
* планировать процесс реализации алгоритма при помощи псевдокода и диаграмм | * планировать процесс реализации алгоритма при помощи псевдокода и диаграмм | ||
* использовать язык dgl | * использовать язык '''dgl''' , mermaid, '''PlantUML''' встраивать диаграммы алгоритмов в вики страницы | ||
* представлять алгоритмы на страницах вики в виде диаграмм, псевдокода, кода на различных языках программирования | * представлять алгоритмы на страницах вики в виде диаграмм, псевдокода, кода на различных языках программирования | ||
* создавать собственные блоки (команды и процедуры с входными параметрами) в среде Snap! (создавать функции с использованием различных типов данных)) | * создавать собственные блоки (команды и процедуры с входными параметрами) в среде Snap! (создавать функции с использованием различных типов данных)) | ||
Строка 78: | Строка 78: | ||
# проектировать и программировать линейные и разветвляющиеся структуры алгоритмов; | # проектировать и программировать линейные и разветвляющиеся структуры алгоритмов; | ||
# планировать процесс реализации алгоритма при помощи псевдокода и диаграмм - [[:Категория:Diagrams]] | # планировать процесс реализации алгоритма при помощи псевдокода и диаграмм - [[:Категория:Diagrams]] | ||
# использовать язык | # использовать язык [[graphviz]], [[mermaid]], [[PlantUML]] встраивать диаграммы алгоритмов в вики страницы см. Graphviz + [[:Категория:Diagrams]] - | ||
# представлять алгоритмы на страницах вики в виде диаграмм, псевдокода, кода на различных языках программирования | # представлять алгоритмы на страницах вики в виде диаграмм, псевдокода, кода на различных языках программирования | ||
# создавать собственные блоки (команды и процедуры с входными параметрами) в среде Snap! (создавать функции с использованием различных типов данных)) | # создавать собственные блоки (команды и процедуры с входными параметрами) в среде Snap! (создавать функции с использованием различных типов данных)) |
Версия 15:49, 9 ноября 2023
uU
Планируемые результаты обучения (Знать, Уметь, Владеть) | Цель
|
---|---|
Содержание разделов курса | Содержание
|
Видео запись | |
Среды и средства, которые поддерживают учебный курс | Snap!, R, RStudio, Lua, Python |
Книги, на которых основывается учебный курс | Стили и методы программирования, Computer Science with Snap! by Examples, Initiation to Algorithmics with Scratch |
- Учебная группа, работающая с курсом Алгоритмы и структуры данных данных в в 2023 году - ПБД221м
- Учебная группа, работающая с курсом Алгоритмы и структуры данных данных в в 2022 году - ПБД211М
- Особенность курса - Active Essay смотрим и тестируем на поле
- И смотрим на то, как они выполняются
- или в Snap!
Цель, результаты освоения дисциплины
В результате изучения данной дисциплины студенты будут иметь представление о современных алгоритмических языках, о способах записи алгоритмов и конструирования программ, основах объектного подхода в программировании
- Цель
- теоретические знания и практический опыт в области основ алгоритмизации задач, классификации языков программирования, типов данных, структур данных, взаимосвязь алгоритмов и структур данных, особенностей реализации алгоритмов и типов данных в языках блочного программирования 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
Основные характеристики изучаемого алгоритмического языка
Типы данных. Константы. Переменные. Выражения. Арифметические и логические выражения.
Спрайты, данные, процедуры как объекты первого класса. Структуры данных. Импорт и экспорт данных.
Список случайных чисел из %сколько от %min до %max
Структуры данных
- Массивы и связные списки
- Стеки и очереди
- Деревья (бинарные, сбалансированные, двоичные деревья поиска)
- Графы (ориентированные и неориентированные, поиск в глубину и ширину)
Алгоритмы сортировки и поиска
Сравнение эффективности и вычислительной сложности алгоритмов
Рекурсия
Литература
Основная литература
- Стили и методы программирования,
- Computer Science with Snap! by Examples,
- 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. Сортировка вставками, Быстрая сортировка |
использовать рекурсию в командах и процедурах, использовать рекурсию при создании собственных функций | Рекурсия | Создать собственные команды и процедуры, в которых используется рекурсия | Рекурсия, Фрактал |
Напоминание по работа в вики среде
Description | Environment | |
---|---|---|
How to make a TimeLine | Создать ленту времени, используя возможности Semantic MediaWiki | Semantic MediaWiki |
Как включить Snap! проект в состав вики страницы | Используем заклинание - snap project="Название" user="Имя_Автора" - примеры в тексте статьи | Snap! Semantic MediaWiki |
Как вставлять химические формулы в тексты вики статей | В вики есть расширение https://www.mediawiki.org/wiki/Extension:SimpleMathJax и оно позволяет встраивать в страницы математические и химические формулы. Нужно использовать тег chem | Semantic MediaWiki |
Как встроить статью в другую статью? | Я хочу встроить другую статью в свою.
| Semantic MediaWiki |
Как делать таблицы в вики | Таблицы являются удобной формой для отображения информации. Но таблицы выполняют лишь тогда свою роль, когда между строчками и столбцами имеется смысловая связь, то есть информацию в них можно рассортировать неким образом, например, по дате или алфавиту. С другой стороны, таблицы сложнее обычного текста. Так что применять их имеет смысл лишь там, где они действительно улучшают восприятие материала, поэтому предварительно обдумывайте: не лучше ли использовать обычный список. | Semantic MediaWiki |
Как добавить видео на страницу вики | На страницу вики можно вставить видео из внешнего источника при помощи виджета. В настоящее время только видео с YouTube. | Semantic MediaWiki |
Как добавить диаграмму связей на вики страницу | В вики есть несколько текстовых редакторов диаграмм Mermaid, GraphViz, PlantUML и каждый из редакторов позволяет из текстовых команд получить граф. Базовый синтаксис общий A -> B | Semantic MediaWiki |
Как добавить изображение на вики страницу | Можно добавить изображение загрузив файл в формате png или jpg, или добавив изображение с внешнего ресурса. При загрузке изображений с внешних ресурсов можно пользоваться только разрешёнными источниками. Например, wikimedia.org, www.mgpu.ru, samsmu.ru | Semantic MediaWiki |
Как добавить листинг программы на вики страницу | Для многих языков можно использовать Extension:SyntaxHighlight - Extension:SyntaxHighlight syntaxhighlight - в статье показаны несколько примеров для языков Python, R, C++, Lisp, Prolog, Javascript, Julia | Semantic MediaWiki |
Как добавлять на вики страницу элементы интерфейса | Как добавлять на вики страницу элементы интерфейса - поля ввода, кнопки, возможность выбора и т.п. Для этого используется расширение Page Forms | Semantic MediaWiki |
Как использовать песочницу MediaWiki API | Современные MediaWiki площадки поддерживают не только собственный API, но и инструмент для формирования запросов к нему. В этой статье рассказываются приёмы формирования таких запросов. Обратите внимание, что правила общие для всех площадок - Служебная:ApiSandbox | Semantic MediaWiki |
Как написать курсовую работу по программированию | Студенты пишут курсовую работу, в рамках которой демонстрируют свою способность создавать и документировать программный продукт | StarLogo Nova Scratch Graphviz Snap! Semantic MediaWiki Lua PlantUML Roblox |
Как обратиться к внешним данным из вики | Используем расширение 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 и жёлтого цвета приказываю умереть
| NetLogo Snap! Semantic MediaWiki |
Представить данные датасета в виде графа | Есть датасет и мы хотим превратить его в таблицу и граф, чтобы посмотреть на взаимосвязи узлов. | NetLogo Snap! Semantic MediaWiki VOSviewer RStudio Notepad++ |
Представить объекты на географической карте в вики | У нас есть объекты, для который есть их географические координаты. Мы хотим представить их на карте внутри вики. | Semantic MediaWiki |