Основная информация по курсу
Контакты
- Лектор: Игорь Жирков
- telegram @igorjirkov / email igorjirkov [at] gmail.com
- отвечает на вопросы в любой день (кроме ночей перед практикой и рубежным контролем :)
- Журнал успеваемости
- Группа в Telegram (обсуждения, объявления, вопросы)
- Старая группа в VK
- Канал на YouTube
Основные источники материала
- Low-level programming: C, assembly and program execution on Intel 64 architecture (искать в Telegram-группе)
- Документация Intel
- AMD Application Binary Interface (прежде всего интересно детальное описание соглашения вызова функций)
- Список системных вызовов с аргументами
- "Principles of Computer System Design: An Introduction" (искать в Telegram-группе) ...
Формы контроля
- Тест на 5 минут на каждой практике.
- 8 лабораторных работ разной степени сложности
- 2 рубежных контроля (тесты, ответы в свободной форме, есть 2 задания на программирование)
- Можно досрочно закрыть курс с помощью индивидуального проекта (не отменяет лабы). Примеры проектов на YouTube. Сначала обсуждается с @igorjirkov.
Лекции
- Лекция от 05-09-2020 [конспект] [видеозапись на YouTube] [опрос]
Системы, сложность систем, функциональная и структурная декомпозиция; исполнитель, память и транспорт, модульность и абстракция.
- Лекция 2 [конспект] [видеозапись на YouTube]
Модели вычисления, конечные автоматы, Model Checking, RAM-машина, основы ассемблера.
Материалы практик
Лабораторные работы (всего 8)
- Библиотека ввода-вывода на ассемблере
- Словарь на ассемблере
- Введение в C
- Связный список
- Функции высшего порядка
- Поворот изображения
- Аллокатор памяти
- Сепия-фильтр
Вместе пишем на С
Если вы перевелись
- Следующие лабораторные работы сдаёте, создавая форки их репозиториев и посылая реквесты (инструкция). Преподаватели проведут код-ревью.
- Проходите полностью онлайн-курс; лабы 3-5 в него включены
- Следующие лабораторные работы сдаёте, создавая форки их репозиториев и посылая реквесты (инструкция). Преподаватели проведут код-ревью.
- Пишете @igorjirkov если у вас есть вопросы по материалам курса, чтобы преподаватели провели вам код-ревью, или чтобы зачесть онлайн-курс.
Скорее всего, курс C с другого факультета или университета мы вам зачесть не сможем.
Преподаватели практики:
- Балакшин Павел Валерьевич
- Ильина Аглая Геннадьевна
- Кореньков Юрий Дмитриевич
- Логинов Иван Павлович
- Лукьянов Николай Михайлович
- Садырин Даниил Сергеевич
Необходимые инструменты
- Debian GNU\Linux 8.0+ или аналогичный дистрибутив
- NASM 2.11.05+
- GCC 4.9.2+ или Clang
- GNU Make 4.0+
- GDB 7.7.1+
- Компьютер с процессором Intel (не Itanium) или AMD
Лабораторные работы по ассемблеру будет очень сложно выполнить на MacOS если вы ещё не писали на ассемблере. MacOS требует, чтобы код был позиционно-независимый (PIC), т.е. не содержал абсолютных адресов, это не так просто сделать. Лабораторные работы 3-7 на C можно выполнять на MacOS.
Пользователи Windows также могут установить виртуальную машину, мы предлагаем три уже сконфигурированные:
- Ubuntu 16 with standard desktop environment (VirtualBox): https://yadi.sk/d/CLf4D4IM3TSpsx
- Debian 9 Minimal (.vmx) https://yadi.sk/d/BehMKGzS3LgXzG
- Debian 9 + XFCE https://yadi.sk/d/01uFWHCw3SHzh9.
Логин/пароль user, пароль от рута qwerty
- Docker image (не тестировалась) https://github.com/kellyi/nasm-gcc-container
Если ни один из этих вариантов для вас невозможен (например, есть только планшет на Android), обратитесь к @igorjirkov за аккаунтом на VPS.