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