Бакалавриат
2022/2023
Архитектура ЭВМ и язык ассемблера
Статус:
Курс обязательный (Программная инженерия)
Направление:
09.03.04. Программная инженерия
Где читается:
Факультет компьютерных наук
Когда читается:
1-й курс, 3, 4 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Преподаватели:
Гребнев Николай Юрьевич,
Егоров Данила Игоревич,
Иконникова Мария Кирилловна,
Леладзе Константин Григорьевич,
Малышев Никита Евгеньевич,
Падарян Вартан Андроникович,
Терлыч Никита Андреевич
Язык:
русский
Кредиты:
5
Контактные часы:
160
Программа дисциплины
Аннотация
Дисциплина направлена на изучение студентами базовых принципов устройства современных ЭВМ на примере архитектуры x86, включая анализ характеристик различных компонент ЭВМ и того, как эти характеристики влияют на работу системных и прикладных программ.
Закрепление знаний достигается посредством практического освоения языка Си++, языка ассемблера архитектуры x86, типовых механизмов реализации языка Си/Си++ и его системы программирования на платформе Linux x86.
Цель освоения дисциплины
- Формирование у студентов связного представления об организации современных вычислительных систем, понимания взаимосвязей между архитектурными решениями уровней аппаратуры ЭВМ, системного и прикладного программного обеспечения, понимания факторов, влияющих на качественные и количественные характеристики ЭВМ, производительность и безопасность всей вычислительной системы в целом.
Планируемые результаты обучения
- Знать основные принципы устройства ЭВМ, его основные компоненты, их качественные и количественные характеристики.
- Знать свойства аппаратуры, влияющие на производительность и безопасность работы программ. Особенности двоичного (бинарного) интерфейса приложений на примере архитектуры IA-32.
- Знать особенности архитектуры x86, влияние архитектуры набора команд на реализацию языков высокого уровня и систему программирования.
- Знать язык ассемблера архитектуры x86, особенности реализации различных конструкций языка Си/Си++ на уровне языка ассемблера и причины, влияющие на выбор механизма реализации.
- Уметь составлять и отлаживать многомодульные программы на языках Си/Си++ и ассемблера; реализовывать интерфейсы между модулями, реализованными на разных языках программирования (Си/Си++и ассемблер).
- Уметь обосновано выбирать механизмы реализации конструкций языка Си/Си++ и корректно их кодировать на языке ассемблера архитектуры x86.
- Уметь оценивать производительность программ на языках Си/Си++ и ассемблера, используя знания об особенностях устройства аппаратуры ЭВМ и аппаратные средства профилирования архитектуры x86.
- Уметь восстанавливать по ассемблерному коду операторы и типы данных языка Си/Си++.
- Владеть современной технологией разработки и отладки многомодульных программ на языках Си/Си++ и ассемблера.
Содержание учебной дисциплины
- Введение в основы Си++. Классы и структуры. Шаблоны. Наследование. Исключения. Управление память. Семантика перемещения. Умные указатели. Контейнеры и итераторы. Вывод типов, лямбда-выражения. Метапрограммирование.
- Введение в архитектуру ЭВМ на примерах ассемблерных программ. Взаимосвязь языка Си/Си++, языка ассемблера и особенностей архитектуры ЭВМ на примере архитектуры x86.
- Система программирования языка Си/Си++ и ее связь с архитектурой ЭВМ.
- Архитектура ЭВМ в разных аспектах: физической организации, поддержки системных и прикладных программ.
Элементы контроля
- Домашнее заданиеВ течение Модуля 3 студентам предлагается выполнить четыре блока контеста (домашних задания, представляющих собой набор из 3-7 задач каждый). Финальная оценка за элемент контроля выставляется по формуле: round(x / 20), где x – количество заработанных студентом первичных баллов, а round – функция математического округления до ближайшего целого. В случае “половинного балла” оценка округляется вниз: например, 7.5 округлится до 7.
- Контрольная работаФинальная оценка за элемент контроля выставляется по формуле: round(x / 20), где x – количество заработанных студентом первичных баллов, а round – функция математического округления до ближайшего целого. В случае “половинного балла” оценка округляется вниз: например, 7.5 округлится до 7.
- Экзамен
- Домашние заданияДЗ№1-3 предполагают разработку 5 учебных программ в каждом со сдачей через систему автоматической проверки. Сдача менее 5 задач, как сдача задач с опозданием приводит к снижению баллов ДЗ №4 предполагает разработку учебной программы и отчета. Требования предъявляются как к разрабатываемой программе, так и к отчету, в части смысла текста, состава и содержания разделов, оформления текста отчета. Выполнение ДЗ№4 оценивается преподавателем по системе зачет/не зачет, успешное выполнение ДЗ №6 дает 100 баллов. Студент имеет право запросить вариант ДЗ №4 повышенной сложности. Повышенная сложность задания имеет два уровня, выполнение которых дает вместо 100 баллов обычного задания 150 или 200 баллов. Сдача менее 2 программ в ДЗ №№1-3, не сдача ДЗ №4 означает не выполнение требований по всем домашним заданиям Модуля 4, сумма оценок за домашние задания в этом случае обнуляется. Своевременное выполнение в полном объеме домашнего задания (ДЗ) дает 100 баллов.
- Контрольные работыДве контрольные работы в 4-м модуле
- Экзамен
Промежуточная аттестация
- 2022/2023 учебный год 3 модуль0.3 * оценка за экзамен + 0.6 * сумма оценок за домашние задания + 0.1 * экзаменационная контрольная работа Оценивание происходит с использованием первичных баллов. Всего студент может получить 200 первичных баллов за курс: 120 – за д/з, 60 – за экзамен, 20 – за экзаменационную контрольную работу.
- 2022/2023 учебный год 4 модуль0.3 * экзамен + 0.1 * ДЗ№1 + 0.1 * ДЗ№2 + 0.1 * ДЗ№3 + 0.1 * ДЗ№4 + 0.15 * контрольная работа №1 + 0.15 * контрольная работа №2
Список литературы
Рекомендуемая основная литература
- Алгоритмы: построение и анализ : пер.с англ., Кормен, Т., 2013
- Архитектура компьютера, Таненбаум, Э., 2014
- Язык Ассемблера для процессоров Intel, Ирвин, Кип Р., 2005
- Язык программирования С++ : специальное издание, Страуструп, Б., 2015
- Язык программирования С++, Страуструп, Б., 2007
Рекомендуемая дополнительная литература
- Computer architecture : a quantitative approach, Hennessy, J. L., 2019