
Топикстартер
Член клуба
[Otus] Алгоритмы и структуры данных
- Ссылка на картинку
Для кого этот курс?
Для junior-программистов: сможете усовершенствовать фундаментальные навыки программирования и претендовать на позиции уровня middle в крупных компаниях
Для бэкенд- и фронтенд-разработчиков на любых языках программирования: прокачаете алгоритмическое мышление, узнаете, как увеличивать производительность программ, сможете претендовать на позиции уровня senior
Необходимые знания
Начальный или средний уровень программирования на любом языке
Элементарная математика на уровне средней школы
Минимальное знание алгоритмов и структур данных
Что вам даст этот курс?
В программу курса «Алгоритмы и структуры данных» входят самые известные прикладные алгоритмы (например, жадные алгоритмы и бинарный поиск): их должны знать все претенденты на позиции middle и senior в крупных IT-компаниях. Также мы разберём способы решения задач по программированию олимпиадного уровня.
Вы изучите:
Простые алгоритмы и базовые структуры данных
Алгоритмы сортировки
Деревья поиска
Хеш-таблицы
Теорию графов
Алгоритмы на строках
Динамическое программирование
Олимпиадное программирование
Вероятностные алгоритмы
После обучения
Сможете повысить производительность программ и улучшить качество кода
Приобретёте опыт реализации классических алгоритмов
Поймёте, как создавать собственные алгоритмы для решения бизнес-задач
Программа
Простые алгоритмы и базовые структуры данных
В первом модуле мы научимся решать комбинаторные задачи полным перебором с использованием вложенных циклов и рекурсии, сравним эффективности различных алгебраических алгоритмов, поработаем с битовой арифметикой на примере шахматной доски, а также напишем реализацию базовых структур данных, которые вы будете использовать при составлении программ в рамках этого курса.
Тема 1: Циклы и рекурсия / ДЗ
Тема 2: Как выполнять домашние задания / ДЗ
Тема 3: Алгебраические алгоритмы / ДЗ
Тема 4: Базовые структуры данных / ДЗ
Тема 5: Битовая арифметика / ДЗ
Алгоритмы сортировки
В этом модуле мы рассмотрим самые разные алгоритмы сортировки данных, начиная самыми медленными и заканчивая эффективными алгоритмами, которые работают за линейное время, также мы напишем алгоритм внешней сортировки, когда все данные не могут быть загружены в память программы. На последнем занятии мы рассмотрим алгоритм нахождения порядковых статистик за линейное время.
Тема 1: Простые сортировки / ДЗ
Тема 2: Пирамидальная сортировка / ДЗ
Тема 3: Быстрая и внешняя сортировка / ДЗ
Тема 4: Линейная сортировка / ДЗ
Деревья поиска
В этом модуле мы окажемся в заповеднике деревьев поиска, познакомимся с их разновидностями, особенностями, правилами добавления и удаления элементов, методами балансировки на больших и малых поворотах. Вы узнаете про АВЛ и красно-чёрные деревья, расширяющиеся и рандомизированные деревья, о сильноветвящихся В-деревьях и про дерево отрезков, которое помогает быстро и просто вычислять ассоциативную функцию на любом отрезке массива.
Тема 1: Двоичные деревья поиска / ДЗ
Тема 2: Сбалансированные двоичные деревья поиска / ДЗ
Тема 3: N-ричные B и В+ деревья поиска
Тема 4: Красно-чёрные деревья
Хеш-таблицы
В этом модуле мы познакомимся с хэшированием, научимся создавать хэш-функции, вычислять хэш-значения для разных ключей-объектов, добавлять и удалять элементы в хэш-таблицу, рассмотрим различные способы разрешения коллизий. Мы также узнаем, что такое универсальное хэширование и как сэкономить время и место, используя идеальное хэширование для статического набора ключей.
Тема 1: Хэш-функции и хэш-таблицы / ДЗ
Тема 2: Разрешение коллизий
Тема 3: Универсальное и идеальное хэширование
Тема 4: Префиксное дерево / ДЗ
Тема 5: Зачётный англо-русский словарь
Теория графов
В этом модуле мы повторим основные понятия и принципы теории графов, разберём алгоритмы поиска вширь и вглубь, топологической сортировки вершин и поиск минимального скелета, изучим несколько алгоритмов поиска кратчайшего пути и решения задачи коммивояжера. На отдельном занятии мы рассмотрим алгоритмы работы с виртуальной памятью.
Тема 1: Определения и представления / ДЗ
Тема 2: Поиск и сортировка / ДЗ
Тема 3: Минимальный скелет / ДЗ
Тема 4: Кратчайший путь / ДЗ
Тема 5: Задача коммивояжёра
Тема 6: Управление памятью
Алгоритмы на строках
В этом модуле мы рассмотрим разные алгоритмы поиска шаблона в тексте, от самых примитивных до более сложных с построением бора для конечного недетерминированного автомата с возможностью поиска нескольких шаблонов за один подход. В конце модуля мы рассмотрим три алгоритма сжатия данных, а также введение в теорию криптоанализа на конкретных примерах де/шифрования, обмена ключами, подбора паролей.
Тема 1: Алгоритм Бойера-Мура / ДЗ
Тема 2: Алгоритм Ахо-Корасик
Тема 3: Алгоритм Кнута-Морриса-Пратта / ДЗ
Тема 4: Алгоритмы сжатия / ДЗ
Тема 5: Шифрование данных
Динамическое программирование
В этом модуле мы рассмотрим различные способы кэширования в некоторых языках программирования, познакомимся с методом динамического программирования и решим несколько задач.
Тема 1: Алгоритмы кэширования
Тема 2: Динамическое программирование / ДЗ
Олимпиадное программирование
В этом модуле мы решим несколько задач различной сложности на сайте leetcode.com. Задачи решаем разными способами, на нескольких языках программирования.
Тема 1: Сложная задача
Тема 2: Dancing Links
Вероятностные алгоритмы
Рассматриваем и решаем задачи из области больших данных вероятностными методами с использованием различных структур данных.
Тема 1: Фильтр Блума
Тема 2: Алгоритмы MinHash, SimHash
Тема 3: Алгоритмы HyperLogLog, Count-Min Sketch / ДЗ
Проектная работа
Заключительный месяц курса посвящен проектной работе. Свой проект — это то, что интересно писать слушателю. То, что можно создать на основе знаний, полученных на курсе. При этом не обязательно закончить его за месяц. В процессе написания по проекту можно получить консультации преподавателей.
Тема 1: Выбор темы и организация проектной работы
Тема 2: Консультация по проектам и домашним заданиям
Тема 3: Защита проектных работ
Тема 4: Подведение итогов курса
Для junior-программистов: сможете усовершенствовать фундаментальные навыки программирования и претендовать на позиции уровня middle в крупных компаниях
Для бэкенд- и фронтенд-разработчиков на любых языках программирования: прокачаете алгоритмическое мышление, узнаете, как увеличивать производительность программ, сможете претендовать на позиции уровня senior
Необходимые знания
Начальный или средний уровень программирования на любом языке
Элементарная математика на уровне средней школы
Минимальное знание алгоритмов и структур данных
Что вам даст этот курс?
В программу курса «Алгоритмы и структуры данных» входят самые известные прикладные алгоритмы (например, жадные алгоритмы и бинарный поиск): их должны знать все претенденты на позиции middle и senior в крупных IT-компаниях. Также мы разберём способы решения задач по программированию олимпиадного уровня.
Вы изучите:
Простые алгоритмы и базовые структуры данных
Алгоритмы сортировки
Деревья поиска
Хеш-таблицы
Теорию графов
Алгоритмы на строках
Динамическое программирование
Олимпиадное программирование
Вероятностные алгоритмы
После обучения
Сможете повысить производительность программ и улучшить качество кода
Приобретёте опыт реализации классических алгоритмов
Поймёте, как создавать собственные алгоритмы для решения бизнес-задач
Программа
Простые алгоритмы и базовые структуры данных
В первом модуле мы научимся решать комбинаторные задачи полным перебором с использованием вложенных циклов и рекурсии, сравним эффективности различных алгебраических алгоритмов, поработаем с битовой арифметикой на примере шахматной доски, а также напишем реализацию базовых структур данных, которые вы будете использовать при составлении программ в рамках этого курса.
Тема 1: Циклы и рекурсия / ДЗ
Тема 2: Как выполнять домашние задания / ДЗ
Тема 3: Алгебраические алгоритмы / ДЗ
Тема 4: Базовые структуры данных / ДЗ
Тема 5: Битовая арифметика / ДЗ
Алгоритмы сортировки
В этом модуле мы рассмотрим самые разные алгоритмы сортировки данных, начиная самыми медленными и заканчивая эффективными алгоритмами, которые работают за линейное время, также мы напишем алгоритм внешней сортировки, когда все данные не могут быть загружены в память программы. На последнем занятии мы рассмотрим алгоритм нахождения порядковых статистик за линейное время.
Тема 1: Простые сортировки / ДЗ
Тема 2: Пирамидальная сортировка / ДЗ
Тема 3: Быстрая и внешняя сортировка / ДЗ
Тема 4: Линейная сортировка / ДЗ
Деревья поиска
В этом модуле мы окажемся в заповеднике деревьев поиска, познакомимся с их разновидностями, особенностями, правилами добавления и удаления элементов, методами балансировки на больших и малых поворотах. Вы узнаете про АВЛ и красно-чёрные деревья, расширяющиеся и рандомизированные деревья, о сильноветвящихся В-деревьях и про дерево отрезков, которое помогает быстро и просто вычислять ассоциативную функцию на любом отрезке массива.
Тема 1: Двоичные деревья поиска / ДЗ
Тема 2: Сбалансированные двоичные деревья поиска / ДЗ
Тема 3: N-ричные B и В+ деревья поиска
Тема 4: Красно-чёрные деревья
Хеш-таблицы
В этом модуле мы познакомимся с хэшированием, научимся создавать хэш-функции, вычислять хэш-значения для разных ключей-объектов, добавлять и удалять элементы в хэш-таблицу, рассмотрим различные способы разрешения коллизий. Мы также узнаем, что такое универсальное хэширование и как сэкономить время и место, используя идеальное хэширование для статического набора ключей.
Тема 1: Хэш-функции и хэш-таблицы / ДЗ
Тема 2: Разрешение коллизий
Тема 3: Универсальное и идеальное хэширование
Тема 4: Префиксное дерево / ДЗ
Тема 5: Зачётный англо-русский словарь
Теория графов
В этом модуле мы повторим основные понятия и принципы теории графов, разберём алгоритмы поиска вширь и вглубь, топологической сортировки вершин и поиск минимального скелета, изучим несколько алгоритмов поиска кратчайшего пути и решения задачи коммивояжера. На отдельном занятии мы рассмотрим алгоритмы работы с виртуальной памятью.
Тема 1: Определения и представления / ДЗ
Тема 2: Поиск и сортировка / ДЗ
Тема 3: Минимальный скелет / ДЗ
Тема 4: Кратчайший путь / ДЗ
Тема 5: Задача коммивояжёра
Тема 6: Управление памятью
Алгоритмы на строках
В этом модуле мы рассмотрим разные алгоритмы поиска шаблона в тексте, от самых примитивных до более сложных с построением бора для конечного недетерминированного автомата с возможностью поиска нескольких шаблонов за один подход. В конце модуля мы рассмотрим три алгоритма сжатия данных, а также введение в теорию криптоанализа на конкретных примерах де/шифрования, обмена ключами, подбора паролей.
Тема 1: Алгоритм Бойера-Мура / ДЗ
Тема 2: Алгоритм Ахо-Корасик
Тема 3: Алгоритм Кнута-Морриса-Пратта / ДЗ
Тема 4: Алгоритмы сжатия / ДЗ
Тема 5: Шифрование данных
Динамическое программирование
В этом модуле мы рассмотрим различные способы кэширования в некоторых языках программирования, познакомимся с методом динамического программирования и решим несколько задач.
Тема 1: Алгоритмы кэширования
Тема 2: Динамическое программирование / ДЗ
Олимпиадное программирование
В этом модуле мы решим несколько задач различной сложности на сайте leetcode.com. Задачи решаем разными способами, на нескольких языках программирования.
Тема 1: Сложная задача
Тема 2: Dancing Links
Вероятностные алгоритмы
Рассматриваем и решаем задачи из области больших данных вероятностными методами с использованием различных структур данных.
Тема 1: Фильтр Блума
Тема 2: Алгоритмы MinHash, SimHash
Тема 3: Алгоритмы HyperLogLog, Count-Min Sketch / ДЗ
Проектная работа
Заключительный месяц курса посвящен проектной работе. Свой проект — это то, что интересно писать слушателю. То, что можно создать на основе знаний, полученных на курсе. При этом не обязательно закончить его за месяц. В процессе написания по проекту можно получить консультации преподавателей.
Тема 1: Выбор темы и организация проектной работы
Тема 2: Консультация по проектам и домашним заданиям
Тема 3: Защита проектных работ
Тема 4: Подведение итогов курса
Показать больше
Зарегистрируйтесь
, чтобы посмотреть авторский контент.