Про що курс, як побудований семестр і що від тебе очікується
ВТФК · Системне програмування · 2026
Показати сайт наживо паралельно зі слайдами
Одна ідея на весь семестр: межа. Усі три модулі — про те, де вона проходить і хто її охороняє
Показати на сайті три «стрічки» модулів
Цифри — за тарифікацією 2026/27; Лекція 0 і Лабораторна 0 — поза сіткою годин, додаткові матеріали
СРС має подвійний зв'язок: подається з лекцією, готує до захисту і розширення лабораторної
| № | Тема | Модуль |
|---|---|---|
| Л1 | Три межі курсу: процес, адресний простір, системні виклики | М1 |
| Л2 | Простори імен, групи керування (cgroups), привілеї | М1 |
| Л3 | Образ як шари, Dockerfile, кеш, багатоетапна збірка | М1 |
| Л4 | Чому програми псують пам'ять | М2 |
| Л5 | Володіння (ownership) | М2 |
| Л6 | Запозичення і зрізи | М2 |
| Л7 | Option і Result | М2 |
| Л8 | Асемблер x86-64 | М3 |
| Л9 | WebAssembly як переносний асемблер | М3 |
| Л10 | Rust у WASM, межа з host-середовищем | М3 |
Кожна лекція — одна ідея й одне живе демо; слайди й конспект — на сайті
| № | Академічна назва | Сюжетна назва | М |
|---|---|---|---|
| ЛР1 | Контейнер розробника й огляд просторів імен | «Ізоляційна Капсула» | М1 |
| ЛР2 | Dockerfile з багатоетапною збіркою і порівнянням розмірів | «Кібер-Дієта» | М1 |
| ЛР3 | Два контейнери разом і ізольована мережа | «Сліпий Канал» | М1 |
| ЛР4 | Перший проєкт на Cargo з юніт-тестом | «Кування Відмички» | М2 |
| ЛР5 | Набір програм, що не компілюються (borrow checker) | «Мертвий Лог» | М2 |
| ЛР6 | Структури і перелічення без null | «Архітектура Ворога» | М2 |
| ЛР7 | Читання файлу з обробкою помилок | «Мінне Поле» | М2 |
| ЛР8 | Модуль на WAT вручну | «Пряма Ін'єкція» | М3 |
| ЛР9 | Той самий алгоритм у двох асемблерах | «Розтин Системи» | М3 |
| ЛР10 | Ядро на Rust у WASM на сторінці з відтворюваною збіркою | «Звільнення» | М3 |
Кожна ЛР має сюжетну й академічну версію з однаковими вимогами; три рівні → «3» / «4» / «5»
| № | Тема | До якої ЛР і рівня готує |
|---|---|---|
| СРС 01 | Простори імен Linux (PID, NET, MNT, UTS, IPC, USER): що ізолює кожен | ЛР1 · рівень 2 → «4» |
| СРС 02 | Групи керування cgroups v2: обмеження CPU та пам'яті контейнера | ЛР1 · рівень 3 → «5» |
| СРС 03 | OverlayFS і шари образу: як влаштовано об'єднану файлову систему | ЛР2 · рівень 2 → «4» |
| СРС 04 | Відтворюваність збірки і довіра до образу (digest, pin версій) | ЛР2 · рівень 3 → «5» |
| СРС 05 | Мережі Docker (bridge/none/host) і службове DNS між контейнерами | ЛР3 · рівень 2 → «4» |
| СРС 06 | Керування секретами: env проти файлів проти docker secrets | ЛР3 · рівень 3 → «5» |
Виконуються на 2-й годині відповідної лекції; окремо не оцінюються
| № | Тема | До якої ЛР і рівня готує |
|---|---|---|
| СРС 07 | Модель володіння Rust проти збирача сміття і ручного керування пам'яттю | ЛР4 · рівень 2 → «4» |
| СРС 08 | Екосистема crates.io, Cargo.toml/Cargo.lock і семантичне версіонування залежностей | ЛР4 · рівень 3 → «5» |
| СРС 09 | Часи життя (lifetimes) у сигнатурах функцій: що саме перевіряє компілятор | ЛР5 · рівень 2 → «4» |
| СРС 10 | Rc | ЛР5 · рівень 3 → «5» |
| СРС 11 | Алгебраїчні типи даних (enum) і вичерпне зіставлення зі зразком (match) | ЛР6 · рівень 2 → «4» |
| СРС 12 | Патерн «зробити некоректний стан непредставним» (make illegal states unrepresentable) | ЛР6 · рівень 3 → «5» |
| СРС 13 | Result<T, E> проти panic!: коли доречна відновна відмова, а коли зупинка програми | ЛР7 · рівень 2 → «4» |
| СРС 14 | Власні типи помилок і трейт std::error::Error: Display, Debug, Box | ЛР7 · рівень 3 → «5» |
Виконуються на 2-й годині відповідної лекції; окремо не оцінюються
| № | Тема | До якої ЛР і рівня готує |
|---|---|---|
| СРС 15 | Стекова машина WebAssembly і структура текстового формату .wat | ЛР8 · рівень 2 → «4» |
| СРС 16 | Лінійна пам'ять WASM і межі безпеки пісочниці | ЛР8 · рівень 3 → «5» |
| СРС 17 | Угоди виклику (calling conventions) x86-64: System V AMD64 ABI | ЛР9 · рівень 2 → «4» |
| СРС 18 | Інструменти дизасемблювання: objdump та wasm-objdump, синтаксис AT&T проти Intel | ЛР9 · рівень 3 → «5» |
| СРС 19 | Межа Rust↔JS через wasm-bindgen: маршалінг типів і виклик з JavaScript | ЛР10 · рівень 2 → «4» |
| СРС 20 | Відтворювані збірки Rust→WASM і цілісність ланцюга постачання (supply chain) | ЛР10 · рівень 3 → «5» |
Виконуються на 2-й годині відповідної лекції; окремо не оцінюються
Перемикач — угорі кожної сторінки; вимоги ідентичні
СРС має подвійний зв'язок: до лекції (коли робимо) і до лабораторної (навіщо робимо)
Підкреслити: «3» — це вже робоча, перевірена автотестами лабораторна, а не «заради галочки»
Демо: відкрити середовище ЛР1, набрати cat /etc/os-release і docker version
cat /etc/os-release | head -2
docker version
cat README.md # інструкція до роботи — прямо в терміналі
docker run --help # довідка з будь-якої командиЯкщо це працює — середовище готове; далі все за інструкцією лабораторної
Показати на сайті Лабораторну 0 — там покроково, з командами git
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 у двох версіях і блок команд; QR — сайт відкриваємо просто зараз
РН17/ЗК9: обґрунтований вибір цифрових інструментів і ШІ з дотриманням доброчесності
Повний список — розділ «Джерела» робочої програми
🥚 У прикладі здачі коміт підписано «lab01: рівень 2», а в Лабораторній 0 на дні голопроєктора вигравіювано C1D — шістнадцяткове число, яке дорівнює 3101. Запам'ятай його: воно трапиться в курсі не раз.