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


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

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

  2. Булева логика. Одноместные и двуместные логические операции. Свойства логических операций. Полные системы и базисы.

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

  4. Представление отрицательных целых чисел. Прямой код. Обратный код. Дополнительный код.

  5. Представление вещественных чисел. Операции над вещественными числами. Стандарт IEEE 754.

  6. Представление символьной информации. Кодировки. Стандарт Unicode.

  7. Размещения и сочетания. Определения, соотношения, алгоритмы перебора.

  8. Перестановки и подмножества. Определения, соотношения, алгоритмы перебора.

  9. Понятие алгоритма и его сложности. Асимптотические обозначения. Градации сложности.

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

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

  12. Понятие отношения. Свойства отношений. Особые виды отношений: функция, отношение эквивалентности. Алгоритм Уоршелла.

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

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

  15. Простые квадратичные сортировки массива: простыми и бинарными вставками, Шелла.

  16. Быстрая сортировка.

  17. Сортировка слиянием.

  18. Пирамидальная сортировка.

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

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

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

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

  23. Суффиксные и префиксные деревья, их приложения.

Язык C

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

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

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

  4. Вещественные типы: float, double. Внутреннее устройство и работа с вещественными переменными.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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