Низкоуровневое программирование
Форма обучения: очная с применением дистанционных технологий
Объем программы: 200 ак. ч.
Продолжительность обучения: 5 месяцев
Стоимость обучения: 60 000 рублей

Содержание программы:
Основы архитектуры вычислительных систем
  • Вычислительные системы
  • Сложность систем
  • Функциональная и структурная декомпозиция
  • Исполнитель, память и транспорт
  • Модульность и абстракция
Абстракция «исполнитель» и модели вычислений
  • Модели вычислений
  • Конечные автоматы
  • RAM-машина
  • Основы ассемблера для Intel 64
Рост сложности, модульность и абстракция
  • Рост сложности вычислительных систем
  • Взаимодействия с внешним миром и интерактивность
  • Строгая и нестрогая
  • Статическая и динамическая модульность
Виртуализация памяти и процессора
  • Виртуализация
  • Типы: one to one, one to many, many to one
  • Реализация клиент-серверной архитектуры с помощью виртуализации
  • Виртуализация функциональных компонентов системы: процессора и памяти
  • Виртуальная память
  • Аппроксимация
  • Использование mmap
  • Локальность и кэширование
Компиляция и загрузка программ
  • Цикл компиляции
  • Лямбда-исчисление и препроцессор nasm
  • Компоновка
  • Релокации
  • Модули, объектные файлы
  • Структура ELF-файла. Секции и сегменты
  • Загрузчик
Исполнитель С
  • Аспекты языка программирования
  • Синтаксис и модели вычислений для его описания
  • Регулярные выражения
  • Грамматики
  • Дерево абстрактного синтаксиса
  • Простейший парсер
  • Семантика
  • Абстрактный вычислитель языка C
  • Стандарт языка
  • Прагматика
  • Выравнивание, padding
Исполнители C и ассемблера
  • Трансляция из AST в низкоуровневый код
  • Соглашения вызова
  • Alignment/padding
  • Переменное количество аргументов
  • Оптимизации
  • Prefetching
  • Векторизация кода, xmm регистры
  • Strict aliasing rules
  • Модель данных
Модели памяти и атомарность
  • Память в C и на уровне ассемблера
  • Выравнивание
  • Реализация кучи
  • Классификация моделей памяти
  • Memory reordering
  • Барьеры памяти
  • Семантика volatile. Атомарность операций.

Как проходит обучение:
  1. Лекции и семинары с преподавателем МФТИ в Zoom
  2. Все занятия записываются и доступны всегда
  3. Постоянная поддержка от преподавателей в чате курса
  4. Домашние задания для практической отработки полученных знаний и навыков
  5. Проектные работы в качестве промежуточного контроля знаний
  6. Обратная связь на домашние задания
  7. Прикладной итоговый проект, который можно использовать в портфолио