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

Материал из Public ATP Wiki
Перейти к навигации Перейти к поиску
Новая страница: «= Общие сведения = * Семестр: 3/5 (второй/третий курсы) * Формат: очный * Форма контроля: диффе…»
 
м Плейлист прошлого года
 
(не показаны 4 промежуточные версии этого же участника)
Строка 5: Строка 5:


== Важные ссылки ==
== Важные ссылки ==
[https://t.me/+5fY3QdRpOkQzZGIy Чат курса] - там можно задавать вопросы по курсу, задачам, изредка флудить
[https://t.me/+63m-6WSqJgljYzIy Канал курса] - там будут все важные объявления (домашние задания, оргвопросы, etc.)
[https://drive.google.com/drive/folders/11NVf33MEu8NMsUj4BDiWhpGxK_5FjETi?usp=sharing Папка с теоретическими заданиями]
[https://docs.google.com/spreadsheets/d/1KyBFzhkzI3vV9voGntrxmb_dSwsYjXfPdSjsNdM9ETg/edit?usp=sharing Ведомость курса]
[https://forms.gle/7qxBb6BdmAFd3mXE6 Форма для регистрации на курс]


== Требования ==
== Требования ==
* Физтех-почта (домен phystech.edu)
* Физтех-почта (домен phystech.edu)
* Аккаунт на [[Я.Контесте|https://contest.yandex.ru]] (можно на физтех-почту)
* Аккаунт на [https://contest.yandex.ru Я.Контесте] (можно на физтех-почту)
* Аккаунт на [[гитлабе|https://gitlab.com]]
* Аккаунт на [https://gitlab.com гитлабе]
 
Обязательно заполнить [https://forms.gle/7qxBb6BdmAFd3mXE6 форму регистрации на курс] до 1 ноября! В противном случае считается, что курс вы сдавать не планируете или вы согласны на добровольную пересдачу по обоим предметам.


== План курса ==
== План курса ==


Практикум по объектно-ориентированному программированию –
  1. Базовые алгоритмы
  1.Базовые конструкции языка С++
  - Бинарный поиск: классический, вещественный, по ответу
2.Функции
  - Префиксные суммы. Обобщение на произвольную ассоциативную и обратимую операцию
3.Массивы и структуры
  - Основы теории чисел:
4.Контейнеры
    * Модульная арифметика
5.Базовые понятия ООП. Инкапсуляция
    * Решето Эратосфена
6.Наследование часть 1
    * Поиск обратного по модулю: с использованием функции Эйлера, с использованием расширенного алгоритма Евклида
   - Виртуальные методы
   - Амортизационный анализ: метод монеток, метод потенциалов
   - Сложности перезагрузки
   - Линейные контейнеры
  - Интерфейс и реализация
    * Динамически расширяющийся буффер
  7.Наследование часть 2 
    * Списки: односвязный, двусвязный
   - Пространство имен (namespaces)
    * Адаптеры: стек, очередь, дек
   - Модификаторы доступа
    * Очередь с минимумом
   - Виртуальный деструктор
  2. Сортировки
   - override и final
   - Сортировка слиянием (MergeSort). Подсчет числа инверсий
  - множественное наследование
   - Бинарная пирамида (Binary heap). Пирамидальная сортировка (HeapSort)
  8.Полиморфизм, ссылки, модификаторы
   - Быстрая сортировка (QuickSort)
   - Полиморфизм
   - Поиск k-й порядковой статистики
   - Pointer vs Reference
  3. Деревья поиска
   - Константные методы
   - Наивное дерево поиска. Поддержка lower_bound, k-й порядковой статистики
   - Статистические поля и методы
   - AVL-дерево
  9.Операторы, потоки, строки
   - Декартово дерево
   - Инициализация
   - Splay дерево
   - Потоки ввода-вывода
  4. Хеш-таблицы
   - Перегрузка операторов
   - Метод цепочек
   - Строки
   - Универсальное семейство хеш-функций
10.Шаблоны
5. Динамическое программирование (ДП)
  11.Введение в STL часть 1
   - Постановка задачи ДП
   - Динамический массив (vector)
   - Задачи НВП (наибольшая возрастающая подпоследовательность), НОП (наибольшая общая подпоследовательность)
   - iterator
  - ДП по подотрезкам: подсчет числа подпоследовательностей палиндромов, задача о перемножении матриц
   - algoritm и vector
  6. Структуры для работы с непрерывными данными
  12.Введение в STL часть 2
   - Постановка задач static/dynamic offline/online RMQ/RSQ
   - set
   - Дерево отрезков с групповыми операциями
   - map
   - Дерево Фенвика. Обобщение на многомерный случай
   - auto
  7. Вычислительная геометрия на плоскости
13.Введение в STL часть 3
   - Взаимное расположение геометрических примитивов: точек, прямых, отрезков, окружностей
   - функторы
   - Работа с многоугольниками: подсчет площади, принадлежность точки
   - адаптеры STL
   - Выпуклая оболочка. Алгоритмы Джарвис, Грехема
   - Алгоритмы на
   - Построение огибающих
14.Обработка исключений, умные указатели
   - Динамическая выпуклая оболочка, случай только с добавлением
15.Изнанка итераторов
   - Сумма Минковского. Построение для двух выпуклых многоугольников
16.Что внутри STL
  - Две ближайшие точки на плоскости
  - Две самые удаленные точки на плоскости


== Оценивание ==
== Оценивание ==
Оценка по курсу состоит из нескольких частей:
За курс ставятся сразу две оценки: дифференцированный зачет за "Практикум по алгоритмам и структурам данных", экзамен по дисциплине "Алгоритмы и структуры данных".
 
'''Оценивание дифференцированного зачета'''
 
Оценка состоит из следующих компонент:
 
1. Баллы за контесты (далее ''A''): до 7 баллов
 
Пусть X - число набранных баллов студентом, S - число набранных ''идеальным студентом'' баллов. Тогда баллы за контесты определяются как ''A = round(X / S, 2) * 7''
 
2. Баллы за теоретические задания (далее ''B''): до 3 баллов
 
Пусть X - число набранных баллов студентом, S - число набранных ''идеальным студентом'' баллов. Тогда баллы за теоретические задания определяются как ''B = round(X / S, 2) * 3''
 
3. Бонус от преподавательского состава (далее ''B''): до 1 балла. Ставится семинаристом или лектором с шагом 0.1
 
Последняя компонента. Пусть F - число задач, в решениях которых студент был уличен в плагиате.
 
Итоговая оценка: ''clamp(round(A + B + C - F), 2, 10)'', однако если F > 2, то итоговая оценка неуд(2).
 
 
 
'''Оценивание экзамена'''
 
[https://drive.google.com/file/d/1fswi8A-7BijuL8aaPfFRHMJvaxsEJPF6/view?usp=sharing Программа и правила проведения экзамена]
 
== Команда курса ==
 
Лектор курса [http://t.me/KulArt Кулапин Артур]
 
Семинаристы:
 
Филатенков Артур - семинарист Б05-251
 
Смолин Александр - семинарист Б05-252
 
Долта Артем - семинарист Б05-253
 
Козловский Владислав - семинарист Б05-(153-155)


Максимум 12 баллов. Баллы переводятся в десятичную систему 1 к 1.
== Дополнительные материалы ==


3 балла -  Зачет в конце семестра;
[https://www.youtube.com/playlist?list=PL4_hYwCyhAvZtI5h-e2FBGLiygrGDWji0 Записи лекций 2022-2023 года]
5 баллов - Выполнение практических работ;
4 балла - Контрольные работы.

Текущая версия от 19:00, 18 апреля 2024

Общие сведения

  • Семестр: 3/5 (второй/третий курсы)
  • Формат: очный
  • Форма контроля: дифференцированный зачет + экзамен

Важные ссылки

Чат курса - там можно задавать вопросы по курсу, задачам, изредка флудить

Канал курса - там будут все важные объявления (домашние задания, оргвопросы, etc.)

Папка с теоретическими заданиями

Ведомость курса

Форма для регистрации на курс

Требования

  • Физтех-почта (домен phystech.edu)
  • Аккаунт на Я.Контесте (можно на физтех-почту)
  • Аккаунт на гитлабе

Обязательно заполнить форму регистрации на курс до 1 ноября! В противном случае считается, что курс вы сдавать не планируете или вы согласны на добровольную пересдачу по обоим предметам.

План курса

1. Базовые алгоритмы
 - Бинарный поиск: классический, вещественный, по ответу
 - Префиксные суммы. Обобщение на произвольную ассоциативную и обратимую операцию
 - Основы теории чисел:
   * Модульная арифметика
   * Решето Эратосфена
   * Поиск обратного по модулю: с использованием функции Эйлера, с использованием расширенного алгоритма Евклида
 - Амортизационный анализ: метод монеток, метод потенциалов
 - Линейные контейнеры
   * Динамически расширяющийся буффер
   * Списки: односвязный, двусвязный
   * Адаптеры: стек, очередь, дек
   * Очередь с минимумом
2. Сортировки
 - Сортировка слиянием (MergeSort). Подсчет числа инверсий
 - Бинарная пирамида (Binary heap). Пирамидальная сортировка (HeapSort)
 - Быстрая сортировка (QuickSort)
 - Поиск k-й порядковой статистики
3. Деревья поиска
 - Наивное дерево поиска. Поддержка lower_bound, k-й порядковой статистики
 - AVL-дерево
 - Декартово дерево
 - Splay дерево
4. Хеш-таблицы
 - Метод цепочек
 - Универсальное семейство хеш-функций
5. Динамическое программирование (ДП)
 - Постановка задачи ДП
 - Задачи НВП (наибольшая возрастающая подпоследовательность), НОП (наибольшая общая подпоследовательность)
 - ДП по подотрезкам: подсчет числа подпоследовательностей палиндромов, задача о перемножении матриц
6. Структуры для работы с непрерывными данными
 - Постановка задач static/dynamic offline/online RMQ/RSQ
 - Дерево отрезков с групповыми операциями
 - Дерево Фенвика. Обобщение на многомерный случай
7. Вычислительная геометрия на плоскости
 - Взаимное расположение геометрических примитивов: точек, прямых, отрезков, окружностей
 - Работа с многоугольниками: подсчет площади, принадлежность точки
 - Выпуклая оболочка. Алгоритмы Джарвис, Грехема
 - Построение огибающих
 - Динамическая выпуклая оболочка, случай только с добавлением
 - Сумма Минковского. Построение для двух выпуклых многоугольников
 - Две ближайшие точки на плоскости
 - Две самые удаленные точки на плоскости

Оценивание

За курс ставятся сразу две оценки: дифференцированный зачет за "Практикум по алгоритмам и структурам данных", экзамен по дисциплине "Алгоритмы и структуры данных".

Оценивание дифференцированного зачета

Оценка состоит из следующих компонент:

1. Баллы за контесты (далее A): до 7 баллов

Пусть X - число набранных баллов студентом, S - число набранных идеальным студентом баллов. Тогда баллы за контесты определяются как A = round(X / S, 2) * 7

2. Баллы за теоретические задания (далее B): до 3 баллов

Пусть X - число набранных баллов студентом, S - число набранных идеальным студентом баллов. Тогда баллы за теоретические задания определяются как B = round(X / S, 2) * 3

3. Бонус от преподавательского состава (далее B): до 1 балла. Ставится семинаристом или лектором с шагом 0.1

Последняя компонента. Пусть F - число задач, в решениях которых студент был уличен в плагиате.

Итоговая оценка: clamp(round(A + B + C - F), 2, 10), однако если F > 2, то итоговая оценка неуд(2).


Оценивание экзамена

Программа и правила проведения экзамена

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

Лектор курса Кулапин Артур

Семинаристы:

Филатенков Артур - семинарист Б05-251

Смолин Александр - семинарист Б05-252

Долта Артем - семинарист Б05-253

Козловский Владислав - семинарист Б05-(153-155)

Дополнительные материалы

Записи лекций 2022-2023 года