Архитектура операционных систем
Назначение и функции операционных систем. Эволюция операционных систем. Принципы построения операционных систем. Классификация и особенности основных операционных систем. Сетевые и распределенные операционные системы. Классификации многозадачных операционных систем. Архитектурные особенности операционных систем. Организация управления процессами, потоками и ресурсами. Файловые системы, подсистема ввода-вывода данных. Взаимодействующие параллельные процессы и потоки, условия возникновения гонок. Основы синхронизации потоков и предотвращение состояния состязаний. Тенденции и перспективы развития операционных систем.
Принципы и технологии использования языков разметки и высокоуровневых языков программирования при разработке интернет-ориентированных веб-приложений. Технические средства создания динамических веб-сайтов: средства автоматизации проектирования веб-приложений, многоуровневая архитектура. Механизм работы с сессиями. Оптимизация веб-приложений. Разделение кода и дизайна, использование регулярных выражений при разработке веб-приложений. Базовые требования безопасности при проектировании и эксплуатации веб-приложений. Разработка вебприложений, устойчивых к ошибкам. Технологии проектирования и разработки веб-приложений на языках высокого уровня. Принципы обработки http-запросов приложением ASP.Net Core. Механизм внедрения зависимостей в ASP.Net Core. Сценарии проектирования веб-приложений MVC и Razor Pages. Принципы работы системы маршрутизации. Система аутентификации ASP.NET Core Identity. Механизмы привязки модели. Способы обмена файлами между клиентом и сервером. Принципы модульного тестирования контроллеров. Основы REST и устройство API-контроллеров.
Классификация компьютерных сетей. Понятие сетевого ресурса, клиента, сервера. Основы функционирования компьютерных сетей: сетевое оборудование и сетевое программное обеспечение. Эталонная модель взаимодействия открытых систем (OSI). Физический и канальный уровни. Сетевой уровень. Стек TCP/IP. IP сети. Сетевые протоколы. Межсетевое взаимодействие. Маршрутизация. Протоколы транспортного уровня. Администрирование в сетях с сервером. Обеспечение безопасности межсетевого взаимодействия. Удаленные сетевые атаки. Межсетевые экраны. Виртуальные частные сети (VPN). Основы построения беспроводных сетей. Безопасность беспроводных сетей. Основы программирования сетевых задач. Удаленный доступ и удаленное управление, распределенные вычисления.
Объектно-ориентированное программирование
Основные парадигмы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Объектно-ориентированное программирование в современных универсальных языках. Классы, методы, конструкторы, деструкторы и их свойства. Механизмы взаимодействия объектов. Работа с массивами данных. Перегрузка операторов. Расширение классов. Перегрузка методов. Атрибуты доступа к объектам. Виртуальные, анонимные методы. Метаклассы. Исключительные ситуации. Интерфейсы. Работа со строками. Файловая система. Коллекции. Делегаты и события. Многопоточное программирование. Основы LINQ.
Организация и проектирование баз данных
Модели данных в информационных системах: объект, модель, данные, модель данных, классификация моделей данных. Теоретические основы реляционной модели базы данных: сущность, связь, целостность данных, нормализация данных. Языки запросов к реляционным базам данных: стандарты, структура языка запросов, операторы создания базы данных и таблиц, операторы манипулирования данными, операторы выборки данных. Основы проектирования реляционных баз данных: стандарты проектирования, методы и этапы проектирования, уровни проектирования. Средства автоматизированного проектирования и разработки баз данных. Организация системы управления базами данных: модели архитектур, настройка, управление службами, методы организации индексов, создание объектов базы данных, система безопасности, типы и виды транзакции, проблемы одновременного доступа и блокировки. Программирование бизнес-логики сервера баз данных: описание языка программирования, разработка процедур бизнес-логики.
Основы алгоритмизации и программирования на языках высокого уровня
Алгоритм и его свойства. Способы описания алгоритмов. Стандартизация графического представления алгоритмов. Линейные, разветвляющиеся и циклические алгоритмы. Основы структурного проектирования программ. Синтаксис и семантика языка программирования высокого уровня: структура программы, типы данных, операции и выражения, ввод и вывод, основные операторы, сложные типы данных. Подпрограммы, типы параметров подпрограмм, организация рекурсии. Указатели и особенности их применения. Создание и обработка одномерных и многомерных массивов. Динамические структуры данных и алгоритмы их обработки: однонаправленные и двунаправленные списки, очереди, стеки, двоичные деревья. Работа с файлами. Сортировка данных.
Системное программирование
Современные инструментальные средства разработки системно-ориентированных приложений. Основы организации нативного прикладного программного интерфейса операционной системы (API). Парадигмы консольного и графического пользовательского оконного интерфейса. Класс окна в операционных системах, предопределенные классы, получение и изменение данных окна и класса. Событийное управление приложениями. Ресурсы приложения, их создание и использование. Организация интерфейса на основе меню. Использование диалогов. Прикладной интерфейс для обработки пользовательского ввода. Организация графического пользовательского интерфейса, графические подсистемы, графический вывод. Прикладной системный интерфейс управления системными ресурсами. Понятие процесса и управление процессами. Управление группами процессов. Понятие многопоточности, модели потоков. Методы управления потоками. Организация параллельной обработки данных и взаимодействующие потоки (процессы). Предупреждение возникновения состояния состязаний с использованием средств взаимного исключения, синхронизации потоков. Механизмы управления виртуальной и динамически распределяемой памятью. Проецирование файлов на виртуальное адресное пространство. Разработка и использование динамически загружаемых модулей. Обмен данными между процессами с использованием динамически загружаемых модулей и разделяемых сегментов памяти, создание многозадачных комплексов. Асинхронное выполнение системных вызовов. Удаленный запуск приложений.
Средства визуального программирования приложений
Базовые средства визуального проектирования приложений: технологии визуального программирования, обзор существующих библиотек для создания приложений с графическим интерфейсом, общие сведения о библиотеках, основные принципы создания графического интерфейса. Элементы управления и их позиционирование: базовый класс библиотеки, методы, свойства и события базового класса; классы описания кнопок, переключателей и элементов обработки текста, обработка ошибок ввода; элементы управления отображением списков и деревьев; модальные и немодальные диалоговые окна, способы обмена данными с диалоговым окном; способы динамического позиционирования элементов на форме. Пользовательские элементы управления и привязка данных: работа с изображениями, средства рисования, добавление открытых свойств и событий в элементы управления, управление привязкой данных при помощи стандартных классов, табличное представление данных. Доступ к источникам данных: доступ к файлам и базам данных, автономные модели данных.
Тестирование программного обеспечения
Тестирование и его связь с жизненным циклом программного обеспечения. Виды, уровни, направления и методы тестирования. Планирование и отчетность в тестировании. Тестирование документации и требований. Создание тестов. Поиск и документирование дефектов. Особенности тестирования веб-приложений. Инсталляционное тестирование. Тестирование веб-приложений. Тестирование совместимости. Основы тестирования производительности и безопасности. Модульное, интеграционное и системное тестирование. Тестирование на совместимость с поисковыми системами (SEO). Автоматизация тестирования программного обеспечения.
Технические средства информационных систем
Представление информации: системы счисления, формат с фиксированной запятой, формат с плавающей запятой, стандартизация представления информации, погрешности представления. Логические основы работы компьютеров. Основы схемотехники компьютеров. Архитектура современных процессоров. Адресация, режимы работы процессора, управление памятью компьютера. Принципы построения и организация памяти. Многопроцессорные системы, многоядерные процессоры. Периферийные устройства и технические средства компьютера и систем.
Технологии компонентного программирования
Основные понятия парадигмы компонентно-ориентированного программирования. Понятие программного компонента и компонентной объектной модели. Технологии компонентно-ориентированного программирования, программирование на основе интерфейсов. Системная программная поддержка разработки и создания компонентов. Виды серверов и их реализация, распределенная модель компонентного приложения. Современные инструментальные системы и средства разработки клиентских и серверных приложений на базе компонентной модели. Автоматизация пользовательского интерфейса. Разработка клиента автоматизации на различных языках. Понятие свойства компонента. Определение свойств с использованием языка IDL. Обнаружение и обработка ошибок в компонентной модели. Создание и использование элементов управления. Организация взаимодействия управляемого и собственного (нативного) кода. Использование компонентов в веб-приложениях и приложениях универсальной платформы.
Технологии проектирования программного обеспечения информационных систем
Объектно-ориентированный подход к проектированию программного обеспечения и его стандартизация. Унифицированный процесс разработки программного обеспечения. Объектно-ориентированный язык визуального моделирования: основные элементы языка, классификация и назначение диаграмм, синтаксис и семантика диаграмм, правила построения диаграмм. Методологии и CASE-средства создания объектноориентированного программного обеспечения.
Управление разработкой программного обеспечения
Содержание управления проектами. Организационные процессы поддержки проектов: управление моделью жизненного цикла, инфраструктурой, совокупностью проектов, человеческими ресурсами, качеством. Технические процессы: определение требований заказчика, анализ системных требований. Процесс анализа требований к программным средствам. Вспомогательные процессы: управление документацией и конфигурацией программных средств. Процессы повторного использования программных средств: управление повторным использованием средств и программ.