Основы использования UNIX-подобных ОС
1. Общая информация о UNIX-подобных ОС
История развития UNIX-подобных ОС. Распространение и области применения UNIX-подобных ОС. Ключевые особенности UNIX-подобных ОС. Основные семейства UNIX-подобных ОС. Дистрибутивы ОС на базе ядра Linux. Архитектура UNIX-подобных ОС.
2. Основы работы в среде UNIX-подобных ОС с использованием интерфейса командной строки
Понятие терминала. Классификация терминалов. Работа с терминалами. Интерпретатор командной строки. Принципы работы с интерфейсом командной строки. Аргументы командной строки. Переменные оболочки и среды окружения. История команд. Псевдонимы команд. Встроенные и внешние команды. Справочные ресурсы. Автодополнение пользовательского ввода.
3. Файлы в UNIX-подобных ОС
Понятие файла и файловой системы. Типы файлов. Иерархия файловой системы. Стандарт иерархии файловой системы (FHS). Назначение основных каталогов. Навигация в файловой системе. Основные операции с файлами. Структура файла. Структура файловой системы. Монтирование файловых систем.
4. Работа с текстовой информацией в UNIX-подобных ОС
Команды для просмотра текстовых файлов. Стандартные потоки. Перенаправление стандартных потоков. Конвейер. Команды-фильтры. Текстовые редакторы.
5. Процессы в UNIX-подобных ОС
Понятие программы, процесса и потока. Жизненный цикл процесса. Средства мониторинга и управления процессами. Средства межпроцессного взаимодействия. Сигналы. Управление заданиями. Процессы-демоны. Загрузка ОС и системы инициализации.
Основы структурного программирования и разработки на языке С
1. Основы алгоритмизации
Понятие алгоритма. Свойства алгоритма. Представление алгоритмов. Блок-схемы. Принципы построения алгоритмов. Идея анализа алгоритмов. Алгоритмическая сложность.
2. Основы программирования на языке C
Примеры простейших программ. Переменные. Функции. Выражения. Предложения. Базовые типы данных. Операторы. Приоритет операторов. Структура программы. Порядок сборки программы.
3. Инструменты разработки
Текстовые редакторы. Компиляторы. Отладчики. Сборочные системы. Система контроля версий Git.
4. Классификация структур данных, уровни представления информации
Уровни представления информации: интуитивный, логический, физический. Примеры структур данных различных уровней. Обзор логических структур данных и физических структур данных.
5. Массивы и указатели в языке C
Указатели и адреса. Указатели и аргументы функций. Указатели и массивы. Адресная арифметика. Массивы указателей и указатели на указатели. Многомерные указатели. Указатели на функции. Управление памятью.
6. Работа с массивами
Массив – логическая структура данных. Основные операции над массивами. Алгоритмы поиска в массивах. Алгоритмы сортировки массивов. Представление массивов на физическом уровне. Работа с массивами на языке С.
7. Работа со строками
Строка – логическая структура данных. Основные операции над строками. Представление строк на физическом уровне. Работа со строками на языке C. Средства стандартной библиотеки языка C для работы со строками.
8. Работа со строками
Иерархия памяти. Понятие файла и файловой системы. Файлы в UNIX-подобных ОС. Использование механизма системных вызовов для работы с файлами в UNIX-подобных ОС. Работа с файлами средствами стандартной библиотеки. Бинарные и текстовые файлы.
9. Структуры в языке C
Основы работы со структурами. Структуры и функции. Массивы структур. Указатели на структуры. Определение новых типов данных. Объединения.
10. Работа со списками
Список – физическая структура данных. Классификация списков: по числу связей (односвязные, двусвязные, многосвязные), по способу организации связей (линейные и циклические). Основные операции над списками. Использование списков для реализации логических структур данных. Работа со списками на языке С.
Основы объектно-ориентированного программирования и разработки на языке C++
1. Основы программирования на языке C++
Разработка простейших программ. Основные конструкции языка C++. Организация ввода-вывода. Работа с исключениями. Работа с памятью. Ссылочные типы данных. Квалификатор типа «const». Перегрузка функций. Параметры по умолчанию. Преобразование типов
2. Разработка с использованием стандартных и внешних библиотек
Обзор стандартных библиотек языка C++. Использование контейнерных классов. Стандартные алгоритмы. Система автосборки CMake. Подключение внешних библиотек. Библиотеки boost. Создание и распространение собственных библиотек. Лицензирование.
3. Введение в объектно-ориентированное программирование
Основные принципы ООП. Объекты, классы. Абстракция, инкапсуляция, абстракция, полиморфизм. Модель взаимодействия объектов. Реализация принципов ООП в языке C++.
4. Проектирование и разработка классов
Разработка собственных классов. Модификаторы доступа. Конструкторы и деструкторы. Перегрузка операторов. Копирование и перемещение объектов. «static» поля и методы класса. Преобразование типов экземпляров класса. Модульное тестирование классов.
5. Разработка обобщённых классов и алгоритмов с использованием шаблонов
Разработка шаблонных функций, классов и переменных. Подстановка шаблонного типа. Специализация шаблонных классов, функций и переменных. Разработка контейнерных классов.
6. Проектирование и разработка иерархий классов
Принцип наследования. Производные классы. Порядок создания и уничтожения экземпляров классов-наследников. Динамическое связывание. Виртуальные методы. Виртуальный деструктор. Полиморфные классы, абстрактные классы, интерфейсы. Проблема множественного наследования. Динамическое преобразование типов. Проектирование с использованием нотации UML. Принципы SOLID.
Обеспечение безопасности приложений
1. Основные понятия безопасности информационных систем
Раздел содержит в себе описание основных понятий кибербезопасности. Излагаются ключевые характеристики цифровых угроз. Рассматриваются различные виды уязвимостей и угроз. Изучаются меры обеспечения безопасности и механизмы их реализации.
2. Сферы кибербезопасности
В разделе изучаются методы анализа вредоносного программного обеспечения. Приводится алгоритм разработки защищенного приложения. Излагаются особенности промышленной кибербезопасности и типичные уязвимости.
3. Инструменты атакующих. Виды кибератак
Рассматриваются техники и тактики кибератак MITRE ATT&CK, современный ландшафт угроз.
4. Будущее кибербезопасности
Ознакомление с IoT и его особенностями. Рассказывается о кибериммунитете и его роли в эволюции кибербезопасности. Описываются тренды в кибербезопасности и развитии защиты.
Практика, подготовка к защите и защита итогового проекта
Практика, подготовка к защите и защита итогового проекта. В рамках модуля обучающиеся проходят практику на базе индустриального партнера, развивая навыки, полученные в предыдущих модулях, готовят и представляют к защите итоговый проект.