Аннотация:
Семинарский курс. Курс дает базовое представление об устройстве компьютера, в частности процессора и памяти. Описывается устройство и структура программ с инженерной точки зрения (структура процесса, потока, расположение в памяти, особенности работы с процессором при вызове функций, и т. п.). Рассматривается внутренняя реализация таких возможностей современных языков программирования как наследование и исключения (на примере С++). Отдельное внимание уделяется аппаратной реализации многопоточной обработки данных. Цель курса: сформировать представление о низкоуровневом устройстве основных составляющих программ, а также о самом процессе вычислений.

Программа учебной дисциплины
«Введение в инженерию ПО»

Утверждена
Академическим советом ОП
Протокол №_____ от _______._______.20_______

РазработчикиБобылев Игорь Вячеславович
Старичков Никита Юрьевич, Департамент программной инженерии
Михалевич Александр, Приглашенный преподаватель
Число кредитов2
Контактная работа (час.)38
Самостоятельная работа (час.)38
Курс, Образовательная программаКурс не указан,ОП не указана
Формат изучения дисциплиныБез использования онлайн курса


1. Цель, результаты освоения дисциплины и пререквизиты
Цели:
  1. Дать студентам необходимые знания для разработки низкоуровневого программного обеспечения.
Планируемые результаты обучения (ПРО):
  1. Уметь заниматься менеджментом данных
  2. Представлять устройство программы в памяти
  3. Знать аппаратные возможности и ограничения параллельных вычислений
  4. Знать особенности устройства современных возможностей языков
2. Содержание учебной дисциплины
Тема (раздел дисциплины)Объем в часахПланируемые результаты обучения (ПРО), подлежащие контролюФормы контроля
лк
см/пр
onl/cр
1. Устройство вычислительных систем0
  1. Уметь заниматься менеджментом данных
1.
5
5
2. Устройство программы0
  1. Уметь заниматься менеджментом данных
  2. Представлять устройство программы в памяти
1.
15
15
3. Параллельные вычисления0
  1. Знать аппаратные возможности и ограничения параллельных вычислений
1.
12
12
4. Рассмотрение особенностей C++0
  1. Знать особенности устройства современных возможностей языков
1.
6
6
Часов по видам учебных занятий:0
38
38
Итого часов:76

Содержание разделов дисциплины:
  1. Устройство вычислительных систем
    Общее устройство процессора. Примитивные типы данных (x86 с xmm). Регистры процессора. ALU, FPU. SSE. Обращение к памяти. Кэш. Общие замечания о представлении данных: дополнительный код, октеты. Размеры. Знаковость. Конвертация между примитивными типами данных. Модели типов данных: ILP32, LP64, P64. Выравнивание типов данных. Endian. Квалификаторы типов данных: const, volatile. Архитектуры вычислительных систем. Основные понятия. Архитектура платформы. Классификация. SMP/ccNUMA. Инициализация платформы.
  2. Устройство программы
    Cтек. Куча. Процесс. Память процесса. Выполняемые файлы. Секции. Свойства секций. Поток. Стек потока. Сравнение потока и процесса. Переменные. Локальная переменная (стек/регистр). Параметр функции (стек/регистр). Статическая переменная (внутри функции). Размещение переменных. Scope переменной. Глобальная переменная. Thread local storage. Кодогенерация доступа к переменной. Инициализация и завершение программы. Что делает стандартная библиотека. Инициализация объектов (в том числе и неавтоматических). ABI. Стековый фрейм. Передача параметров функциям. Возврат значений из функций. Передача структур по значению. Возврат структур по значению. Функции с переменным числом параметров. Указатели(I). Размер указателей. Сегментация. Сегментные указатели. Размещение данных в сегментах. Модели памяти. Размеры простых указателей на код и данные. Операции над указателями. Невыровненные указатели. Базовые указатели. Знаковые и беззнаковые указатели. Квалификаторы: const, volatile, restrict. Структуры. Выравнивание. Padding. Endian. POD. Битовые поля. Как работают с битовыми полями. Endian битовых полей. Padding битовых полей.
  3. Параллельные вычисления
    Суперскалярность. Параллельность и многопоточность: базовые понятия. Синхронизация. Проблемы синхронизации. Условная синхронизация. Взаимные исключения. Общие понятия: Mutex/Lock/Semaphore. Атомарные операции. Spin/Waitable. Ticket-lock. RW-lock. Гарантии примитивов синхронизации. Взаимное исключение, голодание, честность. Требования к многопоточным и параллельным структурам данных. Пример стека (Трайбера). Ключевое слово mutable. Реализация взаимных исключений (как hardware решает вопросы взаимных исключений). Модели упорядочивания памяти. Способы реализации поддержки гарантий: Store/Load- Store/Load-fence, memfence, acquire, release fence’ы. Основные типы атомарных операций в hardware. CAS, LL/SC. LOCK префикс(x86). Кэш. Организация(гистограммы для кэшй). Консистентность и когерентность. Протоколы состояния cache. Команды управления кэшом. Связь с барьерами памяти.
  4. Рассмотрение особенностей C++
    Наследование. Раскладка классов. Empty base optimisation. Виртуальное наследование. RTTI. Исключения. Сложность. Разворачивание стека, сохранение необходимой доп. информации. SEH.
3. Оценивание

Формула округления: Стандартное арифметическое округление
Шкала оценки: Десятибалльная
Вид формулы оценивания: Линейная
Формула оценивания:

Оценка = Оценка за устный экзамен


4. Примеры оценочных средств

Вопросы экзамена:
1.Устройство вычислительных систем
а) Опишите общее устройство процессора.
б) Опишите примитивные типы данных x86.
в) Объясните причины разделения вычислительных устройств процессора.
2.Устройство программы.
а) Разница между потоком и процессом.
б) Опишите устройство стека программы.
в) Опишите сценарии, когда полезна и когда вредна упаковка данных в структуре.
3.Параллельные вычисления
а) Опишите преимущества ticket-lock.
б) Опишите, причины и методы решения ABA-проблемы
в) Опишите разницу между acqire-release операциями и sequential consistency операциями.
4.Рассмотрение особенностей с++
а) Опишите процесс разворачивания стека


5. Ресурсы
5.1. Рекомендуемая основная литература
п/пНаименование
1Таненбаум Э. Архитектура компьютера, Год издания: 2014

5.2. Рекомендуемая дополнительная литература
Не требуется

5.3. Программное обеспечение
п/пНаименованиеУсловия доступа/скачивания
1Microsoft Windows 7 Professional RUS
Microsoft Windows 8.1 Professional RUS
Microsoft Windows 10
Из внутренней сети университета (договор)
2Microsoft Office Professional Plus 2010Из внутренней сети университета (договор)
3Любой дистрибутив GNU/Linux (например, Ubuntu)свободное (GNU GPL)

5.4. Профессиональные базы данных, информационные справочные системы, интернет-ресурсы (электронные образовательные ресурсы)
п/пНаименованиеУсловия доступа/скачивания
Профессиональные базы данных, информационно-справочные системы
1Электронно-библиотечная система ЮрайтURL: https://biblio-online.ru/
Интернет-ресурсы (электронные образовательные ресурсы)
1Открытое образованиеURL: https://openedu.ru/

5.5. Материально-техническое обеспечение дисциплины
Учебные аудитории для лекционных по дисциплине обеспечивают использование и демонстрацию тематических иллюстраций, соответствующих программе дисциплины в составе:
- ПЭВМ с доступом в Интернет (операционная система, офисные программы, антивирусные программы);
- мультимедийный проектор с дистанционным управлением.
Учебные аудитории для семинарских и самостоятельных занятий по дисциплине оснащены ПЭВМ, с возможностью подключения к сети Интернет и доступом к электронной информационно-образовательной среде НИУ ВШЭ.

6. Особенности организации обучения для лиц с ограниченными возможностями здоровья и инвалидов
В случае необходимости, обучающимся из числа лиц с ограниченными возможностями здоровья (по заявлению обучающегося) а для инвалидов также в соответствии с индивидуальной программой реабилитации инвалида, могут предлагаться следующие варианты восприятия учебной информации с учетом их индивидуальных психофизических особенностей, в том числе с применением электронного обучения и дистанционных технологий:
6.1.1. для лиц с нарушениями зрения: в печатной форме увеличенным шрифтом; в форме электронного документа; в форме аудиофайла (перевод учебных материалов в аудиоформат); в печатной форме на языке Брайля; индивидуальные консультации с привлечением тифлосурдопереводчика; индивидуальные задания и консультации.
6.1.2. для лиц с нарушениями слуха: в печатной форме; в форме электронного документа; видеоматериалы с субтитрами; индивидуальные консультации с привлечением сурдопереводчика; индивидуальные задания и консультации.
6.1.3. для лиц с нарушениями опорно-двигательного аппарата: в печатной форме; в форме электронного документа; в форме аудиофайла; индивидуальные задания и консультации.