Участник:KuptsovaID/Алгоритмы и структуры данных: различия между версиями
Строка 2: | Строка 2: | ||
{{#ask:[[Как сделать сортировку в массиве?]] | format=embedded | embedonly=yes}} | {{#ask:[[Как сделать сортировку в массиве?]] | format=embedded | embedonly=yes}} | ||
анн{{Curriculum | |||
|Learning_outcomes=Цель | |||
* теоретические знания и практический опыт в области основ алгоритмизации задач, классификации языков программирования, типов данных, структур данных, взаимосвязь алгоритмов и структур данных, особенностей реализации алгоритмов и типов данных в языках блочного программирования Scratch, Snap!, GP | |||
; Знать | |||
: Основные понятия, связанные с миром алгоритмов и структур данных | |||
: основы алгоритмизации задач, структуры данных; | |||
: типы данных, структуры данных; | |||
: методы и алгоритмы поиска и сортировки данных; | |||
; Уметь | |||
* обращаться к внешним и внутренним дым из среды Semantic MediaWiki, уметь использовать различные типы данных внутри Semantic MediaWiki | |||
* обмениваться проектами и блоками программ в 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:РУП]] |
Версия 13:40, 4 декабря 2023
Это для курса "Алгоритмы и структуры данных"
Описание | Отсортировать массив в порядке возрастания |
---|---|
Область знаний | Информатика, Образование |
Область использования (ISTE) | Computational Thinker |
Возрастная категория | 14
|
Поясняющее видео | |
Близкие рецепту понятия | |
Среды и средства для приготовления рецепта: | Pascal, Python, Python IDLE, Snap! |
var a:array [1..6] of integer; i,j, min,minI: integer;
begin
for i:=1 to 6 do
begin
write ('a[',i,']=');
readln(a[i]);
end;
for i:=1 to 6 do
begin
min:=a[i];
minI:=i;
for j:=i+1 to 6 do
if a[j]<min then begin min:=a[j]; minI:=j; end;
a[minI]:=a[i];
a[i]:=min;
end;
for i:=1 to 6 do
write (a[i],' ');
end.
анн
Планируемые результаты обучения (Знать, Уметь, Владеть) | Цель
|
---|---|
Содержание разделов курса | Содержание
|
Видео запись | |
Среды и средства, которые поддерживают учебный курс | 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
- Знать
- Основные понятия, связанные с миром алгоритмов и структур данных См. Категория:Понятие
- основы алгоритмизации задач, структуры данных;
- типы данных, структуры данных;
- методы и алгоритмы поиска и сортировки данных;
- Уметь
- обращаться к внешним и внутренним данным из среды 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. Сортировка вставками, Быстрая сортировка |
использовать рекурсию в командах и процедурах, использовать рекурсию при создании собственных функций | Рекурсия | Создать собственные команды и процедуры, в которых используется рекурсия | Рекурсия, Фрактал |
Напоминание по работа в вики среде