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

Материал из Public ATP Wiki
Перейти к: навигация, поиск
м (Плейлист прошлого года)
 
(не показаны 3 промежуточные версии этого же участника)
Строка 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 балла - Контрольные работы.
 

Текущая версия на 22: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 года