Вступ. Організація роботи в курсі, робоче середовище та порядок здачі робіт
Мета
Ознайомитися зі структурою дисципліни, форматом лабораторних робіт і самостійної роботи, підготованим робочим середовищем (контейнер розробника) та порядком здачі й оцінювання робіт. Вступ не оцінюється і доступний упродовж усього семестру.
Структура дисципліни
Дисципліна складається з трьох модулів, кожен присвячений одній «межі» між програмою та машиною:
| Модуль | Тема | Лекції | Лабораторні | Інструменти |
|---|---|---|---|---|
| 1 | Ізоляція процесів: межа середовища виконання | 1–3 | ЛР1–ЛР3 | Docker, простори імен та cgroups Linux |
| 2 | Керування пам'яттю: межа безпеки | 4–7 | ЛР4–ЛР7 | Rust, Cargo, перевірка запозичень |
| 3 | Від асемблера до WebAssembly: межа набору інструкцій | 8–10 | ЛР8–ЛР10 | NASM/gcc/objdump, WABT, wasm-pack |
До кожної лабораторної роботи передбачено дві теми самостійної роботи (СРС): перша готує до захисту рівня 2, друга — до розширення рівня 3. СРС окремо не оцінюється; оцінюється рівень, досягнутий у лабораторній роботі.
Кожна лабораторна робота доступна у двох еквівалентних за змістом версіях: сюжетній (основна; технічні відомості вплетені в наскрізну історію) та академічній (стисла методична форма). Перемикач між версіями розташований угорі сторінки.
Рівні виконання та оцінювання
| Рівень | Оцінка | Зміст | Форма перевірки |
|---|---|---|---|
| 1 | 3 | базове завдання за покроковою інструкцією з очікуваними результатами | автотести |
| 2 | 4 | пояснення механізму та жива демонстрація | захист (усно) |
| 3 | 5 | розширення: автоматизація, оптимізація або власне рішення за контрактом | автотести і/або захист |
Студент самостійно обирає рівень, на який претендує. Вищий рівень включає виконання попередніх.
Робоче середовище: контейнер розробника
Усі роботи виконуються в підготовленому контейнері розробника (devcontainer) з попередньо
встановленими інструментами для відповідної роботи. Опис середовища кожної ЛР і СРС — базовий
образ, інструменти та їхні версії, дозволені команди, порти, перевірки готовності —
зафіксований у конфігурації курсу (environment/labNN.yml, environment/srsNN.yml) і
використовується застосунком курсу при ініціалізації робочого простору студента; те саме
середовище можна отримати в GitHub Codespaces навчального репозиторію.
| Модуль | Базове середовище |
|---|---|
| 1 | Ubuntu 24.04 з Docker Engine (Docker-in-Docker), curl, procps, iproute2, util-linux |
| 2 | Rust 1.79 (rustc, cargo, rustfmt, clippy), git |
| 3 | WABT 1.0.34, Node.js 22, gcc 13 / binutils, clang 18 / lld, Rust 1.79 з ціллю wasm32-unknown-unknown, wasm-pack, binaryen |
Порядок роботи в середовищі:
- Відкрити лабораторну роботу в кабінеті курсу (або Codespaces). Контейнер створюється автоматично; у нього монтується навчальний репозиторій студента.
- Перевірити середовище:
cat /etc/os-release | head -2(очікуєтьсяUbuntu 24.04або відповідний базовий образ) та команду перевірки інструмента роботи (docker version,cargo --version,wat2wasm --version). - Виконувати роботу в терміналі контейнера; результати комітити в репозиторій. Зміни у файловій системі контейнера поза репозиторієм не зберігаються між сеансами.
Довідка з команд: man <команда> — повний посібник (вихід — q); <команда> --help
(для підкоманд — docker run --help, cargo build --help) — стисла довідка. Файл README
у каталозі роботи переглядається командою cat README.md або less README.md.
На кожній сторінці ЛР, СРС і конспекту наведено блок «Команди на цій сторінці» з однореченнєвим описом кожної команди терміналу, що трапляється в тексті; команди, які зустрічаються в курсі вперше, позначені.
Порядок здачі робіт
Роботи виконуються в особистому навчальному репозиторії на GitHub; кожна ЛР — в окремому каталозі (
lab01/,lab02/, …). Склад каталогу визначає розділ «Здача» відповідної ЛР таstarter/README.md(контракт стартового коду).Звіт
REPORT.mdмістить: варіант і його розрахунок, вивід команд кожного кроку порядку виконання, відповіді на контрольні питання.Здача — тегом
submit/labNNу репозиторії:git add lab01 && git commit -m "lab01: рівень 2" git tag submit/lab01 && git push --tagsПовторна здача — перевстановленням тегу:
git tag -f submit/lab01 && git push -f --tags.Автотести (рівень 1, за наявності — рівень 3) запускаються за тегом. Рівень 2 захищається усно з живою демонстрацією.
Варіант. У більшості робіт параметри завдання (порт, ім'я контейнера, тестові дані)
залежать від номера студента в списку групи N (зазвичай N % 4 або N % 3). Варіант і
його розрахунок обов'язково зазначаються на початку REPORT.md.
Контрольні питання
- З яких модулів складається дисципліна і яка «межа» є предметом кожного?
- Чим відрізняються рівні 1, 2 і 3 виконання лабораторної роботи та форми їх перевірки?
- Яку роль відіграє СРС і як вона пов'язана з рівнями лабораторної роботи?
- Що таке контейнер розробника і чому середовище виконання робіт фіксується у конфігурації курсу?
- Якими командами перевірити базовий образ середовища та готовність основного інструмента роботи?
- Як отримати довідку з команди терміналу та як переглянути README у терміналі?
- Яким чином здається лабораторна робота і як виконати повторну здачу?