ТОП-16 курсов по алгоритмам и структурам данных в 2025 году: обучение онлайн. Платные и бесплатные. Рейтинг, сравнение, стоимость.

Стоимость: цену уточняйте на сайте.
  • Длительность — 6 месяцев
  • Онлайн в удобное время
  • Обучение на практике
  • Доступ к курсу навсегда.

Кому подойдёт этот курс:

  • Junior-разработчикам
    Вы научитесь применять алгоритмы и создавать новые, повысите свой профессиональный уровень и сможете устроиться в крупную компанию.
  • Middle-разработчикам
    Вы сможете участвовать в сложных проектах, связанных с высоконагруженными системами и обработкой больших объёмов данных.
  • Тем, кто готовится к олимпиадам
    Вы освоите базовые алгоритмы и структуры данных и сможете применять их для решения олимпиадных задач.

Чему вы научитесь:

  • Освоите базовые алгоритмы
    Сможете реализовывать базовые алгоритмы на массивах и разные виды алгоритмов бинарного поиска. Познакомитесь с принципами построения хэш-таблиц и способами решения проблемы коллизий хэш-функций.
  • Работать со структурами данных
    Научитесь работать с различными структурами данных: связными списками, очередями, стэками, двусторонними очередями (деками), кучами, бинарными, B-, R- и суффиксными деревьями, а также различными видами графов.
  • Познакомитесь с вариантами алгоритмов
    Научитесь реализовывать алгоритмы сортировки SelectionSort, QuickSort и MergeSort, сможете создавать и применять рекурсивные и жадные алгоритмы.
  • Поймете, как оценивать сложность алгоритмов
    Научитесь оценивать сложность различных типов алгоритмов по времени и памяти. Сможете оценивать программный код и находить способы его оптимизации и ускорения.

Программа

Вас ждут онлайн-лекции и практические задания.
18 тематических модулей, 103 онлайн-урока

  1. Введение в алгоритмы
    Познакомитесь со структурой курса, с понятиями алгоритма и структуры данных, а также с простейшими алгоритмами на массивах.
  2. Алгоритм бинарного поиска
    Узнаете, что такое бинарный поиск, как он работает, почему и насколько он эффективнее простого поиска перебором, а также о его возможностях и тонкостях.
  3. Хеш-таблицы и хеш-функции
    Изучите принципы построения хеш-таблиц и особенности работы с ними, познакомитесь с понятием хеш-функции, проблемой их коллизий, а также решением этой проблемы.
  4. Связные списки
    Узнаете, по каким принципам строятся и как работают односвязный и двусвязный списки, чем они лучше и чем хуже массивов.
  5. Стек и очередь
    Познакомитесь со структурами данных — стек, очередь и дек (двусвязная очередь), узнаете принципы их построения и работы.
  6. Алгоритмы сортировки
    Узнаете о принципах и особенностях популярных алгоритмов сортировки — SelectionSort, QuickSort и MergeSort. Научитесь оценивать на их примерах сложность алгоритмов по времени и памяти.
  7. Рекурсивные алгоритмы
    Научитесь создавать и применять рекурсивные алгоритмы, а также познакомитесь с принципами оценки их сложности.
  8. Сложность алгоритмов и О-нотация
    Узнаете, что такое О-нотация, научитесь оценивать сложность алгоритмов и различать их по памяти и времени.
  9. Жадные алгоритмы
    Познакомитесь с принципами работы жадных алгоритмов на примере итераций с двумя и тремя индексами, а также алгоритмов на строках.
  10. Деревья. Двоичные деревья поиска
    Узнаете о принципах работы и особенностях деревьев на примере бинарного дерева. Познакомитесь с алгоритмами поиска, добавления и удаления элементов из него.
  11. Деревья. Обход в ширину и глубину
    Познакомитесь со сложными типами деревьев, которые применяют на практике. Узнаете, как они устроены, и научитесь с ними работать.
  12. Куча (Heap)
    Изучите основные принципы балансировки деревьев. Познакомитесь со структурой данных «куча».
  13. Бор. Суффиксное дерево. B-дерево
    Узнаете, что такое суффиксные деревья и как они применяются в алгоритмах поиска и сжатия.
  14. Графы и рекурсивные алгоритмы
    Узнаете, какие бывают графы, что такое ребро, вершина, взвешенный и ориентированный граф.
  15. Топологическая сортировка и неочевидные применения графов
    Научитесь решать задачи обхода графов в ширину и в глубину и поиска кратчайшего пути. Познакомитесь с принципами топологической сортировки и другими задачами, которые решают на графах.
  16. Алгоритмы сжатия информации
    Изучите алгоритмы сжатия информации без потерь. Узнаете, по каким принципам работают современные алгоритмы архивации и какие алгоритмы используются для сжатия аудиофайлов и изображений.
  17. Битовые алгоритмы
    Научитесь работать с основными битовыми операциями и алгоритмами, которые часто применяют на практике. Изучите маски и битовые индексы.
  18. Алгоритмы хэширования. Криптографические алгоритмы.
    Изучите принципы работы алгоритма расчёта контрольных сумм CRC и алгоритмов хэширования MD5 и SHA. Познакомитесь с алгоритмами симметричного и асимметричного шифрования, а также популярными алгоритмами RSA и AES.
Стоимость: 48 400 ₽ или рассрочка на 12 месяцев — 4 033 ₽ / мес

После обучения на курсе вы:

  • Посмотрите по-новому на знакомые алгоритмы и структуры данных, освежите знания
  • Научитесь воспроизводить с нуля любой алгоритм и писать собственные
  • Поймете, как увеличивать производительность кода благодаря пониманию временной сложности и затратам по памяти
  • Сможете сравнивать структуры данных и выбирать оптимальный вариант для конкретной задачи.

Кому подойдет курс:

  • Начинающим разработчикам, чтобы заложить фундамент для успешных технических собеседований в сильные компании
  • Разработчикам, которые стремятся на уровень выше — на позиции Middle и Senior. Получите выгодное преимущество на фоне других кандидатов
  • Тем, кто хочет браться за сложные проекты и работать в IT-гигантах, и пройти многоступенчатый жесткий отбор
  • Разработчикам, которые хотят освежить знания, чтобы лучше решать текущие задачи.

Что вас ждет на курсе:

  1. Фундаментальная теоретическая база
    Чтобы научиться писать собственные алгоритмы, нужно знать досконально как они работают
  2. Много практики и решения алгоритмических задач
    Решаем упражнения и задачи различной сложности, в том числе олимпиадные и бизнес-задачи
  3. Домашние задания и обратная связь
    Будете самостоятельно решать задачи с установленным дедлайном и получать комментарии ментора. На онлайн-вебинарах сможете задавать вопросы преподавателю.
  4. Прокачаетесь в математике
    Математика для программистов нужна в серьезных проектах и нетривиальных задачах
  5. Подготовка к техническому собеседованию
    Во время курса вы потренируетесь в решении реальных задач с технических собеседований.

Краткая программа курса:

  1. Линейные структуры данных
  • Введение в алгоритмы и структуры данных
  • Определение асимптотики, оценка времени работы программы, оценка затраченной памяти
  • Односвязные и двусвязные списки, работа с ними
  • Практика — Реализация игрушечного менеджера памяти при помощи LRU и LFU кэша.
  1. Рекурсия и комбинаторика
  • Рекурсивные переборы, переборы всех комбинаторных объектов
  • Перестановки, разбиение на слагаемые, строки Фибоначчи
  • Перебор битовых масок
  • Практика — Упорядочивание данных во внешней памяти и поиск по ним. Программа для решения кроссвордов судоку.
  1. Сортировки и поиск
  • Сортировки, использование встроенной функции sort в языках
  • Алгоритм бинарного поиска. Бинарный поиск по ответу
  • Практика — Сортировка больших файлов с данными, потенциально не помещающихся в оперативную память.
  1. Хеширование
  • Принцип хеширования. Парадокс дней рождения. Известные алгоритмы хеширования.
  • Полиномиальное хеширование
  • Алгоритмы на строках. Хеш-таблица, встроенная реализация, собственная реализация
  • Практика — Генератор magnet-ссылок для файлов и папок.
  1. Графы
  • Графы. Представление графов и алгоритм DFS
  • Графы. Задача о поиске кратчайшего пути в графе, алгоритм BFS
  • Алгоритм Дейкстры
  • Практика — Travel planner — постройка кратчайшего маршрута для путешествия.
  1. Деревья
  • Графы. Представление деревьев. Алгоритмы на деревьях
  • Кучи
  • Бинарное дерево поиска, работа с ним
  • Красно-черное дерево, AVL-дерево
  • Деревья Хаффмана
  • Практика — Архиватор файлов.
  1. Динамическое программирование
  • Задачи динамического программирования. Базовые применения. Префиксные суммы
  • Задачи динамического программирования. Сложные задачи. Задача о рюкзаке
  • Конечные автоматы. Регулярные выражения
  • Практика — Реализация алгоритма Liquid Resize.
  1. Карьерный блок
  • Фишки прохождения технических собеседований в крупные IT-компании
  • Mock-интервью «Собеседование в Amazon».

Для кого этот курс?

Для бэкенд-разработчиков и системных программистов, которые пишут софт и приложения, в т.ч. мобильные. В первую очередь курс призван помочь Junior-специалистам усилить свои фундаментальные навыки программирования.

Особенности курса:

  • Интерактивные вебинары. Преподаватели используют современные педагогические методики, чтобы вовлечь студентов в тему и помочь им лучше усвоить знания. Каждое занятие — это заряд алгоритмической энергии, который поможет вам в интенсивном обучении и выполнении самостоятельной работы, а разнообразие тем позволит сохранить запал до конца курса.
  • Глубокое погружение в темы. Каждый алгоритм вы изучите «на пальцах», на конкретных визуальных примерах, исследуете разные способы его реализации. Существует тысячи и тысячи самых разных алгоритмов, на изучение которых можно потратить многие годы. Нет смысла изучать их все сразу, мы ценим ваше время, поэтому отобрали самые важные, интересные и популярные алгоритмы. Вы пройдете такие актуальные темы как битовая арифметика, рекурсия, динамическое программирование, теория графов и др. Модуль 9 посвящен продвинутым алгоритмическим трендам, которые рассчитаны на опытных специалистов.
  • Можно проходить курс на любом языке программирования. На вебинарах преподаватели интерактивно рисуют и демонстрируют, как работает каждый алгоритм, некоторые из них пишем с нуля прямо на уроке, используя C#, Java или Python, после чего вы сможете самостоятельно написать этот алгоритм на вашем любимом языке программирования. Благодаря подробным объяснениям и визуализации, идея каждого алгоритма станет понятна.
  • Свое приложение для автопроверки. Вы напишете свою простую систему тестирования, с помощью которой сможете проверять часть заданий по заготовленным преподавателями тестам.
  • Проектная работа для портфолио. К концу курса вы напишете свое приложение и сможете представлять его на собеседовании. Многие студенты придумывают и реализуют интересные проекты: распознавание рукописных цифр, генерация прохождения лабиринтов, решение заданий судоку и так далее.

Программа обучения

Модуль 1. Простые алгоритмы и базовые структуры данных

  • Тема 1. Циклы и рекурсия
  • Тема 2. Как выполнять домашние задания
  • Тема 3. Алгебраические алгоритмы
  • Тема 4. Битовая арифметика
  • Тема 5. Базовые структуры данных

Модуль 2. Алгоритмы сортировки

  • Тема 6. Простые сортировки
  • Тема 7. Пирамидальная сортировка
  • Тема 8. Быстрая и внешняя сортировка
  • Тема 9. Линейная сортировка

Модуль 3. Деревья поиска

  • Тема 10. Двоичные деревья поиска АВЛ
  • Тема 11. Красно-чёрные деревья
  • Тема 12. Другие варианты деревьев поиска

Модуль 4. Хеш-таблицы

  • Тема 13. Хэш-функции и хэш-таблицы
  • Тема 14. Разрешение коллизий
  • Тема 15. Универсальное и идеальное хэширование

Модуль 5. Теория графов

  • Тема 16. Определения и представления
  • Тема 17. Поиск и сортировка
  • Тема 18. Минимальный скелет
  • Тема 19. Кратчайший путь
  • Тема 20. Управление памятью
  • Тема 21. Задача коммивояжёра

Модуль 6. Алгоритмы на строках

  • Тема 22. Алгоритм Бойера-Мура
  • Тема 23. Алгоритм Ахо-Корасика
  • Тема 24. Алгоритм Кнута-Морриса-Пратта
  • Тема 25. Алгоритмы сжатия
  • Тема 26. Шифрование данных

Модуль 7. Динамическое программирование

  • Тема 27. Динамическое программирование
  • Тема 28. Алгоритмы кэширования

Модуль 8. Олимпиадное программирование

  • Тема 29. Сложная задача
  • Тема 30. Dancing Links

Модуль 9. Вероятностные алгоритмы

  • Тема 31. Фильтр Блума
  • Тема 32. Алгоритмы MinHash, SimHash
  • Тема Алгоритмы HyperLogLog, Count-Min Sketch

Модуль 10. Проектная работа

  • Тема 34. Выбор темы и организация проектной работы
  • Тема 35. Консультация по проектам и домашним заданиям
  • Тема 36. Защита проектных работ
  • Тема 37. Подведение итогов курса.

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

  • написать кастомную хэш-таблицу
  • реализовать свой менеджер памяти с garbage collector
  • реализовать B-tree индекс для СУБД
  • любая тема на выбор студента, связанная с продвинутыми алгоритмами и структурами данных.

После обучения вы:

  1. получите материалы по всем пройденным занятиям (видеозаписи вебинаров, выполненные домашние задания, выпускной проект)
  2. сможете писать рациональный и хорошо структурированный код
  3. получите сертификат об окончании курса
  4. приобретёте навыки работы с алгоритмами и структурами данных, которые необходимы при реализации сложных проектов в крупных компаниях
  5. получите приглашение пройти собеседование в компаниях-партнёрах (в случае успешного обучения).

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

Что вас ждёт на курсе:

  • Это курс о базовых алгоритмах и структурах данных. Благодаря нему вы научитесь быстрее писать чистый код, видеть разные варианты решения задачи и сравнивать их по эффективности.
  • Если вы планируете менять место работы, знание алгоритмов пригодится на собеседованиях — в программу курса входит пробное алгоритмическое собеседование с обратной связью. Кроме того, вы получите консультацию или сопровождение при поиске работы.
  • Курс рассчитан на 4 месяца при нагрузке примерно 10 часов в неделю, но вы можете проходить его быстрее — новые уроки будут доступны вам по мере изучения материала.

Программа обучения:

  1. Введение в алгоритмы
    Понятие сложности алгоритма. O-нотация. Оценка времени исполнения программы.
  2. Основные структуры данных
    Массив, связный список, стек, очередь. Сложность операций вставки, поиска и удаления. Представление данных в памяти. Пространственная сложность алгоритма.
  3. Рекурсия
    Понятие рекурсии. Принцип «разделяй и властвуй». Бинарный поиск.
  4. Сортировки
    Квадратичные сортировки. Сортировка слиянием. Быстрая сортировка. Линейная сортировка подсчётом.
  5. Хеш-функции и хеш-таблицы
    Абстракция отображения. Понятие и свойства хеш-функции, примеры. Структура данных хеш-таблица. Коллизии и способы их разрешения.
  6. Деревья
    Структура данных дерево. Сбалансированные деревья поиска. Структура данных куча. Пирамидальная сортировка.
  7. Графы
    Определение графа, способы представления в памяти. Обход графа в глубину и в ширину. Компоненты связности. Алгоритмы поиска кратчайшего пути. Минимальное остовное дерево.
  8. Динамическое программирование
    Определение, одномерные и двумерные задачи. Динамическое программирование по подотрезкам. Динамическое программирование по подмножествам.
  9. Жадные алгоритмы
    Понятие жадного алгоритма, область применения. Примеры, доказательство корректности алгоритма.
  10. Пробное алгоритмическое собеседование
    Алгоритмическое интервью один-на-один с наставником, максимально приближённое к настоящему. По итогам наставник даст обратную связь.
  11. Алгоритмы на строках
    Префикс-функция. Подстроки, префиксы и суффиксы. Поиск шаблона в строке. Наивный алгоритм. Структура данных бор.
Стоимость: нет информации

Алгоритмы и структуры данных являются основой для любой программной системы: распределенной системы, мобильного приложения, базы данных, web приложения. В данном курсе студент освоит основные структуры данных и алгоритмы, которые послужат фундаментом для всех дальнейших знаний в области компьютерных наук и программной инженерии.

Цель освоения дисциплины:

  • освоить основные понятия о структурах данных
  • научиться выполнять асимптотический анализ сложности алгоритмов
  • научиться программировать на языке С++
  • узнать устройство элементарных структур данных (список, стек, очередь и других)
  • узнать свойства хэш функций и хэш таблиц
  • узнать виды деревьев (структуры данных) и их разновидности
  • осведомиться о современных тенденциях в разработке структур данных
  • формирование у студентов профессиональных компетенций, связанных с использованием теоретических знаний в области теории алгоритмов и теории сложности вычислений
  • получение практических навыков в области разработки ресурсно-эффективных алгоритмов на основе теоретического анализа
  • развитие умений, основанных на полученных теоретических знаниях, позволяющих на творческом и репродуктивном уровне применять и создавать эффективные алгоритмы для решения задач обработки информации
  • получение студентам навыков самостоятельной исследовательской работы, предполагающей изучение специфических методов анализа алгоритмов, инструментов и средств, необходимых для решения актуальной, в аспекте программной инженерии, задачи выбора рациональных алгоритмов, в зависимости от особенностей применения разрабатываемых программ.

Планируемые результаты обучения:

  • знать основы асимптотического анализа сложности алгоритмов
  • знать структуры данных стек, список, очередь и другие
  • знать принципы хэширования и хэш таблиц
  • знать древовидные структуры данных
  • ориентироваться в современных тенденциях разработки структур данных
  • знать дополнительные структуры данных (опционально)
  • Знать методы анализа алгоритмов в итерационной и рекурсивной реализации
  • Знать классификацию алгоритмов
  • Уметь проводить анализ алгоритмов, оценивать компьютерные алгоритмы с использованием комплексных критериев качества, в том числе оценивать ресурсную эффективность алгоритмов
  • Уметь оценивать сложность алгоритмов
  • Уметь оценивать временную эффективность алгоритмов
  • Знать основные алгоритмы………
  • Знать метод декомпозиции и метод динамического программирования как методы разработки эффективных алгоритмов
  • Знать основные алгоритмы.

Содержание учебной дисциплины:

  1. Основные понятия
  2. Элементарные структуры данных и С++
  3. Битовые карты (маски)
  4. Хэш таблицы
  5. Деревья
  6. Растровые структуры данных
  7. Пространственные структуры данных
  8. Параллельные структуры данных
  9. Распределенные структуры данных
  10. Современные тенденции в разработке структур данных
  11. Дополнительные главы
  12. Понятие алгоритма. Формализм Э.Л. Поста. Алгоритм как финитный 1-процесс
  13. Основная терминология и обозначения в анализе ресурсной эффективности алгоритмов
  14. Классификация алгоритмов по трудоёмкости
  15. Анализ NPR алгоритмов методом классов входных данных
  16. Метод вероятностного анализа для получения трудоёмкости в среднем
  17. Сравнительный анализ алгоритмов по трудоёмкости и решение задачи рационального выбора
  18. Сложность алгоритмов. Теоретическая нижняя граница сложности задачи
  19. Введение в теорию сложности вычислений. Основные сложностные классы задач
  20. Временная эффективность и особенности перехода к временным оценкам
  21. Рекурсивные алгоритмы — Особенности реализации и анализа
  22. Разработка алгоритмов методом декомпозиции и особенности его применения
  23. Анализ рекурсивных алгоритмов методом подсчёта вершин дерева рекурсии
  24. Рекурсивный алгоритм возведения в степень
  25. Задачи умножения длинных целых чисел и умножения матриц
  26. Динамическое программирование. Задача оптимальной упаковки (задача о рюкзаке)
  27. Рекурсивный алгоритм метода динамического программирования для задачи упаковки.
Стоимость: нет информации

Курс знакомит слушателей с базовыми структурами данных и алгоритмами, знание которых необходимо для эффективного решения разнообразных задач программирования.

Курс посвящен изучению базовых алгоритмов и структур данных, знание которых необходимо для эффективного решения разнообразных задач программирования. Рассматриваются различные алгоритмы сортировки, линейные структуры данных, такие как очереди и списки, алгоритмы и структуры данных для эффективного поиска и хранения информации — сбалансированные деревья поиска и хеши, а также алгоритмы поиска подстрок.

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

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

Прохождение курса «Алгоритмы программирования и структуры данных» позволит существенно повысить продуктивность и конкурентоспособность слушателей при разработке программного обеспечения.

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

  1. Оценка времени работы алгоритмов
  2. Алгоритмы сортировки, основанные на сравнении (сортировка слиянием, быстрая сортировка, нижняя оценка на время работы алгоритмов сортировки)
  3. Алгоритмы сортировки с линейным временем выполнения (сортировка подсчетом, цифровая сортировка, карманная сортировка)
  4. Элементарные структуры данных (стек, очередь, связанные списки)
  5. Алгоритмы, основанные на двоичной куче (сортировка кучей, очередь с приоритетами)
  6. Введение в алгоритмы поиска (двоичный поиск в отсортированном массиве, двоичное дерево поиска)
  7. Сбалансированные деревья поиска (обзор сбалансированных деревьев, АВЛ-дерево, Splay-дерево)
  8. Хеширование (хеш-таблицы с закрытой и открытой адресацией)
  9. Введение в поиск подстрок (простейший алгоритм поиска подстрок, алгоритм Рабина-Карпа)
  10. Поиск подстрок (алгоритм Кнута-Морриса-Пратта, Z-функция, алгоритм Бойера-Мура)

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

Результаты обучения:

  • Умение анализировать и реализовывать базовые алгоритмы программирования и структуры данных
  • Навыки проектирования и разработки средств реализации прикладных информационных технологий
  • Навыки разработки алгоритмов для проведения экспериментальных исследований в области информатики.

Фундаментальный курс «прокачивает» базовые знания computer science. Дает понимание, как работает язык программирования и действуют применяемые в коде команды и решения. На примере языка С студенты смогут «пощупать» механизмы, которые лежат в основе современных фреймворков. Курс дает знания, отличающие программиста от «юзера», пишущего код.

Чему Вы научитесь:

  • Владеть основами программирования на языке C;
  • Знать структуры данных и алгоритмы, которые лежат в основе их работы;
  • Владеть общими подходами и полезными методиками для решения сложных задач;
  • использовать инструменты оценки сложности решаемых задач;
  • Создавать консольные программы на языке C в среде разработки QT;
  • Создавать программы, используя собственные алгоритмы;
  • Создавать собственные структуры данных: стеки, списки, деревья и др.;
  • Оценивать производительность программ;
  • Использовать «незащищенный» режим работы с памятью, основанный на указателях;
  • Динамически выделять и освобождать память;
  • Использовать рекурсию.

Что Вы получите:

  • Видеозаписи всех онлайн-занятий
  • Методички и практические задания
  • Общение с одногруппниками
  • Сертификат об окончании обучения.

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

Урок 1. Простые алгоритмы
Введение в C. Структуры. Алгоритмы.

Урок 2. Асимптотическая сложность алгоритма. Рекурсия
Асимптотическая сложность алгоритма. Рекурсивный перебор. Ханойская башня.

Урок 3. Поиск в массиве. Простые сортировки
Поиск в одномерном массиве. Интерполяционный поиск. Сортировка массива.

Урок 4. Динамическое программирование. Поиск возвратом
Наибольшая общая подпоследовательность. Динамическое программирование. Поиск с возвратом. Задача о восьми ферзях.

Урок 5. Динамические структуры данных
Стек, очередь. Создание стека с использованием массива. Динамические структуры данных.

Урок 6. Деревья
Двоичные деревья поиска. Хеш-функция. MD5. Хеш-таблицы.

Урок 7. Графы. Алгоритмы на графах.
Графы, обход графа в ширину и глубину. Волновой алгоритм. «Жадные алгоритмы».

Урок 8. Сложные сортировки
Сортировка Хоара (Quick sort). Пирамидальная сортировка (Heap sort) Сортировка слиянием (Merge sort). Сортировка подсчетом (CountingSort). Алгоритм со списком (pigeonhole sorting). Блочная сортировка.

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

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

Чему Вы научитесь:

  • Пользоваться классическими структурами данных.
  • Выбирать оптимальные структуры под задачи.
  • Определять сложность алгоритмов.
  • Оптимизировать алгоритмы.
  • Проектировать рекурсивные алгоритмы на Python.
  • Оптимизировать рекурсивные функции.
  • Строить и обходить деревья и графы.
  • Сортировать массивы и связные списки.
  • Быстро искать данные в массивах, деревьях и тексте.
  • Искать и генерировать большие простые числа.
  • Более эффективно использовать Python.
  • Проектировать надежные и быстрые алгоритмы.
  • Работать с хэш-таблицами, словарями и ассоциативными массивами.
  • Шифровать и сжимать данные.
  • Генерировать и обмениваться ключами шифрования.
  • Сортировать данные, в том числе по нескольким критериям.
  • Использовать комбинаторые алгоритмы и функции.
  • Перебирать и оптимизировать деревья.

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

Обучение построению алгоритмов на примере Python — одном из самых популярных языков программирования.

  1. Введение в алгоритмы
    7 уроков
    Познакомитесь с основными характеристиками алгоритмов.
    Узнаете простые и эффективные способы оценки сложности алгоритмов.
  2. Структуры данных
    10 уроков
    Познакомитесь с базовыми структурами данных.
    Научитесь работать со связными списками и массивами.
    Узнаете, что такое стек, очередь и дек в Python.
    Научитесь выбирать правильную структуру данных в зависимости от задач.
  3. Сортировка
    13 уроков
    Познакомитесь с популярными алгоритмами сортировки на Python.
    Научитесь выбирать алгоритмы сортировки под задачи и данные.
    Научитесь сортировать по нескольким полям.
    Узнаете, что такое устойчивые сортировки.
  4. Поиск
    2 урока
    Познакомитесь с линейным и бинарным поиском.
    Научитесь использовать интерполяционный поиск.
  5. Численные алгоритмы
    7 уроков
    Научитесь генерировать случайные числа, а также вычислять наибольший общий делитель.
    Узнаете об алгоритмах быстрого возведения в степень.
    Расширите свои знания о простых числах и научитесь строить решето Эратосфена, а также быстро проверять на простоту любое число.
    Познакомитесь с базовыми численными методами.
  6. Хэширование
    9 уроков
    Узнаете, что такое хэш-таблицы и как устроены python-словари и ассоциативные массивы.
    Научитесь разными способами пробирования и борьбе с коллизиями.
    Познакомитесь с фильтрами Блума.
  7. Рекурсия
    11 уроков
    Подробно изучите механизм рекурсивных вызовов.
    Познакомитесь с базовыми рекурсивными алгоритмами Python: вычислением факториала, построением ряда Фибоначчи, задачами о 8 ферзях и ханойской башне.
    Освоите комбинаторные алгоритмы: сочетания, повторения и размещения.
    Научитесь оптимизировать рекурсию и приводить рекурсивные алгоритмы к итеративным.
    Познакомитесь с фракталами.
  8. Деревья
    12 уроков
    Познакомитесь с деревьями.
    Научитесь обходить деревья в ширину и глубину.
    Узнаете, как искать элементы в двоичном дереве.
    Познакомитесь с прошитыми бинарными деревьями, АВЛ-деревьями, 2-3 деревьями, B-деревьями, а также красно-черными деревьями.
  9. Деревья принятия решений
    10 уроков
    Узнаете, что такое деревья принятия решений.
    Научитесь методу полного перебора, а также методу ветвей и границ.
    Освоите приемы оптимизации деревьев.
    Научитесь производить поиск по деревьям принятия решений.
  10. Сетевые алгоритмы
    9 уроков
    Познакомитесь с сетями и графами.
    Научитесь обходить деревья, а также находить кратчайший путь.
    Освоите топологическую сортировку.
    Узнаете, как об алгоритме поиска циклов.
  11. Строковые алгоритмы
    5 уроков
    Научитесь искать информацию в текстах.
    Познакомитесь с алгоритмами Кнута-Морриса-Пратта, а также Бойера-Мура-Хорспула.
    Узнаете, что такое синтаксические деревья.
  12. Криптография
    12 уроков
    Познакомитесь с подстановочными и перестановочными шифрами.
    Узнаете, как работают SP-сети и блочное шифрование.
    Научитесь применять протокол Диффи-Хеллмана.
    Узнаете несколько вариантов использования алгоритмов с открытым ключом, включая шифрование, цифровую подпись, а также гибридные схемы.
    Узнаете о криптографическом хэшировании и его применении на практике.
    Познакомитесь со схемой луковой маршрутизации и узнаете, как работает Tor.
  13. Сжатие
    5 уроков
    Узнаете об алгоритмах сжатия.
    Научитесь кодировать серии данных.
    Познакомитесь с кодом Хаффмана.
    Освоите сжатие Лемпеля-Зива-Велча.
    Узнаете, как работает сжатие с потерями на примере растровых изображений и музыкальных-форматов.
  14. Блокчейн
    4 урока
    Познакомитесь с устройством блокчейна.
    Научитесь генерировать блоки и встраивать их в цепочку.
    Узнаете об основных проблемах блокчейна.

Ученики, которые изучат теорию и решат все задачи — получают сертификат о прохождении курса по алгоритмам.

Стоимость: 3 900 ₽ в месяц

Чему вы научитесь:

  • Определять эффективность алгоритмов
  • Выбирать подходящую структуру данных в зависимости от ситуации
  • Определять NP-полные задачи и находить приближённое решение

Курс посвящен знакомству со структурами данных, алгоритмами поиска и сортировки. На практике разберём в каких ситуациях подходит тот или иной алгоритм. Какова его сложность используя оценку «О-большое». Сколько памяти потребуется для его реализации. Напишем реализации структур данных. Рассмотрим жадные алгоритмы и динамическое программирование.

Уроки курса:

Продолжительность — 11 часов.

  1. Введение
    Познакомиться с курсом
  2. Бинарный поиск
    Научиться реализовывать алгоритм бинарного поиска
  3. Алгоритмы сортировки
    Научиться реализовывать алгоритмы сортировки
  4. Алгоритмическая сложность
    Научиться анализировать сложность алгоритмов
  5. Жадные алгоритмы
    Изучить жадный подход в решении задач
  6. Динамическое программирование
    Научиться решать задачи с помощью техники динамического программирования
  7. Динамическое программирование (продолжение)
    Научиться решать задачи с помощью техники динамического программирования
  8. Связный список
    Научиться реализовывать связный список
  9. Двусвязный список
    Научиться реализовывать двусвязный список
  10. Очередь и стек
    Научиться реализовывать стек
  11. Дополнительные материалы
    Помогают глубже и всесторонне рассмотреть тему курса в открытых статьях и видео, подобранных командой.

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

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

Чему вы научитесь с помощью данного видеокурса:

  • разбираться в распространенных алгоритмах и структурах данных;
  • комбинировать простые конструкции языка для построения сложных алгоритмов;
  • давать оценку сложности различным алгоритмам;
  • знать сильные и слабые стороны тех или иных структур данных;
  • реализовывать простые и сложные структуры данных: бинарные деревья поиска, хеш-таблицы, стеки, очереди, списки, динамические массивы, множества, графы;
  • создавать алгоритмы сортировки, поиска элемента в массиве, обхода двоичного дерева и удаления из него узлов, алгоритмы роста динамического массива и т. д.

Уроки:

  1. Введение в структуры и алгоритмы данных. Связные списки.
  2. Динамический массив, Stack, Queue и Set.
  3. Алгоритмы сортировки.
  4. Хеш-таблицы. Деревья.
  5. Бинарное дерево поиска. АВЛ-дерево.
  6. Графы. Часть 1.
  7. Графы. Часть 2.
  8. Графы. Часть 3.
  9. Динамическое программирование.
  10. Задачи. Практикум.
Стоимость: бесплатно

Курс посвящен изучению алгоритмов и структур данных.

План занятий:

  1. Базовые алгоритмы
    дальнейшая программа курса: что такое алгоритм и структура данных. Рассмотрены базовые виды алгоритмов, их характеристики и методы анализа. Далее рассматриваются примеры создания алгоритмов для вычисления чисел Фибоначчи, проверки числа на простоту, быстрого возведения числа в целую степень. В конце лекции рассказывается об особенностях использования алгоритмов для работы с массивами: создание однопроходных алгоритмов, поиск минимального элемента, бинарный поиск.
  2. Элементарные структуры данных
    Вторая лекция посвящена изучению элементарных структур данных. В начале даётся определение понятия «абстрактного типа данных». Далее лектор рассказывает о том, что такое амортизационный анализ и каковы его особенности. Рассматриваются такие виды структур и абстрактные типы данных, как: массив и динамический массив, стек, очередь и дэк, очередь с приоритетом, связные списки: однонаправленные и двунаправленные, двоичная куча. Разбираются недостатки и преимущества каждого вида структур, а также их реализация в виде программного кода.
  3. Сортировки
    Тема сортировок оказалась настолько объёмной, что её пришлось разделить на две лекции. В первой части подробно рассматриваются такие виды алгоритмов, как: сортировка одного, двух и трёх элементов, сортировка выбором, сортировка вставками, сортировка пузырьком, быстрая сортировка Хоара. Описывается, как можно оценить скорость работы того или иного алгоритма сортировки, как проанализировать алгоритмы по количеству сравнений и т.д.
  4. Сортировки (продолжение)
    На этой лекции рассматриваются другие виды алгоритмов и их применение: сортировка слиянием, в том числе двух упорядоченных массивов, сортировка подсчётом, поразрядная сортировка, пирамидальная сортировка и ряд других. Напоследок проводится сравнительный анализ разных алгоритмов.
  5. Хеш-таблицы
    Из этой лекции для начала вы узнаете, что такое метод поиска хешированием, какие бывают хеш-функции (в том числе хеш-функции строк). Затем идёт подробное рассмотрение хеш-таблиц и способов их применения: что они собой представляют, основные методы разрешения коллизий (метод цепочек и метод открытой адресации), а также методы вставки, удаления и поиска элементов. Напоследок проводится сравнение хеш-таблиц по затратам времени и памяти.
  6. Деревья
    Последняя лекция в рамках курса АиСД посвящена таким структурам данных, как деревья. Разумеется, в начале лекции дается определение понятия «деревья», рассматриваются их характеристики и приводятся примеры. Затем вы узнаете, как деревья представлены в памяти, какие есть способы обхода дерева. Далее рассматриваются так называемые двоичные деревья поиска и группа самобалансирующихся деревьев: декартовы и АВЛ-деревья. И в завершение лекции рассказывается об абстрактном типе данных «ассоциативный массив».
  7. Экзамен.

Преимущества выбора курсов в РоманСеменцов.ру

1. Агрегатор онлайн-курсов


2. Рейтинги онлайн-школ

  • ТОП школ по любым направлениям
  • Дата начала: 2023-01-01
  • Дата окончания: 2023-12-31

3. Актуальное обучение

  • Выбирайте лучшие курсы по отзывам реальных учеников
  • Дата начала: 2023-01-01
  • Дата окончания: 2023-12-31
Онлайн-курсы доступ в любом городе России и СНГ, включая: Тула, Архангельск, Серпухов, Казань, Иваново, Новосибирск, Красногорск, Саранск, Щёлково, Кызыл, Обнинск, Дербент, Беларусь, Копейск, Владимир, Домодедово, Чебоксары, Южно-Сахалинск, Новомосковск, Орск, Нефтеюганск, Нижний Новгород, Грозный, Раменское, Армавир, Махачкала, Тверь, Ульяновск, Норильск, Минск, Казахстан, Миасс, Рубцовск, Смоленск, Владивосток, Сочи, Энгельс, Череповец, Сыктывкар, Великий Новгород, Ставрополь, Симферополь, Киров, Уссурийск, Мурманск, Пермь, Черкесск, Новокузнецк, Нефтекамск, Пенза, Набережные Челны, Бийск, Уфа, Ярославль, Петропавловск-Камчатский, Майкоп, Таганрог, Красноярск, Волжский, Коломна, Санкт-Петербург, Екатеринбург, Новочебоксарск, Петрозаводск, Курск, Ангарск, Люберцы, Кисловодск, Сургут, Рыбинск, Орехово-Зуево, Хасавюрт, Челябинск, Ижевск, Хабаровск, Абакан, Ковров, Благовещенск, Березники, Калуга, Брянск, Улан-Удэ, Севастополь, Иркутск, Старый Оскол, Новочеркасск, Нижнекамск, Владикавказ, Калининград, Волгодонск, Пятигорск, Подольск, Назрань, Барнаул, Прокопьевск, Воронеж, Керчь, Первоуральск, Вологда, Томск, Нижневартовск, Шахты, Мытищи, Братск, Дзержинск, Саратов, Омск, Батайск, Балашиха, Липецк, Электросталь, Каспийск, Краснодар, Магнитогорск, Находка, Москва, Самара, Комсомольск-на-Амуре, Королёв, Оренбург, Нижний Тагил, Псков, Орёл, Рязань, Сызрань, Новороссийск, Ростов-на-Дону, Якутск, Стерлитамак, Новый Уренгой, Курган, Долгопрудный, Белгород, Астрахань, Тамбов, Чита, Балаково, Кемерово, Невинномысск, Тольятти, Северодвинск, Волгоград, Каменск-Уральский, Златоуст, Салават, Альметьевск, Йошкар-Ола, Одинцово, Тюмень, Химки, Кострома

Автор статьи. Ответственный за актуальный контент, текст и редактуру сайта. Эксперт по выбору профессии, курсов и профессий с 2016 года. Делюсь личным практическим опытом.

Оцените автора
Блог Романа Семенцова
Добавить комментарий