Алгоритмы и структуры на С. Интерактивный курс

Разбор современных фреймворков

Курс для начинающих разработчиков, знакомых с основами языка С или С++. Поможет разобраться в основных структурах данных и базовых алгоритмах. Даёт общее понимание процессов внутри программы и базовые навыки выстраивания работы алгоритмов. Курс не привязан к конкретному языку программирования, и, несмотря на то, что все разбирается на примере С, знания могут быть применены в любом императивном языке программирования.

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

  • Постановка и декомпозиция задач;
  • Словесное и визуальное описание алгоритмов, диаграммы, UML;
  • Работа и разработка базовых структур данных;
  • Понимание работы скрытых механизмов высокоуровневых языков программирования;
  • Базовая алгоритмизация и оптимизация работы кода.

Средние оценки

5.0 / 5
Программа
5.0 / 5
Преподаватель

Преподаватели

  • 1
    Урок 1. Введение и знакомство
    1. Кратко о С, зачем использовать С: Обзор курса; Использование языка С. 2. Краткий обзор сред разработки: Обзор компиляторов для; Linux; Windows; MacOSX; Обзор сред разработки; Блокнот; CodeBlocks; Eclipse; QTCreator. 3. Понимание алгоритма и структур данных: Понятие алгоритма; Требования к алгоритму; Запись алгоритма; Структура данных; Применение структур данных. 4. Инструменты визуализации алгоритмов: Способы визуализации; Язык UML; Примеры диаграмм; Программное обеспечение.
  • 2
    Урок 2. Сложность алгоритма и простые алгоритмы
    1. Асимптотическая сложность алгоритма: Сложность алгоритма; Анализ сложности алгоритма. 2. Оценка времени выполнения алгоритмов: O Большое(O) - худшее время выполнения алгоритмов; Тета Большое (Θ) - среднее время выполнения; Омега Большое (Ω) - лучшее время выполнения алгоритмов. 3. Линейный, ветвящийся, циклический алгоритмы: Линейный алгоритм; Ветвящийся алгоритм; Циклический алгоритм. 4. Алгоритм Эвклида, расширенный алгоритм Эвклида, решето Эратосфена: Алгоритм Эвклида; Расширенный алгоритм Эвклида; Решето Эратосфена.
  • 3
    Урок 3. Рекурсия, рекурсивные алгоритмы
    1. Понятие рекурсии, простые примеры: Понятие рекурсии; Примеры рекурсии; Рекуррентное соотношение. 2 Числа Фибоначчи, факториал, стек вызовов: Числа Фибоначчи; Факториал числа; Стек вызовов. 3. Треугольные числа, анаграммы: Треугольные числа; Анаграммы. 4. Ханойская башня: История и правила задачи; Решение задачи. 5. Динамическое программирование: поиск с возвратом: Понятие “Динамическое программирование”; Метод поиска с возвратом; Задача о восьми ферзях; Обход конем шахматной доски. 6. Динамическое программирование: поиск всех возможных вариантов: Поиск наибольшей общей подпоследовательности; Поиск маршрутов шахматного короля.
  • 4
    Урок 4. Массивы
    1. Понятие и виды массивов: Понятие массива; Виды массивов; Одномерные массивы; Многомерные массивы; Матрицы; Треугольные массивы. 2. Базовые сортировки: Цель сортировки; Пузырьковая сортировка; Шейкерная сортировка. 3. Сортировки методом вставки и выбора: Сортировка методом вставки; Сортировка методом выбора. 4. Алгоритмы поиска: Алгоритмы поиска; Линейный поиск; Поиск с барьером. 5. Бинарный и интерполяционный поиск: Бинарный поиск; Интерполяционный поиск.
  • 5
    Урок 5. Сложные сортировки массивов
    1. Быстрая сортировка Хоара: Сортировка Хоара; Сортировка (разбиение) Ломуто. 2. Быстрая сортировка. Улучшения: “Толстое” разбиение; Улучшенная быстрая сортировка; Плюсы и минусы быстрой сортировки. 3. Сортировка слиянием: Алгоритм нисходящего слияния; Алгоритм восходящего слияния; Алгоритм двухпутевого слияния; Плюсы и минусы сортировки слиянием. 4. Сортировка подсчётом, алгоритм со списком: Сортировка подсчетом (Counting); Сортировка алгоритмом со списком (Pigeonhole sort). 5. Блочная сортировка: Блочная сортировка; Плюсы и минусы; Пример кода. 6. Улучшенная сортировка вставками (Сортировка Шелла): Улучшенная сортировка вставками.
  • 6
    Урок 6. Стеки, очереди и списки
    1. Динамические структуры данных: Стеки; Очереди; Дек; Приоритетные очереди. 2. Создание стека с использованием массива: Стек на основе массива; Базовые функции для работы со стеком. 3. Реализация очереди через массив: Очередь на основе массива. 4. Приоритетная и двусторонняя очереди: Очередь с приоритетом; Двусторонняя очередь.
  • 7
    Урок 7. Динамические структуры данных
    1. Односвязные списки: Односвязные списки; Преимущества и недостатки использования. 2. Двусвязные списки: Двусвязные списки; Отличие от односвязных списков; Достоинства и недостатки. 3. Циклический список: Циклические списки; Причины использования. 4. Стек на основе односвязного списка: Стек; Типовые операции над стеком. 5. Очередь на основе двусвязного списка: Очередь; Типовые операции над очередью.
  • 8
    Урок 8. Деревья
    1. Понятие и виды деревьев: Понятие дерева; Виды деревьев. 2. Построение двоичного дерева поиска: Структура дерева; Вставка узла; Скобочная запись; Удаление узла. 3. Рекурсивный обход двоичного дерева: Рекурсивный обход дерева; Примеры рекурсивного обхода дерева. 4. Построение сбалансированного дерева: Сбалансированное дерево; Описание на языке С. 5. Бинарный поиск в дереве: Деревья поиска; Бинарный поиск. 6. Пирамидальная сортировка (Heap sort): Пирамидальная сортировка.
  • 9
    Урок 9. Графы
    1. Понятие и виды графов: Графы; Виды графов; Матрица смежности. 2. Обход графа в глубину: Обход графа в глубину; Пример описания обхода графа в глубину. 3. Обход графа в ширину: Обход графа в ширину; Пример обхода графа в ширину. 4. Волновой алгоритм: Волновой алгоритм Ли; Применение волнового алгоритма. 5. Реализация волнового алгоритма для дискретного рабочего поля. 6. “Жадные” алгоритмы: Определение “жадных” алгоритмов; Решение задачи о расписании; Примеры использования “жадных” алгоритмов.
  • 10
    Урок 10. Хеш-таблицы
    1. Хеширование, хеш-функции: Хеширование; Хеш-функции; Хеш-таблицы; Коллизии; Метод цепочек. 2. MD5: Применение MD5; Устройство MD5. 3. Построение таблиц: Хеш-таблицы; Способы создания; Создание хеш-таблицы на основе метода цепочек. 4. Открытая адресация: Понятие открытой адресации; Подготовка хеш-таблицы. 5. Открытая адресация: Линейное пробирование; Квадратичное пробирование; Двойное хеширование.
  • 11
    Урок 11. Введение в криптографию
    1. Краткая история. Перестановочные шифры: История криптографии; Перестановочный шифр и его расшифровка; Взлом перестановочного шифра; Маршрутный шифр. 2. Шифры подстановки: Шифр Цезаря; Шифр Виженера; Простой подстановочный шифр; Одноразовый блокнот. 3. Блочные шифры: Определение блочных шифров; Трехраундовый шифр; Шифр Фейстеля. 4. Обзор используемых в современном ИТ шифров: Краткий обзор современных шифров.

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