Алексей Владыкин


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

  1. Устройство и организация компьютера. Архитектура фон Неймана. Работа центрального процессора.

  2. Двоичная, восьмеричная и шестнадцатеричная системы счисления. Перевод чисел из одной системы счисления в другую.

  3. Одноместные и двуместные логические операции. Представление отрицательных чисел.

  4. Представление символьной информации. От ASCII к Unicode и UTF.

  5. Основные комбинаторные объекты. Алгоритмы перебора подмножеств и перестановок.

  6. Понятие алгоритма и его сложности. O-нотация. Градации сложности.

  7. Массивы. Адресация элементов массива. Алгоритмы обмена. Последовательный и двоичный поиск.

  8. Алгоритмы циклического сдвига элементов массива.

  9. Понятие отношения. Свойства отношений. Алгоритм Уоршелла.

  10. Понятие частичного и линейного порядка. Наименьший и минимальный элементы.

  11. Простые квадратичные сортировки массива: пузырьковая, шейкерная, выбором, простыми и бинарными вставками, Шелла.

  12. Быстрая сортировка. Сортировка слиянием. Пирамидальная сортировка.

  13. Поразрядная сортировка. Блочная сортировка. Сортировка подсчетом.

  14. Поиск образца в строке. Алгоритм Бойера—Мура.

  15. Поиск образца в строке. Алгоритм Кнута—Морриса—Пратта.

  16. Поиск образца в строке. Алгоритм Рабина—Карпа.

  17. Поиск образца в строке и другие приложения суффиксных деревьев.

  18. Динамические структуры данных. Вектор, стек, очередь.

Язык C

  1. Структура программы на языке C: функции, библиотеки, переменные.

  2. Декларация локальных переменных, присваивание, арифметические операции.

  3. Целочисленные типы: char, int, long int. Знаковые и беззнаковые типы.

  4. Битовые операции: &, |, ^, ~, <<, >>.

  5. Логические переменные и операции: &&, ||, !. Операторы сравнения.

  6. Явное и неявное приведение типов целочисленных переменных.

  7. Операторы if-else и switch.

  8. Операторы while и for.

  9. Статические массивы. Описание в программе, внутреннее устройство и примеры использования

  10. Строки. Описание в программе, внутреннее устройство и примеры использования.

  11. Функции. Рекурсия. Стек вызовов.

  12. Структуры. Описание в программе, внутреннее устройство и примеры использования.

  13. Объединения (union). Описание в программе, внутреннее устройство и примеры использования.

  14. Указатели. Объявление и простейшие операции: Взятие указателя (&), взятие значения (*). Указатель void*. Приведение типов.

  15. Арифметика указателей. Примеры использования.

  16. Работа с массивами в качестве параметров и результата функции.

  17. Динамическое выделение памяти. Функции malloc и free.

  18. Организация динамического выделения памяти. Структура Memory Pool. Список свободных ячеек

  19. Организация динамического выделения памяти отрезками массива произвольной длины.

  20. Прекомпилятор. Директивы #include. #define, #if. Защита от повторного включения заголовочного файла.

  21. Макросы. Макросы с параметрами. Примеры использования.