ИВТ. Алгоритмы и структуры данных. Базовый поток 2026: различия между версиями

Материал из Public ATP Wiki
Перейти к навигации Перейти к поиску
 
(не показано 46 промежуточных версий этого же участника)
Строка 1: Строка 1:
{{Программа курса
== О курсе ==
| название = Структуры данных и алгоритмы
| семестр = 1 (Осенний)
| руководитель_курса = Дединский И.Р.
}}
 
== 1. О курсе ==
Дисциплина включает подробное освещение практики реализации структур данных и программ, решений практических задач, а также предполагает самостоятельное изучение студентами материала предмета через решение домашних практических задач.  
Дисциплина включает подробное освещение практики реализации структур данных и программ, решений практических задач, а также предполагает самостоятельное изучение студентами материала предмета через решение домашних практических задач.  
Большое внимание уделяется базовым принципам построения архитектуры ПО, практикам разработки.
Большое внимание уделяется базовым принципам построения архитектуры ПО, практикам разработки.


'''Пререквизиты:'''
'''Пререквизиты:'''
Для освоения курса необходимы базовые понимания о понятии алгоритма и работе компьютера.
Специальная предварительная подготовка для освоения дисциплины не требуется. Базовые представления об алгоритмах, принципах работы компьютера и организации выполнения программ формируются в течение первых двух недель обучения. В дальнейшем эти знания последовательно расширяются, закрепляются и контролируются в ходе лекционных и семинарских занятий.
 
== Программа курса ==
'''Форма контроля:''' дифференцированный зачёт


== 2. Программа курса ==
{| class="wikitable"
{| class="wikitable"
|-
|-
! Неделя !! Лекция/Семинар !! Д/З !! Контроль / событие !! Дедлайн
! Неделя !! Лекция !! Семинар !! Контроль / событие !! Дедлайн
|-
|-
|1–3
|1–2
|'''Основные понятия структур данных.'''
|Интуитивное понятие алгоритма, определение алгоритма.
<br>Концепция типа данных. Простейшие типы данных.
<br>Свойства алгоритмов. Виды алгоритмов.
<br>Простейшие стандартные типы данных.  
<br>Способы задания алгоритмов. Машины Тьюринга и Поста.
<br>Ограниченные типы (диапазоны). Массивы.  
<br>Нормальные алгорифмы Маркова.
<br>Записи. Записи с вариантами. Множества.  
|Решение задач на Машины Тьюринга и Поста.
<br>Представление массивов, записей и множеств.
<br>Нормальные алгорифмы Маркова.
<br>Последовательности (элементарные операции,
|тесты
<br>буферизация, стандартные ввод и вывод).
|10.09.2026
|-
|3–4
|Основные понятия структур данных.
|Основные понятия структур данных.
|
|
|
|
|-
|-
|4–6
|4–6
|'''Данные с динамической структурой.'''
|Данные с динамической структурой.
Линейные списки: основные операции, упорядоченные списки
|Данные с динамической структурой.
и перестройка списков. Стеки, очереди, деки, нелинейные
структуры данных, иерархические списки, мультисписки.
Реализация перечисленных структур данных. Стандартные
классы в ООП, поддерживающие динамические структуры.
|
|
|
|
|-
|-
|7–11
|7-9
|'''Алгоритмы поиска.''' Задачи поиска и кодирования
|Алгоритмы поиска.
(сжатия) данных. Кодовые деревья, оптимальные префиксные коды,
|Алгоритмы поиска.
исчерпывающий поиск. Линейный поиск. Поиск делением пополам
(двоичный поиск). Поиск в таблице. Прямой поиск строки. Поиск
в строке (алгоритмы Кнута, Мориса и Прата). Алгоритмы Боуэра-Мура.
Алгоритмы Рабина-Карпа.
|
|
|
|
|-
|-
|12–16
|10–12
|'''Быстрый доступ к данным.''' Хеширование данных.  
|Алгоритмы сортировки.  
Способы вычисления хеш-функций. Разрешение коллизий. Линейное,
|Алгоритмы сортировки.  
квадратичное опробование. Метод цепочек, двойное хеширование.  
|
Оценка качества хеш-функций. Инвертированные индексы. Битовые карты.
|
|-
|13-15
|Быстрый доступ к данным.
|Быстрый доступ к данным.
|
|
|
|
|}
|}


== 3. План домашних заданий ==
'''Подробное описание тем''' [https://docs.google.com/document/d/1UE-SXdCSe5NicJ2vd7YAKn4kIw424T1M/edit?usp=drive_link&ouid=111154455295475417649&rtpof=true&sd=true здесь]
 
'''Недели 1–3:''' Реализация простейших типов данных и статических структур (массивы, записи, множества). Буферизация ввода-вывода.
** ''Дедлайн: [указать дату]''
'''Недели 4–6:''' Реализация линейных динамических структур (списки, стеки, очереди, деки). Использование стандартных классов ООП.
** ''Дедлайн: [указать дату]''
'''Недели 7–11:''' Реализация алгоритмов поиска (включая КМП — алгоритм Кнута-Мориса-Прата, Бойера-Мура, Рабина-Карпа). Построение оптимального префиксного кода.
** ''Дедлайн: [указать дату]''
'''Недели 12–16:''' Реализация различных видов сортировок и хеширования. Исследование временной сложности.
** ''Дедлайн: [указать дату]''
 
'''Другие виды активности:'''
 
Устный опрос в начале занятия по теме прошлой лекции или в конце занятия по пройденной теме.
Лабораторные работы по профилированию производительности (построение графиков зависимости количества операций от размера входных данных).
Групповой проект по разработке программного модуля с использованием изученных архитектурных паттернов.
Участие в командном соревновании по спортивному программированию (внутрисеместровое).
Ведение технического дневника разработчика (лог принятых решений при реализации Д/З).


== 4. Коммуникация ==
В процессе обучения студенты выполняют 7 лабораторных работ в составе группы.  
<br>Совместная работа над заданиями способствует формированию навыков командного взаимодействия, распределения задач и ответственности, согласования отдельных этапов работы и совместной реализации программных проектов.
Лабораторные работы [https://drive.google.com/file/d/1-F1v0cuM90VCnPZcPgdZuw5NyAU_29Ct/edit здесь]


Чат курса (Telegram или другой мессенджер). Если создаете самостоятельно, присылайте ссылку после первого занятия в семестре. При необходимости помогу настроить.
== Коммуникация ==
Форум для технических вопросов (например, ветка в LMS или отдельный канал), где ответы публикуются публично для всей группы.
Еженедельные онлайн-консультации преподавателя (офлайн-часы).


== 5. Прогресс студентов ==
Чат курса (МАКС или другой мессенджер).


Таблица с оценками, доступная студентам. Если создается самостоятельно, присылайте ссылку после первого занятия в семестре.
== Прогресс студентов ==
Автоматический дашборд успеваемости в системе LMS (выполнение Д/З, накопленный балл).
Таблица с оценками, доступная студентам в Yandex таблице. Ссылка дается студентам на первом семинаре.


== 6. Критерии оценивания и формы контроля успеваемости ==
== Критерии оценивания и формы контроля успеваемости ==
Итоговая оценка складывается из следующих компонентов:


Накопленная оценка за домашние задания и практические задачи — 50%.
На каждом семинарском занятии студентам предлагается набор задач по изучаемой теме, которые необходимо решить в течение занятия.
Посещаемость и активность на семинарах (включая устные опросы) — 20% (бонусный компонент).
<br>Выполненные задания проверяются и оцениваются преподавателем.
Дифференцированный зачет (устная форма) — 30%.
<br>Задачи, которые студент не успел выполнить на семинаре, должны быть решены самостоятельно дома.  
<br>Эти решения предназначены для самостоятельной отработки материала и преподавателем не проверяются.
<br>На следующем семинарском занятии проводится мини-контрольная работа продолжительностью 20 минут.
<br>В неё включается одна из задач по материалу предыдущего оцениваемого семинара.  
<br>Таким образом, контрольная работа позволяет оценить не только работу студента непосредственно на занятии, но и степень самостоятельного освоения материала.


{{Важно|
'''Итоговая оценка за работу''' по соответствующей теме формируется на основании двух составляющих:
Домашние задания проверяются с участием преподавателя (требование кафедры). Если нужны ассистенты для проверки — дайте знать заранее.
<br>1. результатов выполнения задач на семинарских занятиях и
}}
<br>2. результатов мини-контрольных работ.


=== 6.1 Бонусы ===
Если изучение одной темы охватывает несколько семинаров, учитываются результаты работы студента на всех занятиях, относящихся к данной теме.
Рекомендуется учитывать посещаемость и активность (~20%). Дополнительные баллы могут начисляться за:
<br>В случае пропуска семинарского занятия по неуважительной причине возможность последующей отработки заданий и пересдачи оценки за данное занятие не предоставляется.
<br>При наличии уважительной причины порядок отработки пропущенного занятия согласовывается с преподавателем индивидуально.


досрочную сдачу работ;
'''Формирование итоговой оценки'''
помощь одногруппникам в чате курса;
выявление ошибок в методических материалах;
участие во внешних хакатонах по профилю курса.


=== 6.2 Дедлайны и штрафы ===
Итоговая оценка по дисциплине формируется на основании результатов работы студента в течение семестра и включает следующие составляющие:
Если используется система штрафов — важно её прописать. Пример стандартной политики:
*СЗ — семинарские занятия — средняя оценка за работу на семинарах с учётом результатов мини-контрольных работ. Вес в итоговой оценке — 30 % (коэффициент 0,3).
*КР — контрольные работы — средняя оценка за две контрольные работы, проводимые в течение семестра. Вес в итоговой оценке — 40 % (коэффициент 0,4).
*Т — тестирование — средняя оценка за тесты, проводимые на отдельных семинарских занятиях. Вес в итоговой оценке — 10 % (коэффициент 0,1).
*ЛР — лабораторные работы — средняя оценка за выполнение лабораторных работ в течение семестра. Вес в итоговой оценке — 20 % (коэффициент 0,2).


Задержка до 24 часов: штраф -10% от балла за работу.
'''Итоговая оценка рассчитывается по формуле:'''
Задержка от 24 до 72 часов: штраф -30% от балла за работу.
Итоговая оценка = 0,3 × СЗ + 0,4 × КР + 0,1 × Т + 0,2 × ЛР
Более 72 часов без уважительной причины: работа не принимается (0 баллов).
<br>Таким образом, при формировании итоговой оценки учитываются как результаты текущей работы студента на семинарских занятиях, так и результаты контрольных работ, тестирования и выполнения лабораторных работ.
Правило «жизни»: одна работа может быть сдана без штрафа позже срока при условии предварительного уведомления.


== 7. Команда курса ==
С целью контроля освоения обучающимися учебного материала проводится устный опрос в начале занятия по теме прошлой лекции или в конце занятия по пройденной теме.
Дифференцированный зачет проводятся в устной форме. Во время проведения обучающиеся могут пользоваться программой дисциплины.


Руководитель курса: Дединский И.Р.
== Команда курса ==
Преподаватели: ''[ФИО будут добавлены]''
Ассистенты: ''[будут назначены при необходимости]''


== 8. Материалы курса ==
'''Руководитель и лектор курса:''' Дивари Ирина Николаевна


Папка с материалами: ''[ссылка]''.
'''Ассистент:''' Карецкий Владислав Олегович
Если вы не готовы делиться в открытый доступ, то материалы будут закрыты и доступны только дирекции и кафедре.


== Перечень типовых вопросов для промежуточной аттестации ==
= Материалы курса =
Материалы – слайды лекций и задачи семинарских занятий предоставляются студентам перед каждым семинаром и располагаются на платформе LMS.


Моделирование абстрактных типов данных (АТД) для различных реализаций (табличное, списковое, комбинированное и т.д.).
'''Перечень типовых вопросов для промежуточной аттестации:'''
Поиск информации в различных структурах данных с использованием классических алгоритмов поиска в текстовой информации.
#Моделирование абстрактных типов данных (АТД) для различных реализаций (табличное, списковое, комбинированное и т.д.).
Исследование эффективности алгоритмов сортировок для различных структур и размерностей данных.
#Поиск информации в различных структурах данных с использованием классических алгоритмов поиска в текстовой информации.
Реализация структур данных типа дерево и типовые алгоритмы их обработки.
#Исследование эффективности алгоритмов сортировок для различных структур и размерностей данных.
Реализация функций расстановки (хеширование) и различных методов разрешения коллизий.
#Реализация структур данных типа дерево и типовые алгоритмы их обработки.
Реализовать алгоритмы поиска: КМП – алгоритм.
#Реализация функций расстановки (хеширование) и различных методов разрешения коллизий.
Реализация алгоритма Боуэра-Мура.
#Реализовать алгоритмы поиска: КМП – алгоритм.
Алгоритм Рабина-Карпа.
#Реализация алгоритма Боуэра-Мура.
Построение графика зависимости количества операций сравнения от количества символов в массиве.
#Алгоритм Рабина-Карпа.
Определение временной сложности алгоритма и сравнение с экспериментальными исследованиями.
#Построение графика зависимости количества операций сравнения от количества символов в массиве.
#Определение временной сложности алгоритма и сравнение с экспериментальными исследованиями.

Текущая версия от 09:08, 21 августа 2026

О курсе

Дисциплина включает подробное освещение практики реализации структур данных и программ, решений практических задач, а также предполагает самостоятельное изучение студентами материала предмета через решение домашних практических задач. Большое внимание уделяется базовым принципам построения архитектуры ПО, практикам разработки.

Пререквизиты: Специальная предварительная подготовка для освоения дисциплины не требуется. Базовые представления об алгоритмах, принципах работы компьютера и организации выполнения программ формируются в течение первых двух недель обучения. В дальнейшем эти знания последовательно расширяются, закрепляются и контролируются в ходе лекционных и семинарских занятий.

Программа курса

Форма контроля: дифференцированный зачёт

Неделя Лекция Семинар Контроль / событие Дедлайн
1–2 Интуитивное понятие алгоритма, определение алгоритма.


Свойства алгоритмов. Виды алгоритмов.
Способы задания алгоритмов. Машины Тьюринга и Поста.
Нормальные алгорифмы Маркова.

Решение задач на Машины Тьюринга и Поста.


Нормальные алгорифмы Маркова.

тесты 10.09.2026
3–4 Основные понятия структур данных. Основные понятия структур данных.
4–6 Данные с динамической структурой. Данные с динамической структурой.
7-9 Алгоритмы поиска. Алгоритмы поиска.
10–12 Алгоритмы сортировки. Алгоритмы сортировки.
13-15 Быстрый доступ к данным. Быстрый доступ к данным.

Подробное описание тем здесь

В процессе обучения студенты выполняют 7 лабораторных работ в составе группы.
Совместная работа над заданиями способствует формированию навыков командного взаимодействия, распределения задач и ответственности, согласования отдельных этапов работы и совместной реализации программных проектов. Лабораторные работы здесь

Коммуникация

Чат курса (МАКС или другой мессенджер).

Прогресс студентов

Таблица с оценками, доступная студентам в Yandex таблице. Ссылка дается студентам на первом семинаре.

Критерии оценивания и формы контроля успеваемости

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

Итоговая оценка за работу по соответствующей теме формируется на основании двух составляющих:
1. результатов выполнения задач на семинарских занятиях и
2. результатов мини-контрольных работ.

Если изучение одной темы охватывает несколько семинаров, учитываются результаты работы студента на всех занятиях, относящихся к данной теме.
В случае пропуска семинарского занятия по неуважительной причине возможность последующей отработки заданий и пересдачи оценки за данное занятие не предоставляется.
При наличии уважительной причины порядок отработки пропущенного занятия согласовывается с преподавателем индивидуально.

Формирование итоговой оценки

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

  • СЗ — семинарские занятия — средняя оценка за работу на семинарах с учётом результатов мини-контрольных работ. Вес в итоговой оценке — 30 % (коэффициент 0,3).
  • КР — контрольные работы — средняя оценка за две контрольные работы, проводимые в течение семестра. Вес в итоговой оценке — 40 % (коэффициент 0,4).
  • Т — тестирование — средняя оценка за тесты, проводимые на отдельных семинарских занятиях. Вес в итоговой оценке — 10 % (коэффициент 0,1).
  • ЛР — лабораторные работы — средняя оценка за выполнение лабораторных работ в течение семестра. Вес в итоговой оценке — 20 % (коэффициент 0,2).

Итоговая оценка рассчитывается по формуле: Итоговая оценка = 0,3 × СЗ + 0,4 × КР + 0,1 × Т + 0,2 × ЛР
Таким образом, при формировании итоговой оценки учитываются как результаты текущей работы студента на семинарских занятиях, так и результаты контрольных работ, тестирования и выполнения лабораторных работ.

С целью контроля освоения обучающимися учебного материала проводится устный опрос в начале занятия по теме прошлой лекции или в конце занятия по пройденной теме. Дифференцированный зачет проводятся в устной форме. Во время проведения обучающиеся могут пользоваться программой дисциплины.

Команда курса

Руководитель и лектор курса: Дивари Ирина Николаевна

Ассистент: Карецкий Владислав Олегович

Материалы курса

Материалы – слайды лекций и задачи семинарских занятий предоставляются студентам перед каждым семинаром и располагаются на платформе LMS.

Перечень типовых вопросов для промежуточной аттестации:

  1. Моделирование абстрактных типов данных (АТД) для различных реализаций (табличное, списковое, комбинированное и т.д.).
  2. Поиск информации в различных структурах данных с использованием классических алгоритмов поиска в текстовой информации.
  3. Исследование эффективности алгоритмов сортировок для различных структур и размерностей данных.
  4. Реализация структур данных типа дерево и типовые алгоритмы их обработки.
  5. Реализация функций расстановки (хеширование) и различных методов разрешения коллизий.
  6. Реализовать алгоритмы поиска: КМП – алгоритм.
  7. Реализация алгоритма Боуэра-Мура.
  8. Алгоритм Рабина-Карпа.
  9. Построение графика зависимости количества операций сравнения от количества символов в массиве.
  10. Определение временной сложности алгоритма и сравнение с экспериментальными исследованиями.