• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Современные технологии программирования и обработки информации

2020/2021
Учебный год
RUS
Обучение ведется на русском языке
4
Кредиты
Статус:
Курс обязательный
Когда читается:
5-й курс, 1-3 модуль

Программа дисциплины

Аннотация

Данная дисциплина относится к вариативной профильной части Профессионального цикла (Major), проводится на 4 курсе обучения и является дисциплиной по выбору. Для освоения учебной дисциплины студенты должны владеть базовыми знаниями и компетенциями, полученными при изучении следующих дисциплин: Языки программирования, Методы программирования, Математическая логика и теория алгоритмов, Дискретная математика, Аппаратные средства вычислительной техники, Операционные системы, Компьютерные сети, Основы информационной безопасности. Приобретённые компетенции могут быть использованы при решении широкого круга задач других дисциплин образовательной программы и подготовке выпускной квалификационной работы. Дисциплина реализуется в он-лайн формате
Цель освоения дисциплины

Цель освоения дисциплины

  • Углублённое изучение языков и средств разработки программного обеспечения и обработки данных с его помощью, опирающееся на совокупность знаний и навыков, полученных в результате изучения ряда дисциплин базовой части профессионального цикла
  • Повышение эффективности решения задач по обработке информации с использованием специальных возможностей аппаратуры и системного программного обеспечения с точки зрения производительности этих систем и эффективности труда самого разработчика, рассматривая влияние этих подходов на общие характеристики безопасности получаемых решений.
Планируемые результаты обучения

Планируемые результаты обучения

  • Знать основные современные технологии повышения производительности обработки данных
  • Знать актуальные проблемы компьютерной безопасности, связанные с этими технологиями
  • Знать приёмы повышения производительности разработки ПО в прикладных областях
  • Уметь применять изученные технологии на одном из языков программирования
  • Уметь оценивать теоретически целесообразность применения современных технологий программирования и обработки информации при решении прикладных задач и проверять эти оценки на практике
  • Владеть навыками внедрения современных технологий повышения производительности работы информационных систем в новые и модификацию имеющихся проектов
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Многозадачность
    1.1. Модель асинхронного программирования. 1.2. Реализация паттерна «реактор» с применением (Boost.)ASIO/Networking TS в языке C++. 1.3. Контексты исполнения, исполнители и политики выполнения. 1.4. Инициирующие функции и маркеры завершения. 1.5. Схемы владения обработчиками событий и разделяемыми ресурсами. 1.6. Простые применения асинхронного программирования для обработки асинхронных сигналов ОС. 1.7. Применение асинхронного программирования в сетевых приложениях. 1.8. Интеграция средств синхронного и параллельного программирования. 1.9. Синхронизация в асинхронно-параллельных схемах. Пряди. 1.10. Бесстековые сопроцедуры. 1.11. Синхронные и асинхронные генераторы. 1.12. Интеграция сопроцедур и средств асинхронного программирования. Планировщики. 1.13. Сопроцедуры со стеком. 1.14. Интеграция сторонних циклов обработки сообщений. 1.15. Сравнение и использование средств select/epoll/libev/libuv.
  • Проблемно-ориентированное программирование
    2.1. Библиотеки метапрограммирования в языке C++. Boost.Hana. Обработка типов на уровне значений и гетерогенные последовательности. 2.2. Сериализация данных. 2.3. Библиотеки сериализации данных: Boost.Serialization. MessagePack. 2.4. Средства минимизации копий данных в операциях ввода-вывода. Zero-copy. 2.5. Шаблоны выражений в C++ и построение доменно-специфичных языков на его базе. 2.6. Представление и обработка шаблонов выражений. 2.7. Библиотеки работы с шаблонами выражений. Boost.YAP.
  • SIMD-технологии
    3.1. Векторные расширения архитектуры x86: от MMX до AVX-512. 3.2. Использование векторных инструкций в языке ассемблера. 3.3. Использование векторных инструкций в языке C++ c помощью встроенных функций. 3.4. Использование векторных инструкций в языке C++ за счёт автоматической векторизации и расширений OpenMP. 3.5. Анализ производительности машинного кода с помощью архитектурных анализаторов. LLVM-MCA. 3.6. Обзор векторных возможностей других архитектур
  • Современные проблемы безопасности в обработке данных
    4.1. Статический анализ ошибок, связанных со временем жизни объектов. Аннотации времени жизни и владения. 4.2. Уязвимости спекулятивного исполнения инструкций. 4.3. Тестирование ПО с использованием фаззинга. AFL. libFuzzer
Элементы контроля

Элементы контроля

  • неблокирующий Лабораторная работа 1
  • неблокирующий Лабораторная работа 2
  • неблокирующий Лабораторная работа 3
  • неблокирующий Лабораторная работа 4
  • блокирующий Экзамен
    Экзамен проводится в устной форме без прокторинга на платформе MIEM Jitsi (https://meet.miem.hse.ru/303). Компьютер студента должен удовлетворять требованиям данной платформы с возможностью передачи видео с камеры и звука с микрофона, доступ к платформе может быть протестирован заранее в любой виртуальной комнате. К экзамену необходимо подключиться по команде из виртуальной очереди, которая будет организована в чате MIEM Zulip, канал потока (СКБ16x), тема по названию дисциплины. Для участия в экзамене студент обязан передавать своё изображение и звук в реальном времени без фильтров, препятствующих его однозначной идентификации. Во время экзамена студентам запрещено вести переговоры с лицами, кроме экзаменатора, и пользоваться любыми источниками информации. Кратковременные нарушения связи во время экзамена до 2 минут каждая, не более двух за экзамен, допускаются. При нарушении связи сверх данного лимита студент не может продолжить участие в экзамене. Процедура пересдачи аналогична процедуре сдачи.
  • неблокирующий Лабораторная работа 1
  • неблокирующий Лабораторная работа 2
  • неблокирующий Лабораторная работа 3
  • неблокирующий Лабораторная работа 4
  • блокирующий Экзамен
    Экзамен проводится в устной форме без прокторинга на платформе MIEM Jitsi (https://meet.miem.hse.ru/303). Компьютер студента должен удовлетворять требованиям данной платформы с возможностью передачи видео с камеры и звука с микрофона, доступ к платформе может быть протестирован заранее в любой виртуальной комнате. К экзамену необходимо подключиться по команде из виртуальной очереди, которая будет организована в чате MIEM Zulip, канал потока (СКБ16x), тема по названию дисциплины. Для участия в экзамене студент обязан передавать своё изображение и звук в реальном времени без фильтров, препятствующих его однозначной идентификации. Во время экзамена студентам запрещено вести переговоры с лицами, кроме экзаменатора, и пользоваться любыми источниками информации. Кратковременные нарушения связи во время экзамена до 2 минут каждая, не более двух за экзамен, допускаются. При нарушении связи сверх данного лимита студент не может продолжить участие в экзамене. Процедура пересдачи аналогична процедуре сдачи.
Промежуточная аттестация

Промежуточная аттестация

  • Промежуточная аттестация (3 модуль)
    0.5 * Экзамен + 0.5 * Экзамен
Список литературы

Список литературы

Рекомендуемая основная литература

  • Основы программирования на С++ : учеб. пособие, Захарова, С. С., 2012

Рекомендуемая дополнительная литература

  • Введение в программирование : учеб. пособие, Баженова, И. Ю., 2007