Алгоритмы и структуры данных
-
Устройство и организация компьютера и центрального процессора. Архитектура фон Неймана.
-
Булева логика. Одноместные и двуместные логические операции. Свойства логических операций. Полные системы и базисы.
-
Двоичная, восьмеричная и шестнадцатеричная системы счисления. Перевод чисел из одной системы счисления в другую.
-
Представление отрицательных целых чисел. Прямой код. Обратный код. Дополнительный код.
-
Представление вещественных чисел. Операции над вещественными числами. Стандарт IEEE 754.
-
Представление символьной информации. Кодировки. Стандарт Unicode.
-
Размещения и сочетания. Определения, соотношения, алгоритмы перебора.
-
Перестановки и подмножества. Определения, соотношения, алгоритмы перебора.
-
Понятие алгоритма и его сложности. Асимптотические обозначения. Градации сложности.
-
Массивы. Адресация элементов массива. Алгоритмы обмена. Последовательный и двоичный поиск.
-
Алгоритмы циклического сдвига элементов массива.
-
Понятие отношения. Свойства отношений. Особые виды отношений: функция, отношение эквивалентности. Алгоритм Уоршелла.
-
Понятие частичного и линейного порядка. Наименьший и минимальный элементы.
-
Простые квадратичные сортировки массива: пузырьковая, шейкерная, выбором.
-
Простые квадратичные сортировки массива: простыми и бинарными вставками, Шелла.
-
Быстрая сортировка.
-
Сортировка слиянием.
-
Пирамидальная сортировка.
-
Поразрядная сортировка. Блочная сортировка. Сортировка подсчетом.
-
Поиск образца в строке. Алгоритм Бойера—Мура.
-
Поиск образца в строке. Алгоритм Кнута—Морриса—Пратта.
-
Поиск образца в строке. Алгоритм Рабина—Карпа.
-
Суффиксные и префиксные деревья, их приложения.
Язык C
-
Структура программы на языке C: функции, библиотеки, переменные.
-
Объявление локальных переменных, присваивание, арифметические операции.
-
Целочисленные типы: char, int, long int. Знаковые и беззнаковые типы.
-
Вещественные типы: float, double. Внутреннее устройство и работа с вещественными переменными.
-
Битовые операции: &, |, ^, ~, <<, >>.
-
Логические переменные и операции: &&, ||, !. Операторы сравнения.
-
Явное и неявное приведение типов целочисленных переменных.
-
Операторы if..else и switch.
-
Операторы while и for.
-
Статические массивы. Описание в программе, внутреннее устройство и примеры использования.
-
Строки. Описание в программе, внутреннее устройство и примеры использования.
-
Функции. Рекурсия. Стек вызовов.
-
Структуры. Описание в программе, внутреннее устройство и примеры использования.
-
Объединения (union). Описание в программе, внутреннее устройство и примеры использования.
-
Указатели. Объявление и простейшие операции: Взятие указателя (&), взятие значения (*). Указатель void*. Приведение типов.
-
Арифметика указателей. Примеры использования.
-
Работа с массивами в качестве параметров и результата функции.
-
Динамическое выделение памяти. Функции malloc и free.
-
Организация динамического выделения памяти. Структура Memory Pool. Список свободных ячеек
-
Организация динамического выделения памяти отрезками массива произвольной длины.
-
Препроцессор. Директивы #include. #define, #if. Защита от повторного включения заголовочного файла.
-
Макросы. Макросы с параметрами. Примеры использования.