Видеокурсы: различия между версиями

Материал из Олимпиадное программирование в УлГТУ
Перейти к навигации Перейти к поиску
 
(не показано 10 промежуточных версий этого же участника)
Строка 6: Строка 6:
* [http://www.youtube.com/playlist?list=PLDrmKwRSNx7Jl8Fon2wRh4tCV3PeBUKmf ЛКШ.2008.Подмосковье, параллель B'] (YouTube; С. Копелиович, О. Пестов, С. Мельников; 2008)
* [http://www.youtube.com/playlist?list=PLDrmKwRSNx7Jl8Fon2wRh4tCV3PeBUKmf ЛКШ.2008.Подмосковье, параллель B'] (YouTube; С. Копелиович, О. Пестов, С. Мельников; 2008)
* [http://www.youtube.com/playlist?list=PLDrmKwRSNx7KcHxyf9hSmF3fTLKSwujkM ЛКШ.2008.Подмосковье, параллель C] (YouTube; А. Станкевич, К. Абакумов, М. Мухачева; 2008)
* [http://www.youtube.com/playlist?list=PLDrmKwRSNx7KcHxyf9hSmF3fTLKSwujkM ЛКШ.2008.Подмосковье, параллель C] (YouTube; А. Станкевич, К. Абакумов, М. Мухачева; 2008)
* [http://www.youtube.com/playlist?list=PLDrmKwRSNx7LxRVAufeIVFFLk4jwlJBT5 ЛКШ.2008.Подмосковье, параллель C'] (YouTube; В. Гуровиц, В. Кошелёв, П. Осипов, О. Пакуляк; 2008)
* [http://www.youtube.com/playlist?list=PLDrmKwRSNx7LxRVAufeIVFFLk4jwlJBT5 ЛКШ.2008.Подмосковье, параллель C'] (YouTube; В. Гуровиц, В. Кошелёв, П. Осипов, О. Пакуляк; 2008) {{Comment|Темы: стиль программирования, сложность алгоритмов (ясное и наглядное изложение), логические и битовые операции, использование битмасок; (...)}}
: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Темы: стиль программирования, сложность алгоритмов (ясное и наглядное изложение), логические и битовые операции, использование битмасок; (...)</span>
<!--  
<!--  
* [http://www.intuit.ru/studies/courses/1027/307/info ЛКШ.2008.Подмосковье, спецкурс Введение в проективную геометрию] (НОУ ИНТУИТ; А. Феськов; 2008)
* [http://www.intuit.ru/studies/courses/1027/307/info ЛКШ.2008.Подмосковье, спецкурс Введение в проективную геометрию] (НОУ ИНТУИТ; А. Феськов; 2008)
Строка 23: Строка 22:
== Курсы ИТМО и СПбГУ ==
== Курсы ИТМО и СПбГУ ==


* [http://openedu.ru/course/ITMOUniversity/PADS/ Алгоритмы программирования и структуры данных] (Openedu.ru; М. Буздалов, П. Маврин, Н. Нигматуллин; 2016)
* [http://openedu.ru/course/ITMOUniversity/PADS/ Алгоритмы программирования и структуры данных] (Openedu.ru; М. Буздалов, П. Маврин, Н. Нигматуллин; 2016) {{Comment|Темы: асимптотические обозначения, сортировка вставками; сортировка слиянием, быстрая сортировка, Ω-оценка сортировок сравнением; сортировка подсчётом, цифровая сортировка, карманная сортировка; стек, очередь, списки, двоичные деревья; двоичная куча, сортировка кучей, очередь с приоритетами; двоичный поиск, двоичные деревья поиска; балансирующиеся двоичные деревья (АВЛ-деревья, Splay-деревья); хеш-таблицы, хеш-функции, методы открытой адресации; поиск подстрок, алгоритм Рабина-Карпа; префикс-функция, Z-функция, алгоритм Бойера-Мура.<br>Лекции достаточно краткие, часто в ущерб понятности. В задачах попадаются сложный ввод/вывод и жёсткие ограничения.}}
: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Темы: асимптотические обозначения, сортировка вставками; сортировка слиянием, быстрая сортировка, Ω-оценка сортировок сравнением; сортировка подсчётом, цифровая сортировка, карманная сортировка; стек, очередь, списки, двоичные деревья; двоичная куча, сортировка кучей, очередь с приоритетами; двоичный поиск, двоичные деревья поиска; балансирующиеся двоичные деревья (АВЛ-деревья, Splay-деревья); хеш-таблицы, хеш-функции, методы открытой адресации; поиск подстрок, алгоритм Рабина-Карпа; префикс-функция, Z-функция, алгоритм Бойера-Мура.</span>
* {{BadBadge}} [http://www.coursera.org/learn/competitive-programming-core-skills/ Competitive Programmer's Core Skills] (Coursera; A. Lopatin, A. Kulikov, A. Logunov, K. Simonov; 2018) {{Comment|Нет, нет и нет. Чудовищный уровень английского (у Логунова и Симонова), краткие лекции, платная практика.}}
: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Лекции достаточно краткие, часто в ущерб понятности. В задачах попадаются сложный ввод/вывод и жёсткие ограничения.</span>
* <span style="background-color: #f00">–</span> [http://www.coursera.org/learn/competitive-programming-core-skills/ Competitive Programmer's Core Skills] (Coursera; A. Lopatin, A. Kulikov, A. Logunov, K. Simonov; 2018)
: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Нет, нет и нет. Чудовищный уровень английского (у Логунова и Симонова), краткие лекции, платная практика.</span>
* [http://www.youtube.com/watch?v=apR9GhhjBjM&list=PLrS21S1jm43geDXVdeQy96P-f59pXeyPC Алгоритмы и структуры данных (1 семестр)] (YouTube; П. Маврин; 2019)
* [http://www.youtube.com/watch?v=apR9GhhjBjM&list=PLrS21S1jm43geDXVdeQy96P-f59pXeyPC Алгоритмы и структуры данных (1 семестр)] (YouTube; П. Маврин; 2019)
* [http://www.youtube.com/watch?v=PHL6gHLfBs8&list=PLrS21S1jm43huya9OjmrdzlXTMzQFzfw4 Алгоритмы и структуры данных (2 семестр)] (YouTube; П. Маврин; 2019)
* [http://www.youtube.com/watch?v=PHL6gHLfBs8&list=PLrS21S1jm43huya9OjmrdzlXTMzQFzfw4 Алгоритмы и структуры данных (2 семестр)] (YouTube; П. Маврин; 2019)
Строка 41: Строка 37:
* [http://www.youtube.com/playlist?list=PLDrmKwRSNx7L3YYWrWp9gnXG0rH05mOw8 Алгоритмы: построение и анализ] (YouTube; Д. Швед; 2010)
* [http://www.youtube.com/playlist?list=PLDrmKwRSNx7L3YYWrWp9gnXG0rH05mOw8 Алгоритмы: построение и анализ] (YouTube; Д. Швед; 2010)
* [http://www.youtube.com/playlist?list=PL4_hYwCyhAvaVUrDMrAvkiDetyCtMkzMv Алгоритмы и структуры данных] (YouTube; М. Тихомиров; 2019)
* [http://www.youtube.com/playlist?list=PL4_hYwCyhAvaVUrDMrAvkiDetyCtMkzMv Алгоритмы и структуры данных] (YouTube; М. Тихомиров; 2019)
* <span style="background-color: #f00">–</span> [http://stepik.org/64454 Быстрый старт в спортивное программирование] (Stepik; В. Невструев, Ф. Рухович, О. Христенко; 2020)
* {{BadBadge}} [http://stepik.org/64454 Быстрый старт в спортивное программирование] (Stepik; В. Невструев, Ф. Рухович, О. Христенко; 2020) {{Comment|Темы: асимптотические обозначения, 10^8, поиск второго максимума, префиксные суммы, бинпоиск; диапазоны целых типов, проверка на простоту, решето Эратосфена, операции по модулю, алгоритм Евклида (обычный и расширенный), быстрое возведение в степень, обратный элемент; динамическое программирование, путь в полосе и таблице, восстановление ответа, рюкзак; графы, dfs, bfs.}}
: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Темы: асимптотические обозначения, 10^8, поиск второго максимума, префиксные суммы, бинпоиск; диапазоны целых типов, проверка на простоту, решето Эратосфена, операции по модулю, алгоритм Евклида (обычный и расширенный), быстрое возведение в степень, обратный элемент; динамическое программирование, путь в полосе и таблице, восстановление ответа, рюкзак; графы, dfs, bfs.</span>


== Курсы Самарского университета ==
== Курсы Самарского университета ==


* <span style="background-color: #0f0">+</span> [http://stepik.org/course/4603/syllabus Математика для олимпиад по программированию] (Stepik; Н. Бондаренко; 2018)
* {{GoodBadge}} [http://stepik.org/course/4603/syllabus Математика для олимпиад по программированию] (Stepik; Н. Бондаренко; 2018) {{Comment|Темы: комбинаторика, теория чисел, геометрия, инварианты и полуинварианты, теория игр. Задачи подчас сложные.}}
: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Темы: комбинаторика, теория чисел, геометрия, инварианты и полуинварианты, теория игр. Задачи подчас сложные.</span>
* [http://www.coursera.org/learn/sportivnoe-programmirovanie/ Спортивное программирование] (Coursera; Н. Бондаренко; 2019) {{Comment|Темы: рекурсивный перебор (размещения с повторениями, перестановки, скобочные последовательности, разбиения на слагаемые, коммивояжёр); жадные алгоритмы (размен монет, заказы с дедлайнами, выбор заявок, непрерывный рюкзак); ДП (замощение домино, путь в таблице, префиксные суммы 1d/2d, размен монет, рюкзак, НОП); битовые маски (операции, перебор подмножеств, динамика по маскам, коммивояжёр, динамика по профилю).<br>Приятный курс. Тот случай, когда лекции, несмотря на краткость, очень выгодно отличаются от, например, петербургских. Есть практические задачи. Экзамен платный.}}
* [http://www.coursera.org/learn/sportivnoe-programmirovanie/ Спортивное программирование] (Coursera; Н. Бондаренко; 2019)
: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Темы: рекурсивный перебор (размещения с повторениями, перестановки, скобочные последовательности, разбиения на слагаемые, коммивояжёр); жадные алгоритмы (размен монет, заказы с дедлайнами, выбор заявок, непрерывный рюкзак); ДП (замощение домино, путь в таблице, префиксные суммы 1d/2d, размен монет, рюкзак, НОП); битовые маски (операции, перебор подмножеств, динамика по маскам, коммивояжёр, динамика по профилю).</span>
: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Приятный курс. Тот случай, когда лекции, несмотря на краткость, очень выгодно отличаются от, например, петербургских. Есть практические задачи. Экзамен платный.</span>


== Курсы УрФУ и СКБ Контур ==
== Курсы УрФУ и СКБ Контур ==
Строка 56: Строка 48:
* [http://www.youtube.com/playlist?list=PLtb_PNVHdsV4qZgyqMFC6Tq2wsA0CybJB Видеозаписи семинаров Уральского федерального университета] (YouTube; М. Рубинчик; 2013)
* [http://www.youtube.com/playlist?list=PLtb_PNVHdsV4qZgyqMFC6Tq2wsA0CybJB Видеозаписи семинаров Уральского федерального университета] (YouTube; М. Рубинчик; 2013)
* [http://www.youtube.com/playlist?list=PLSO6QI4DFZ8e_88STemeIgLL7j68EOYyi Видеозаписи семинаров Уральского федерального университета] (YouTube; М. Рубинчик; 2013&ndash;2017)
* [http://www.youtube.com/playlist?list=PLSO6QI4DFZ8e_88STemeIgLL7j68EOYyi Видеозаписи семинаров Уральского федерального университета] (YouTube; М. Рубинчик; 2013&ndash;2017)
* <span style="background-color: #0f0">+</span> [http://ulearn.me/Course/complexity Оценка сложности алгоритмов] (Ulearn; 2018)
* {{GoodBadge}} [http://ulearn.me/Course/complexity Оценка сложности алгоритмов] (Ulearn; 2018) {{Comment|Короткий (~1 час) текстовый курс, содержащий задачи на определение &Theta;-оценок предложенного кода. Также содержит краткие теоретические разделы.}}
: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Короткий (~1 час) текстовый курс, содержащий задачи на определение &Theta;-оценок предложенного кода. Также содержит краткие теоретические разделы.</span>


== Курсы Школы анализа данных Яндекса ==
== Курсы Яндекса и ШАД ==


* [http://www.youtube.com/playlist?list=PLJOzdkh8T5koEPv-R5W0ovmL_T2BjB1HX Алгоритмы и структуры данных поиска] (YouTube; М. Бабенко; 2012)
* [http://www.youtube.com/playlist?list=PLJOzdkh8T5koEPv-R5W0ovmL_T2BjB1HX Алгоритмы и структуры данных поиска] (YouTube; М. Бабенко; 2012)
* [https://www.youtube.com/playlist?list=PL6Wui14DvQPySdPv5NUqV3i8sDbHkCKC5 Тренировки по алгоритмам] (YouTube; М. Густокашин; 2021)


== Курсы Mail.Ru Group ==
== Курсы Mail.Ru Group ==


* <span style="background-color: #f00">–</span> [http://stepik.org/156 Алгоритмы и структуры данных] (Stepik; С. Мацкевич; 2015)
* {{BadBadge}} [http://stepik.org/156 Алгоритмы и структуры данных] (Stepik; С. Мацкевич; 2015) {{Comment|Эталонный отвратительный курс. Обрывочные, сумбурные лекции, малое количество задач, малое количество тестов в задачах. Шквал гневных комментариев от слушателей.}}
: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Эталонный отвратительный курс. Обрывочные, сумбурные лекции, малое количество задач, малое количество тестов в задачах. Шквал гневных комментариев от слушателей.</span>


== Курсы Computer Science Center ==
== Курсы Computer Science Center ==
Строка 72: Строка 63:
* [http://www.lektorium.tv/course/?id=22823 Алгоритмы и структуры данных 1] (Lektorium; А. Куликов, М. Дворкин; 2011)
* [http://www.lektorium.tv/course/?id=22823 Алгоритмы и структуры данных 1] (Lektorium; А. Куликов, М. Дворкин; 2011)
* [http://www.lektorium.tv/course/?id=22843 Алгоритмы и структуры данных 2] (Lektorium; А. Куликов, М. Дворкин; 2012)
* [http://www.lektorium.tv/course/?id=22843 Алгоритмы и структуры данных 2] (Lektorium; А. Куликов, М. Дворкин; 2012)
* [http://www.lektorium.tv/course/?id=22926 Дополнительные главы алгоритмов] (Lektorium; А. Станкевич; 2013)
* [http://www.lektorium.tv/course/?id=22926 Дополнительные главы алгоритмов] (Lektorium; А. Станкевич; 2013) {{Comment|Темы: d-куча, сливаемые кучи (левосторонние, биномиальные, фибоначчиевы; тонкие, Бродала-Окасаки); splay-деревья; TANGO-деревья; (...)}}
: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Темы: d-куча, сливаемые кучи (левосторонние, биномиальные, фибоначчиевы; тонкие, Бродала-Окасаки); splay-деревья; TANGO-деревья; (...)</span>
* [http://www.youtube.com/playlist?list=PLlb7e2G7aSpQutUr7qYIunvm04cqdr5mx Алгоритмы и структуры данных] (Stepik/YouTube; А. Куликов; 2014)
* [http://www.youtube.com/playlist?list=PLlb7e2G7aSpQutUr7qYIunvm04cqdr5mx Алгоритмы и структуры данных] (Stepik/YouTube; А. Куликов; 2014)
* <span style="background-color: #0f0">+</span> [http://stepik.org/217 Алгоритмы: теория и практика. Методы] (Stepik; А. Куликов; 2015)
* {{GoodBadge}} [http://stepik.org/217 Алгоритмы: теория и практика. Методы] (Stepik; А. Куликов; 2015) {{Comment|Темы: числа Фибоначчи, НОД, асимптотические обозначения; жадные алгоритмы (покрытие точек отрезками, выбор заявок, максимальное независимое множество, непрерывный рюкзак, коды Хаффмана), очереди с приоритетами; divide and conquer (двоичный поиск, умножение Карацубы, умножение Штрассена), сортировки (слиянием, &Omega;-оценка сортировок сравнением, быстрая, порядковые статистики, кучей, подсчётом), мастер-теорема; динамическое программирование (наибольшая возрастающая подпоследовательность, редакционное расстояние, целочисленный рюкзак, перемножение матриц, независимое множество максимального веса). Разбор решений на C++, Python, Java.}}
: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Темы: числа Фибоначчи, НОД, асимптотические обозначения; жадные алгоритмы (покрытие точек отрезками, выбор заявок, максимальное независимое множество, непрерывный рюкзак, коды Хаффмана), очереди с приоритетами; divide and conquer (двоичный поиск, умножение Карацубы, умножение Штрассена), сортировки (слиянием, &Omega;-оценка сортировок сравнением, быстрая, порядковые статистики, кучей, подсчётом), мастер-теорема; динамическое программирование (наибольшая возрастающая подпоследовательность, редакционное расстояние, целочисленный рюкзак, перемножение матриц, независимое множество максимального веса). Разбор решений на C++, Python, Java.</span>
* {{GoodBadge}} [http://stepik.org/1547 Алгоритмы: теория и практика. Структуры данных] (Stepik; А. Куликов; 2016) {{Comment|Темы: массивы, списки, стек (скобочная последовательность, стек с минимумом), очередь (очередь на двух стеках, минимум в окне), деревья, расширяющийся массив; очередь с приоритетом, куча, сортировка кучей; система непересекающихся множеств + эвристики; хеш-таблицы, разрешение коллизий, универсальное хеширование, алгоритм Рабина-Карпа; деревья поиска, АВЛ-деревья; АВЛ + count/merge/split, АВЛ + сумма на отрезке, АВЛ + неявный ключ; splay-деревья.}}
* <span style="background-color: #0f0">+</span> [http://stepik.org/1547 Алгоритмы: теория и практика. Структуры данных] (Stepik; А. Куликов; 2016)
: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Темы: массивы, списки, стек (скобочная последовательность, стек с минимумом), очередь (очередь на двух стеках, минимум в окне), деревья, расширяющийся массив; очередь с приоритетом, куча, сортировка кучей; система непересекающихся множеств + эвристики; хеш-таблицы, разрешение коллизий, универсальное хеширование, алгоритм Рабина-Карпа; деревья поиска, АВЛ-деревья; АВЛ + count/merge/split, АВЛ + сумма на отрезке, АВЛ + неявный ключ; splay-деревья.</span>


== Вебинары Ф. В. Меньшикова (разбор задач acmp.ru) ==
== Вебинары Ф. В. Меньшикова (разбор задач acmp.ru) ==
Строка 84: Строка 72:
* [http://www.youtube.com/playlist?list=PLIEv2lyiPlJQuuDEnAPfa4iybE7GU62h4 Олимпиадное программирование с нуля на Java]  (YouTube; Ф. Меньшиков; 2016&ndash;)
* [http://www.youtube.com/playlist?list=PLIEv2lyiPlJQuuDEnAPfa4iybE7GU62h4 Олимпиадное программирование с нуля на Java]  (YouTube; Ф. Меньшиков; 2016&ndash;)
* [http://www.youtube.com/playlist?list=PLES6U-jjEXseQ6UBxScgMsJfHPaq72w3Y 3.5 задачи в неделю]  (YouTube; Ф. Меньшиков; 2016&ndash;)
* [http://www.youtube.com/playlist?list=PLES6U-jjEXseQ6UBxScgMsJfHPaq72w3Y 3.5 задачи в неделю]  (YouTube; Ф. Меньшиков; 2016&ndash;)
== Курсы CodeChef ==
* [http://www.youtube.com/playlist?list=PLi0ZM-RCX5nsTc2Z6woHr5qoF6n3b-thO CodeChef's Indian Programming Camp 2016] (YouTube; коллектив авторов; 2016)
== Курсы O'Reilly Media ==
* [http://shop.oreilly.com/product/0636920039884.do Learning Data Structures and Algorithms] (O'Reilly Media; R. Stephens; 2015)
* [http://shop.oreilly.com/product/110000667.do Working with Algorithms in Python] (O'Reilly Media; G. T. Heineman; 2014)
: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Курс на английском языке от соавтора книги &laquo;Algorithms in a Nutshell&raquo;. Полная версия видео может быть найдена в Интернете. Слайды + живые примеры программ на Python, наглядно демонстрируется время работы.<br>Кратко рассматриваются: двоичный поиск, двоичные деревья поиска, O-оценка, сортировка слиянием, быстрое возведение в степень, brute-force, kd-деревья, представление графов, DFS, Флойд, ДП (числа Фибоначчи и редакционное расстояние), куча и сортировка кучей, Дейкстра, Прим.</span>


== Курсы университетов США ==
== Курсы университетов США ==
Строка 104: Строка 82:


Princeton:
Princeton:
* <span style="background-color: #0f0">+</span> [http://www.coursera.org/learn/algorithms-part1 Algorithms, Part I] (Coursera; R. Sedgewick, K. Wayne; 2012)
* {{GoodBadge}} [http://www.coursera.org/learn/algorithms-part1 Algorithms, Part I] (Coursera; R. Sedgewick, K. Wayne; 2012)
* <span style="background-color: #0f0">+</span> [http://www.coursera.org/learn/algorithms-part2 Algorithms, Part II] (Coursera; R. Sedgewick, K. Wayne; 2012)
* {{GoodBadge}} [http://www.coursera.org/learn/algorithms-part2 Algorithms, Part II] (Coursera; R. Sedgewick, K. Wayne; 2012)
* [http://www.coursera.org/learn/analysis-of-algorithms Analytic Combinatorics, Part I] (Coursera; R. Sedgewick; 2013)
* [http://www.coursera.org/learn/analysis-of-algorithms Analytic Combinatorics, Part I] (Coursera; R. Sedgewick; 2013)
* [http://www.coursera.org/learn/analytic-combinatorics Analytic Combinatorics, Part II] (Coursera; R. Sedgewick; 2013)
* [http://www.coursera.org/learn/analytic-combinatorics Analytic Combinatorics, Part II] (Coursera; R. Sedgewick; 2013)


Stanford:
Stanford:
* [http://www.coursera.org/specializations/algorithms Courcera Algorithms Specialization]:
* [http://www.coursera.org/specializations/algorithms Coursera Algorithms Specialization]:
:* [http://www.coursera.org/learn/algorithms-divide-conquer Divide and Conquer, Sorting and Searching, and Randomized Algorithms] (Coursera; T. Roughgarden; 2012)
:* [http://www.coursera.org/learn/algorithms-divide-conquer Divide and Conquer, Sorting and Searching, and Randomized Algorithms] (Coursera; T. Roughgarden; 2012)
:* [http://www.coursera.org/learn/algorithms-graphs-data-structures Graph Search, Shortest Paths, and Data Structures] (Coursera; T. Roughgarden; 2012)
:* [http://www.coursera.org/learn/algorithms-graphs-data-structures Graph Search, Shortest Paths, and Data Structures] (Coursera; T. Roughgarden; 2012)
Строка 118: Строка 96:
UC San Diego:
UC San Diego:
* [http://www.coursera.org/specializations/data-structures-algorithms Coursera Data Structures and Algorithms Specialization]:
* [http://www.coursera.org/specializations/data-structures-algorithms Coursera Data Structures and Algorithms Specialization]:
:* [http://www.coursera.org/learn/algorithmic-toolbox Algorithmic Toolbox] (Coursera; D. Kane, A. Kulikov, M. Levin, P. Pevzner, N. Rhodes; 2016)
:* [http://www.coursera.org/learn/algorithmic-toolbox Algorithmic Toolbox] (Coursera; D. Kane, A. Kulikov, M. Levin, P. Pevzner, N. Rhodes; 2016) {{Comment|Темы: стресс-тестирование; числа Фибоначчи за O(N), алгоритм Евклида, асимптотические обозначения; жадные алгоритмы (заправка машины, покрытие точек единичными отрезками, непрерывный рюкзак); divide and conquer (двоичный поиск, умножение многочленов, мастер-теорема), сортировки (выбором, слиянием, быстрая, подсчётом, Ω-оценка сортировок сравнением); динамическое программирование (размен монет, рюкзак с повторениями, рюкзак без повторений, расстановка скобок).}}
:: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Темы: стресс-тестирование; числа Фибоначчи за O(N), алгоритм Евклида, асимптотические обозначения; жадные алгоритмы (заправка машины, покрытие точек единичными отрезками, непрерывный рюкзак); divide and conquer (двоичный поиск, умножение многочленов, мастер-теорема), сортировки (выбором, слиянием, быстрая, подсчётом, Ω-оценка сортировок сравнением); динамическое программирование (размен монет, рюкзак с повторениями, рюкзак без повторений, расстановка скобок).</span>
:* [http://www.coursera.org/learn/data-structures Data Structures] (Coursera; D. Kane, A. Kulikov, M. Levin, N. Rhodes; 2016)
:* [http://www.coursera.org/learn/data-structures Data Structures] (Coursera; D. Kane, A. Kulikov, M. Levin, N. Rhodes; 2016)
:* [http://www.coursera.org/learn/algorithms-on-graphs Algorithms on Graphs] (Coursera; D. Kane, A. Kulikov, M. Levin, N. Rhodes; 2016)
:* [http://www.coursera.org/learn/algorithms-on-graphs Algorithms on Graphs] (Coursera; D. Kane, A. Kulikov, M. Levin, N. Rhodes; 2016)
Строка 125: Строка 102:
:* [http://www.coursera.org/learn/advanced-algorithms-and-complexity Advanced Algorithms and Complexity] (Coursera; D. Kane, A. Kulikov, M. Levin, N. Rhodes; 2016)
:* [http://www.coursera.org/learn/advanced-algorithms-and-complexity Advanced Algorithms and Complexity] (Coursera; D. Kane, A. Kulikov, M. Levin, N. Rhodes; 2016)
:* [http://www.coursera.org/learn/assembling-genomes Genome Assembly Programming Challenge] (Coursera; A. Kulikov, M. Levin, P. Pevzner, N. Rhodes; 2016)
:* [http://www.coursera.org/learn/assembling-genomes Genome Assembly Programming Challenge] (Coursera; A. Kulikov, M. Levin, P. Pevzner, N. Rhodes; 2016)
* <span style="background-color: #0f0">+</span> [http://stepik.org/579 Data Structures] (Stepic; N. Moshiri, L. Izhikevich; 2016)
* {{GoodBadge}} [http://stepik.org/579 Data Structures] (Stepik; N. Moshiri, L. Izhikevich; 2016) {{Comment|Темы: асимптотические обозначения, классы сложности, основы C++, псевдослучайные числа, битовые операции, командная строка Unix, git; массивы, связные списки, списки с пропусками, циклические массивы, АТД (дек, очередь, стек), итераторы; деревья, кучи, двоичные деревья поиска, декартовы деревья, АВЛ-деревья, красно-чёрные деревья, B-деревья, B+-деревья; графы, представление графов, BFS, DFS, алгоритм Дейкстры, MST, DSU; хеширование, хеш-таблицы, коллизии и их разрешение (открытая адресация, метод цепочек, cuckoo hashing), hash maps; множества и словари (на списках, массивах, деревьях, хеш-таблицах, борах, троичных деревьях поиска); кодирование, энтропия, сжатие Хаффмана, побитовый ввод-вывод; резюме по структурам данных.<br>Курс является текстовым, но содержит колоссальное количество хорошо структурированной информации о структурах данных. Имеются тесты и задачи на программирование, оба вида заданий очень просты.}}
: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Темы: асимптотические обозначения, классы сложности, основы C++, псевдослучайные числа, битовые операции, командная строка Unix, git; массивы, связные списки, списки с пропусками, циклические массивы, АТД (дек, очередь, стек), итераторы; деревья, кучи, двоичные деревья поиска, декартовы деревья, АВЛ-деревья, красно-чёрные деревья, B-деревья, B+-деревья; графы, представление графов, BFS, DFS, алгоритм Дейкстры, MST, DSU; хеширование, хеш-таблицы, коллизии и их разрешение (открытая адресация, метод цепочек, cuckoo hashing), hash maps; множества и словари (на списках, массивах, деревьях, хеш-таблицах, борах, троичных деревьях поиска); кодирование, энтропия, сжатие Хаффмана, побитовый ввод-вывод; резюме по структурам данных.<br>Курс является текстовым, но содержит колоссальное количество хорошо структурированной информации о структурах данных. Имеются тесты и задачи на программирование, оба вида заданий очень просты.</span>


Stony Brook University:
Stony Brook University:
* [http://www.youtube.com/playlist?list=PL07B3F10B48592010 Programming Challenges HKUST] (YouTube; S. Skiena; 2009)
* [http://www.youtube.com/playlist?list=PL07B3F10B48592010 Programming Challenges HKUST] (YouTube; S. Skiena; 2009)
* [http://www.youtube.com/playlist?list=PLOtl7M3yp-DX32N0fVIyvn7ipWKNGmwpp Analysis of Algorithms] (YouTube; S. Skiena; 2016)
* [http://www.youtube.com/playlist?list=PLOtl7M3yp-DX32N0fVIyvn7ipWKNGmwpp Analysis of Algorithms] (YouTube; S. Skiena; 2016)
== Прочие зарубежные курсы ==
* [http://www.youtube.com/playlist?list=PLi0ZM-RCX5nsTc2Z6woHr5qoF6n3b-thO CodeChef's Indian Programming Camp 2016] (YouTube; коллектив авторов; 2016)
* [http://shop.oreilly.com/product/0636920039884.do Learning Data Structures and Algorithms] (O'Reilly Media; R. Stephens; 2015)
* [http://shop.oreilly.com/product/110000667.do Working with Algorithms in Python] (O'Reilly Media; G. T. Heineman; 2014) {{Comment|Курс на английском языке от соавтора книги &laquo;Algorithms in a Nutshell&raquo;. Полная версия видео может быть найдена в Интернете. Слайды + живые примеры программ на Python, наглядно демонстрируется время работы.<br>Кратко рассматриваются: двоичный поиск, двоичные деревья поиска, O-оценка, сортировка слиянием, быстрое возведение в степень, brute-force, kd-деревья, представление графов, DFS, Флойд, ДП (числа Фибоначчи и редакционное расстояние), куча и сортировка кучей, Дейкстра, Прим.}}


== Курсы по языкам программирования ==
== Курсы по языкам программирования ==


C++:
C++:
* <span style="background-color: #0f0">+</span> [http://stepik.org/course/363 Введение в программирование (C++)] (Stepic; Яндекс/ВШЭ; М. Густокашин; 2015)
* {{GoodBadge}} [http://stepik.org/course/363 Введение в программирование (C++)] (Stepik; Яндекс/ВШЭ; М. Густокашин; 2015) {{Comment|Курс для начинающих, содержащий короткие лекции и большое количество задач.<br>Темы: целые числа, условный оператор, цикл while, действительные числа, цикл for и массивы, двумерные массивы, функции и рекурсия, строки и символы, словари и множества, стандартные алгоритмы STL.}}
: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Курс для начинающих, содержащий короткие лекции и большое количество задач.<br>Темы: целые числа, условный оператор, цикл while, действительные числа, цикл for и массивы, двумерные массивы, функции и рекурсия, строки и символы, словари и множества, стандартные алгоритмы STL.</span>
* [http://www.coursera.org/specializations/c-plus-plus-modern-development Специализация Coursera «Искусство разработки на современном C++»]:
* [http://www.coursera.org/specializations/c-plus-plus-modern-development Специализация Coursera «Искусство разработки на современном C++»]:
:* [http://www.coursera.org/learn/c-plus-plus-white Основы разработки на C++: белый пояс] (Coursera; Яндекс/МФТИ; И. Лежанкин, Е. Парамонов, А. Полднев, И. Шишков; 2017)
:* [http://www.coursera.org/learn/c-plus-plus-white Основы разработки на C++: белый пояс] (Coursera; Яндекс/МФТИ; И. Лежанкин, Е. Парамонов, А. Полднев, И. Шишков; 2017) {{Comment|Курс платный, но видео и некоторые задания бесплатны. Любопытная идея — сразу давать сложные вещи, позволяющие решать практические задачи, а внутреннее устройство разбирать после или не разбирать совсем.<br>Темы: ввод-вывод, простые типы (int, double) и коллекции (vector, set, string), работа с Eclipse, операции, принципы тестирования, if, while, range-based for; функции, передача параметров, vector, map, set; алгоритмы (min, max, sort), лямбда-функции, области видимости, структуры, классы, методы, конструкторы, деструкторы; работа с файлами, перегрузка операторов; исключения.}}
:: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Курс платный, но видео и некоторые задания бесплатны. Любопытная идея — сразу давать сложные вещи, позволяющие решать практические задачи, а внутреннее устройство разбирать после или не разбирать совсем.<br>Темы: ввод-вывод, простые типы (int, double) и коллекции (vector, set, string), работа с Eclipse, операции, принципы тестирования, if, while, range-based for; функции, передача параметров, vector, map, set; алгоритмы (min, max, sort), лямбда-функции, области видимости, структуры, классы, методы, конструкторы, деструкторы; работа с файлами, перегрузка операторов; исключения.</span>
:* [http://www.coursera.org/learn/c-plus-plus-yellow Основы разработки на C++: жёлтый пояс] (Coursera; Яндекс/МФТИ; И. Лежанкин, Е. Парамонов, А. Полднев, И. Шишков; 2017) {{Comment|Темы: целочисленные типы, перечисления, кортежи, пары, шаблоны функций; unit-тестирование, разработка фреймворка для тестирования на assert'ах; заголовочные файлы, #include, многофайловые проекты; итераторы, использование итераторов в алгоритмах, дек, очередь, стек, алгоритмы поиска; наследование, protected, порядок инициализации, полиморфизм, виртуальные методы, shared_ptr.}}
:* [http://www.coursera.org/learn/c-plus-plus-yellow Основы разработки на C++: жёлтый пояс] (Coursera; Яндекс/МФТИ; И. Лежанкин, Е. Парамонов, А. Полднев, И. Шишков; 2017)
:* [http://www.coursera.org/learn/c-plus-plus-red Основы разработки на C++: красный пояс] (Coursera; Яндекс/МФТИ; А. Полднев, И. Шишков; 2018) {{Comment|Темы: макросы, #, __FILE__, __LINE__, шаблоны классов, вывод шаблонных типов; простой профайлер, endl vs \n, cin.tie(0), O-оценка, примерная оценка времени работы, амортизированная сложность; стек и куча, указатели, new и delete, арифметика указателей, простой vector, константность указателей; инвалидация, устройство vector, deque, list, array, string_view; move, конструктор копирования (перемещения) и оператор (перемещающего) присваивания, move-итераторы, некопируемые типы, copy elision, async, future, гонки, mutex, lock_guard.}}
:: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Темы: целочисленные типы, перечисления, кортежи, пары, шаблоны функций; unit-тестирование, разработка фреймворка для тестирования на assert'ах; заголовочные файлы, #include, многофайловые проекты; итераторы, использование итераторов в алгоритмах, дек, очередь, стек, алгоритмы поиска; наследование, protected, порядок инициализации, полиморфизм, виртуальные методы, shared_ptr.</span>
:* [http://www.coursera.org/learn/c-plus-plus-brown Основы разработки на C++: коричневый пояс] (Coursera; Яндекс/МФТИ; А. Зобнин, М. Матросов, А. Полднев, Н. Субоч, И. Шишков; 2018) {{Comment|Темы: unordered_set/map, сравнение с set/map, пользовательские типы в set и unordered_set, выбор хеш-функции, extract, merge;  пространства имён, using, this, присваивание себе; преимущества const, IILE, mutable, утечки памяти, unique_ptr; shared_ptr, устройство unique_ptr и shared_ptr, weak_ptr, deleter, жизненный цикл объекта, RAII; рефакторинг функций, способы передачи параметров, span, ranges, способы возврата значений, optional, variant, рефакторинг конструкторов.}}
:* [http://www.coursera.org/learn/c-plus-plus-red Основы разработки на C++: красный пояс] (Coursera; Яндекс/МФТИ; А. Полднев, И. Шишков; 2018)
:* [http://www.coursera.org/learn/c-plus-plus-black Основы разработки на C++: чёрный пояс] (Coursera; Яндекс/МФТИ; А. Зобнин, М. Матросов, А. Полднев, Н. Субоч, И. Шишков; 2019) {{Comment|Темы: отладочные #define, санитайзер, undefined behavior; бинарная сериализация, protobuf; выравнивание, порядок байтов, #pragma pack, битовые поля, vptr, таблица виртуальных методов; placement new, operator new, std::uninitialized_*, реализация std::vector, variadic templates, std::forward; ANTLR. '''Очень тяжёлые''' задачи (интерпретатор Mython, транспортный справочник в 15 частях, электронная таблица).}}
:: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Темы: макросы, #, __FILE__, __LINE__, шаблоны классов, вывод шаблонных типов; простой профайлер, endl vs \n, cin.tie(0), O-оценка, примерная оценка времени работы, амортизированная сложность; стек и куча, указатели, new и delete, арифметика указателей, простой vector, константность указателей; инвалидация, устройство vector, deque, list, array, string_view; move, конструктор копирования (перемещения) и оператор (перемещающего) присваивания, move-итераторы, некопируемые типы, copy elision, async, future, гонки, mutex, lock_guard.</span>
* [http://stepik.org/course/7 Программирование на языке C++] (Stepik; CSC; А. Смаль; 2015)
:* [http://www.coursera.org/learn/c-plus-plus-brown Основы разработки на C++: коричневый пояс] (Coursera; Яндекс/МФТИ; А. Зобнин, М. Матросов, А. Полднев, Н. Субоч, И. Шишков; 2018)
* [http://stepik.org/course/3206 Программирование на языке C++ (продолжение)] (Stepik; CSC; А. Смаль; 2017)
:: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Темы: unordered_set/map, сравнение с set/map, пользовательские типы в set и unordered_set, выбор хеш-функции, extract, merge;  пространства имён, using, this, присваивание себе; преимущества const, IILE, mutable, утечки памяти, unique_ptr; shared_ptr, устройство unique_ptr и shared_ptr, weak_ptr, deleter, жизненный цикл объекта, RAII; рефакторинг функций, способы передачи параметров, span, ranges, способы возврата значений, optional, variant, рефакторинг констукторов.</span>
:* [http://www.coursera.org/learn/c-plus-plus-black Основы разработки на C++: чёрный пояс] (Coursera; Яндекс/МФТИ; А. Зобнин, М. Матросов, А. Полднев, Н. Субоч, И. Шишков; 2019)
:: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Темы: отладочные #define, санитайзер, undefined behavior, (...)</span>
* [http://stepik.org/course/7 Программирование на языке C++] (Stepic; CSC; А. Смаль; 2015)
* [http://stepik.org/course/3206 Программирование на языке C++ (продолжение)] (Stepic; CSC; А. Смаль; 2017)


Python
Python
* [http://www.coursera.org/learn/python-osnovy-programmirovaniya Основы программирования на Python] (Coursera; Яндекс/ВШЭ; М. Густокашин; 2017)
* [http://www.coursera.org/learn/python-osnovy-programmirovaniya Основы программирования на Python] (Coursera; Яндекс/ВШЭ; М. Густокашин; 2017) {{Comment|Своеобразный аналог курса по C++ того же автора.}}
: <span style="line-height: 80%; font-size: 80%; font-style: italic;">Своеобразный аналог курса по C++ того же автора.</span>

Текущая версия от 17:08, 24 августа 2021

Лекции Летней компьютерной школы

Лекции Зимней школы

Курсы ИТМО и СПбГУ

  • Алгоритмы программирования и структуры данных (Openedu.ru; М. Буздалов, П. Маврин, Н. Нигматуллин; 2016)
    Темы: асимптотические обозначения, сортировка вставками; сортировка слиянием, быстрая сортировка, Ω-оценка сортировок сравнением; сортировка подсчётом, цифровая сортировка, карманная сортировка; стек, очередь, списки, двоичные деревья; двоичная куча, сортировка кучей, очередь с приоритетами; двоичный поиск, двоичные деревья поиска; балансирующиеся двоичные деревья (АВЛ-деревья, Splay-деревья); хеш-таблицы, хеш-функции, методы открытой адресации; поиск подстрок, алгоритм Рабина-Карпа; префикс-функция, Z-функция, алгоритм Бойера-Мура.
    Лекции достаточно краткие, часто в ущерб понятности. В задачах попадаются сложный ввод/вывод и жёсткие ограничения.
  • Competitive Programmer's Core Skills (Coursera; A. Lopatin, A. Kulikov, A. Logunov, K. Simonov; 2018)
    Нет, нет и нет. Чудовищный уровень английского (у Логунова и Симонова), краткие лекции, платная практика.
  • Алгоритмы и структуры данных (1 семестр) (YouTube; П. Маврин; 2019)
  • Алгоритмы и структуры данных (2 семестр) (YouTube; П. Маврин; 2019)
  • Алгоритмы и структуры данных (3 семестр) (YouTube; П. Маврин; 2018)
  • Алгоритмы и структуры данных (4 семестр) (YouTube; П. Маврин; 2018)

Курсы КФУ

Курсы МФТИ

  • Алгоритмы: построение и анализ (YouTube; Д. Швед; 2010)
  • Алгоритмы и структуры данных (YouTube; М. Тихомиров; 2019)
  • Быстрый старт в спортивное программирование (Stepik; В. Невструев, Ф. Рухович, О. Христенко; 2020)
    Темы: асимптотические обозначения, 10^8, поиск второго максимума, префиксные суммы, бинпоиск; диапазоны целых типов, проверка на простоту, решето Эратосфена, операции по модулю, алгоритм Евклида (обычный и расширенный), быстрое возведение в степень, обратный элемент; динамическое программирование, путь в полосе и таблице, восстановление ответа, рюкзак; графы, dfs, bfs.

Курсы Самарского университета

  • Математика для олимпиад по программированию (Stepik; Н. Бондаренко; 2018)
    Темы: комбинаторика, теория чисел, геометрия, инварианты и полуинварианты, теория игр. Задачи подчас сложные.
  • Спортивное программирование (Coursera; Н. Бондаренко; 2019)
    Темы: рекурсивный перебор (размещения с повторениями, перестановки, скобочные последовательности, разбиения на слагаемые, коммивояжёр); жадные алгоритмы (размен монет, заказы с дедлайнами, выбор заявок, непрерывный рюкзак); ДП (замощение домино, путь в таблице, префиксные суммы 1d/2d, размен монет, рюкзак, НОП); битовые маски (операции, перебор подмножеств, динамика по маскам, коммивояжёр, динамика по профилю).
    Приятный курс. Тот случай, когда лекции, несмотря на краткость, очень выгодно отличаются от, например, петербургских. Есть практические задачи. Экзамен платный.

Курсы УрФУ и СКБ Контур

Курсы Яндекса и ШАД

Курсы Mail.Ru Group

  • Алгоритмы и структуры данных (Stepik; С. Мацкевич; 2015)
    Эталонный отвратительный курс. Обрывочные, сумбурные лекции, малое количество задач, малое количество тестов в задачах. Шквал гневных комментариев от слушателей.

Курсы Computer Science Center

  • Алгоритмы и структуры данных 1 (Lektorium; А. Куликов, М. Дворкин; 2011)
  • Алгоритмы и структуры данных 2 (Lektorium; А. Куликов, М. Дворкин; 2012)
  • Дополнительные главы алгоритмов (Lektorium; А. Станкевич; 2013)
    Темы: d-куча, сливаемые кучи (левосторонние, биномиальные, фибоначчиевы; тонкие, Бродала-Окасаки); splay-деревья; TANGO-деревья; (...)
  • Алгоритмы и структуры данных (Stepik/YouTube; А. Куликов; 2014)
  • Алгоритмы: теория и практика. Методы (Stepik; А. Куликов; 2015)
    Темы: числа Фибоначчи, НОД, асимптотические обозначения; жадные алгоритмы (покрытие точек отрезками, выбор заявок, максимальное независимое множество, непрерывный рюкзак, коды Хаффмана), очереди с приоритетами; divide and conquer (двоичный поиск, умножение Карацубы, умножение Штрассена), сортировки (слиянием, Ω-оценка сортировок сравнением, быстрая, порядковые статистики, кучей, подсчётом), мастер-теорема; динамическое программирование (наибольшая возрастающая подпоследовательность, редакционное расстояние, целочисленный рюкзак, перемножение матриц, независимое множество максимального веса). Разбор решений на C++, Python, Java.
  • Алгоритмы: теория и практика. Структуры данных (Stepik; А. Куликов; 2016)
    Темы: массивы, списки, стек (скобочная последовательность, стек с минимумом), очередь (очередь на двух стеках, минимум в окне), деревья, расширяющийся массив; очередь с приоритетом, куча, сортировка кучей; система непересекающихся множеств + эвристики; хеш-таблицы, разрешение коллизий, универсальное хеширование, алгоритм Рабина-Карпа; деревья поиска, АВЛ-деревья; АВЛ + count/merge/split, АВЛ + сумма на отрезке, АВЛ + неявный ключ; splay-деревья.

Вебинары Ф. В. Меньшикова (разбор задач acmp.ru)

Курсы университетов США

MIT:

Princeton:

Stanford:

UC San Diego:

  • Algorithmic Toolbox (Coursera; D. Kane, A. Kulikov, M. Levin, P. Pevzner, N. Rhodes; 2016)
    Темы: стресс-тестирование; числа Фибоначчи за O(N), алгоритм Евклида, асимптотические обозначения; жадные алгоритмы (заправка машины, покрытие точек единичными отрезками, непрерывный рюкзак); divide and conquer (двоичный поиск, умножение многочленов, мастер-теорема), сортировки (выбором, слиянием, быстрая, подсчётом, Ω-оценка сортировок сравнением); динамическое программирование (размен монет, рюкзак с повторениями, рюкзак без повторений, расстановка скобок).
  • Data Structures (Coursera; D. Kane, A. Kulikov, M. Levin, N. Rhodes; 2016)
  • Algorithms on Graphs (Coursera; D. Kane, A. Kulikov, M. Levin, N. Rhodes; 2016)
  • Algorithms on Strings (Coursera; A. Kulikov, M. Levin, P. Pevzner, N. Rhodes; 2016)
  • Advanced Algorithms and Complexity (Coursera; D. Kane, A. Kulikov, M. Levin, N. Rhodes; 2016)
  • Genome Assembly Programming Challenge (Coursera; A. Kulikov, M. Levin, P. Pevzner, N. Rhodes; 2016)
  • Data Structures (Stepik; N. Moshiri, L. Izhikevich; 2016)
    Темы: асимптотические обозначения, классы сложности, основы C++, псевдослучайные числа, битовые операции, командная строка Unix, git; массивы, связные списки, списки с пропусками, циклические массивы, АТД (дек, очередь, стек), итераторы; деревья, кучи, двоичные деревья поиска, декартовы деревья, АВЛ-деревья, красно-чёрные деревья, B-деревья, B+-деревья; графы, представление графов, BFS, DFS, алгоритм Дейкстры, MST, DSU; хеширование, хеш-таблицы, коллизии и их разрешение (открытая адресация, метод цепочек, cuckoo hashing), hash maps; множества и словари (на списках, массивах, деревьях, хеш-таблицах, борах, троичных деревьях поиска); кодирование, энтропия, сжатие Хаффмана, побитовый ввод-вывод; резюме по структурам данных.
    Курс является текстовым, но содержит колоссальное количество хорошо структурированной информации о структурах данных. Имеются тесты и задачи на программирование, оба вида заданий очень просты.

Stony Brook University:

Прочие зарубежные курсы

  • CodeChef's Indian Programming Camp 2016 (YouTube; коллектив авторов; 2016)
  • Learning Data Structures and Algorithms (O'Reilly Media; R. Stephens; 2015)
  • Working with Algorithms in Python (O'Reilly Media; G. T. Heineman; 2014)
    Курс на английском языке от соавтора книги «Algorithms in a Nutshell». Полная версия видео может быть найдена в Интернете. Слайды + живые примеры программ на Python, наглядно демонстрируется время работы.
    Кратко рассматриваются: двоичный поиск, двоичные деревья поиска, O-оценка, сортировка слиянием, быстрое возведение в степень, brute-force, kd-деревья, представление графов, DFS, Флойд, ДП (числа Фибоначчи и редакционное расстояние), куча и сортировка кучей, Дейкстра, Прим.

Курсы по языкам программирования

C++:

  • Основы разработки на C++: белый пояс (Coursera; Яндекс/МФТИ; И. Лежанкин, Е. Парамонов, А. Полднев, И. Шишков; 2017)
    Курс платный, но видео и некоторые задания бесплатны. Любопытная идея — сразу давать сложные вещи, позволяющие решать практические задачи, а внутреннее устройство разбирать после или не разбирать совсем.
    Темы: ввод-вывод, простые типы (int, double) и коллекции (vector, set, string), работа с Eclipse, операции, принципы тестирования, if, while, range-based for; функции, передача параметров, vector, map, set; алгоритмы (min, max, sort), лямбда-функции, области видимости, структуры, классы, методы, конструкторы, деструкторы; работа с файлами, перегрузка операторов; исключения.
  • Основы разработки на C++: жёлтый пояс (Coursera; Яндекс/МФТИ; И. Лежанкин, Е. Парамонов, А. Полднев, И. Шишков; 2017)
    Темы: целочисленные типы, перечисления, кортежи, пары, шаблоны функций; unit-тестирование, разработка фреймворка для тестирования на assert'ах; заголовочные файлы, #include, многофайловые проекты; итераторы, использование итераторов в алгоритмах, дек, очередь, стек, алгоритмы поиска; наследование, protected, порядок инициализации, полиморфизм, виртуальные методы, shared_ptr.
  • Основы разработки на C++: красный пояс (Coursera; Яндекс/МФТИ; А. Полднев, И. Шишков; 2018)
    Темы: макросы, #, __FILE__, __LINE__, шаблоны классов, вывод шаблонных типов; простой профайлер, endl vs \n, cin.tie(0), O-оценка, примерная оценка времени работы, амортизированная сложность; стек и куча, указатели, new и delete, арифметика указателей, простой vector, константность указателей; инвалидация, устройство vector, deque, list, array, string_view; move, конструктор копирования (перемещения) и оператор (перемещающего) присваивания, move-итераторы, некопируемые типы, copy elision, async, future, гонки, mutex, lock_guard.
  • Основы разработки на C++: коричневый пояс (Coursera; Яндекс/МФТИ; А. Зобнин, М. Матросов, А. Полднев, Н. Субоч, И. Шишков; 2018)
    Темы: unordered_set/map, сравнение с set/map, пользовательские типы в set и unordered_set, выбор хеш-функции, extract, merge; пространства имён, using, this, присваивание себе; преимущества const, IILE, mutable, утечки памяти, unique_ptr; shared_ptr, устройство unique_ptr и shared_ptr, weak_ptr, deleter, жизненный цикл объекта, RAII; рефакторинг функций, способы передачи параметров, span, ranges, способы возврата значений, optional, variant, рефакторинг конструкторов.
  • Основы разработки на C++: чёрный пояс (Coursera; Яндекс/МФТИ; А. Зобнин, М. Матросов, А. Полднев, Н. Субоч, И. Шишков; 2019)
    Темы: отладочные #define, санитайзер, undefined behavior; бинарная сериализация, protobuf; выравнивание, порядок байтов, #pragma pack, битовые поля, vptr, таблица виртуальных методов; placement new, operator new, std::uninitialized_*, реализация std::vector, variadic templates, std::forward; ANTLR. Очень тяжёлые задачи (интерпретатор Mython, транспортный справочник в 15 частях, электронная таблица).

Python