Курс › План навчальних матеріалів
Дисципліна · методичний план

План навчальних матеріалів

90 год (3 кредити) = 20 лекцій + 20 лаб + 50 СРС · 4 курс, 7 семестр · форма контролю — залік

План навчально-методичного забезпечення дисципліни

Специфікація навчальних матеріалів: перелік, структура, шаблони. Самі матеріали генеруються з даних курсу — цей документ теж.

Уклав: викладач Ординський О. О. · вересень 2026

1. Призначення документа

Цей документ — специфікація навчально-методичного забезпечення дисципліни «Системне програмування». Він не містить самих матеріалів (конспектів, текстів завдань, питань банку) — він визначає їхній повний перелік, структуру, шаблони та взаємозв'язки, щоб матеріали можна було згенерувати послідовно й узгоджено.

Опорні документи: робоча програма дисципліни (тематичний план, компетентності, критерії) і силабус (політики, оцінювання), обидва в цій самій теці; Положення про навчально-методичне забезпечення ВТФК (структура методичних вказівок, Додаток 4 — теми Google класу, п. 4.8.2 — п'ять рівнів засвоєння).

Ключовий принцип курсу: знайомство і зацікавлення, а не глибина. Лекція = одна ідея + одне живе демо. Лабораторна = один артефакт за 2 години. СРС = добровільна глибина (окремо не оцінюється). Наскрізна лінія — три межі між програмою і машиною: контейнер, перевірка запозичень Rust, набір інструкцій WebAssembly.

1.1. Дві версії практичних матеріалів

Кожна методична вказівка до лабораторної та кожне завдання СРС існують у двох рівнозначних версіях з однаковим технічним змістом і однаковими трьома рівнями завдань:

Студент виконує будь-яку версію на власний вибір — технічний результат і критерії оцінювання ідентичні. Перемикач між версіями стоїть угорі кожної сторінки сайту.

1.2. Трирівнева модель оцінювання (нагадування)

РівеньУмоваОцінкаРанг у сюжеті
1Автотести зелені + звіт прийнято3Першокурсник
2Захист: студент пояснює власний код4Магістр
3Виконано розширене завдання ЛР5Легенда Коледжу

Рівні монотонні: рівень 2 передбачає виконаний рівень 1, рівень 3 — виконані 1 і 2. Оцінку можна підвищити до закриття відповідного модуля.

2. Загальна карта матеріалів

Повний реєстр артефактів дисципліни. Колонка «Публікація» вказує, де матеріал з'являється для студента (GitHub Pages — відкриті сторінки; Classroom — Google Classroom; репозиторій — закритий репозиторій дисципліни).

АртефактК-стьДві версії?ФорматПублікація
Робоча програма1ніdocxClassroom (тема 1)
Силабус1ніdocxClassroom (тема 1)
Конспекти лекцій11нідані → PagesGitHub Pages
Слайд-колоди лекцій11нідані → Reveal.jsGitHub Pages
Методичні вказівки до ЛР11 × 2такдані → PagesGitHub Pages + Classroom
Завдання СРС20 × 2такдані → PagesGitHub Pages
Довідник «Коли щось пішло не так»1нігенерується з ЛРGitHub Pages
Індивідуальний проєкт (СРС)1нідані → PagesGitHub Pages
Банк тестових питань≈300ніYAML (репо)репозиторій (закритий)
Модульні тестові контролі3ніз банкуплатформа
Директорська контрольна1 (4 вар.)ніз банкуплатформа
Стартові репозиторії (starter)11нікодGitHub (шаблон)
Автотести (autograder)11нікодпублічні (Pages, вимога C50)
Шаблони репозиторіїв студента2нікодGitHub (vtfk-sid, vtfk-sid-reference)

Межа публікації, і вона не така, як здавалося. Банк тестових питань не потрапляє у збірку GitHub Pages ніколи (публікуються лише теки з білого списку). А от автогрейдери публічні — і це не недогляд, а властивість Classroom 50: бандл перевірок публікується на Pages, щоб його могли завантажити runner'и, і читається будь-ким за URL. Тому в автотести не кладеться нічого, чого студент не має бачити; усе, що мусить лишитися закритим, перевіряється на захисті. Так само публічні й репозиторії лабораторних (repo_visibility: public) — у публічному репозиторії GitHub-hosted runner'и безкоштовні.

2.1. Де живуть матеріали і як виглядають

Усі матеріали — вихідні дані в репозиторії github.com/AlexOrd/vtfk-materials (content/sp/): лекції як дані (JSON + markdown-конспект), вказівки до ЛР у двох версіях, СРС, банк питань, конфігурація проведення (offering). Один білдер (site/build.mjs) генерує з них статичний сайт на GitHub Pages — docs.sp.ordynski.com; той самий набір даних читає застосунок курсу через Sync.

Оформлення — єдина дизайн-система (тема «cyberpunk»): лекції — слайд-колоди Reveal.js у ретро-моніторі (неонові cyan/yellow/magenta на майже-чорному, шрифти Orbitron + Chakra Petch). Той самий вигляд — у кабінеті застосунку. Друга дисципліна (ОБД) — тема «magical». Деталі — у docs/guides/Design_System.md.

Кожна сторінка ЛР, СРС і конспекту має блок «Команди на цій сторінці» — кожна команда терміналу одним реченням, зі словника commands.yml; команда, що з'являється в курсі вперше, позначається як нова. Окремою сторінкою збирається довідник «Коли щось пішло не так» — усі типові помилки з усіх лабораторних, із пошуком.

3. Конспекти лекцій

Десять лекцій по 2 години плюс вступне заняття (Лекція 0) поза сіткою годин; розподіл по модулях 6/8/6 год. Кожен конспект — одна ідея й одне живе демо, не перелік технологій.

3.1. Шаблон конспекту лекції

  1. Тема і місце в наскрізній лінії (яку з трьох меж торкає).

  2. Одна ключова ідея — формулювання в одному реченні.

  3. Живе демо — команди/код, які викладач показує наживо; очікуваний вивід.

  4. Опорний конспект — текст із визначеннями й схемами; для тем, які студент бачить уперше, окремий блок «перше входження»: що це взагалі й нащо, до того як «як це працює».

  5. Зв'язок із ЛР — яка лабораторна спирається на цю лекцію.

  6. Джерела — українське першим, англійське з позначкою «EN» і оцінкою часу на читання.

3.2. Перелік лекцій

№ТемаКлючова ідеяДемо
Л0ВСТУП ДО ДИСЦИПЛІНИ: ПРОГРАМА, ОРГАНІЗАЦІЯ РОБОТИ, ОЦІНЮВАННЯСистемне програмування — це три межі між програмою й машиною (контейнер, пам'ять, набір інструкцій); семестр побудований так, щоб кожну межу перетнути на лекції, у лабораВідкрити сайт курсу: показати структуру (лекції → ЛР → СРС), сторінку робочої програми, Лабораторну 0 і як виглядає робоче середовище (термінал у контейнері, docker versi
Л1ТРИ МЕЖІ КУРСУ: ПРОЦЕС, АДРЕСНИЙ ПРОСТІР, СИСТЕМНІ ВИКЛИКИПроцес — це межа між програмою і машиною, яку курс перетинає тричі: контейнер (Docker), безпека пам'яті (Rust), пісочниця виконання (WebAssembly).Запустити фоновий процес (sleep 300 &), знайти його PID, показати ps aux, а потім заглянути у /proc/<pid>/status, /proc/<pid>/maps і /proc/<pid>/fd — побачити, з чого нас
Л2ОБРАЗ ЯК ШАРИ, DOCKERFILE, КЕШ, БАГАТОЕТАПНА ЗБІРКАDocker-образ (image) — це не файл, а впорядкований стек незмінних шарів (layers); Dockerfile — рецепт, за яким кожна інструкція створює новий шар.docker history <image> — розібрати готовий образ на складові шари, показати розмір кожної інструкції Dockerfile і побачити, звідки береться "вага" образу.
Л3ПРОСТОРИ ІМЕН, ГРУПИ КЕРУВАННЯ (CGROUPS), ПРИВІЛЕЇКонтейнер — це не окрема ОС, а звичайний процес, якому ядро підмінило видимість (namespaces) і обмежило апетит (cgroups).unshare --pid --fork --mount-proc bash — запустити той самий bash-бінарник у власному PID-просторі й показати, що всередині він бачить себе як PID 1, а процеси хоста зник
Л4ЧОМУ ПРОГРАМИ ПСУЮТЬ ПАМ'ЯТЬПомилка керування пам'яттю коштує дорожче за час, витрачений на перевірки, які їй запобігають.Той самий патерн use-after-free: у C код компілюється і поводиться непередбачувано, у Rust компілятор відмовляється його зібрати.
Л5ВОЛОДІННЯ І ЗАПОЗИЧЕННЯУ кожного значення в Rust рівно один власник; а позичити значення (&) — це скористатися ним, не забираючи володіння і не копіюючи дані.Move: після переміщення значення в нову змінну спроба використати стару змінну — помилка компіляції error[E0382].
Л6ЗРІЗИ, ЧАСИ ЖИТТЯ І ТИПИ БЕЗ NULLТочний тип замість копії й замість null: зріз — це вікно в чужі дані без володіння, Option<T> — це явно описана можливість, що значення немає.match над Option<T>: компілятор вимагає обробити обидва варіанти, Some і None — забути None неможливо.
Л7RESULT, ? І ВЛАСНІ ТИПИ ПОМИЛОКУ Rust помилка — це значення в сигнатурі функції, яке компілятор змушує обробити, а не невидимий виняток, що летить крізь стек.Оператор ?: та сама функція з ручним match і з ? — поведінка ідентична, рядків утричі менше.
Л8WEBASSEMBLY ЯК ПЕРЕНОСНИЙ АСЕМБЛЕРWebAssembly — це набір інструкцій вигаданої машини, однакової в кожному браузері й рушії: найдешевший спосіб побачити межу між кодом і набором інструкцій живим.Той самий .wat-модуль з функцією додавання компілюється у wat2wasm і запускається у браузері через WebAssembly.instantiateStreaming — виклик з DevTools console дає резуль
Л9АСЕМБЛЕР x86-64Асемблер (assembler) — це не «низький рівень заради складності», а пряме відображення того, що вміє робити процесор: регістри, стек, порівняння і переходи.gcc -O0 -S на 5-рядковій C-функції додавання двох чисел; читаємо згенерований .s файл рядок за рядком і зіставляємо кожну інструкцію з тим, що робив би сам процесор.
Л10RUST У WASM, МЕЖА З HOST-СЕРЕДОВИЩЕМОстанню межу курсу — межу набору інструкцій — перетинає не рука, що пише .wat вручну, а компілятор: Rust компілюється у WASM, а wasm-bindgen генерує міст до JavaScript.Rust-функція, позначена #[wasm_bindgen], компілюється через wasm-pack build; на сторінці HTML кнопка викликає її з JS, а рядок-аргумент передається через межу мов у консо

4. Методичні вказівки до лабораторних робіт

Десять лабораторних по 2 години плюс вступна (Лабораторна 0, без слота в розкладі, не оцінюється, відкрита весь семестр). Кожна — атомарний артефакт із видимим результатом наприкінці пари; кожна має академічну і сюжетну версію (розділ 1.1).

4.1. Шаблон академічної версії

Структура за Положенням про НМЗ (методичні вказівки до лабораторних):

  1. Тема і мета роботи.

  2. Теоретичні відомості — стислий мінімум, потрібний для виконання (не дублює лекцію того самого дня; блок «Освіжити перед роботою»).

  3. Обладнання і програмне забезпечення — контейнер розробника / Codespaces, потрібні утиліти.

  4. Порядок виконання — покроково, з очікуваним результатом кожного кроку.

  5. Завдання за трьома рівнями — рівень 1 (базовий, оцінка 3), рівень 2 (захист, 4), рівень 3 (розширення, 5). Для рівнів 2–3 умова формулюється у двох рівноцінних версіях: на власному наскрізному артефакті або на референсному знімку.

  6. Дві парні теми СРС — одна готує до рівня 2, друга до рівня 3.

  7. Контрольні питання до захисту — 5–8 питань.

  8. Критерії оцінювання і форма звіту — що здається (тег submit/labNN), що перевіряють автотести, що на захисті.

4.2. Шаблон сюжетної версії

Той самий технічний зміст, подано як завдання від С.І.Д. Структура:

  1. Бриф С.І.Д. — уривок історії, який ставить задачу «в лорі».

  2. Що це означає технічно — переклад брифу на інженерну мову.

  3. Три рівні як ігрові ранги — Першокурсник / Магістр / Легенда Коледжу (= рівні 1/2/3).

  4. Розбивка рівня 1 на етапи, щоб сторінка не була суцільною.

  5. Блок «Коли щось пішло не так» — типові помилки з відповідями С.І.Д.

  6. Критерії й здача — ідентичні академічній версії.

Інваріант: рівні, автотести, критерії й теги здачі в обох версіях однакові. Різниться лише обрамлення. Це гарантує, що студенти двох версій оцінюються за одним стандартом.

4.3. Два репозиторії студента

Рівень 1 кожної лабораторної живе у власному репозиторії роботи sp-<група>-labNN-<логін>, який курс створює на прийняття завдання: там код і REPORT.md, здача — тегом submit/labNN, перевірка — автотестами. Ім'я репозиторію є первинним ключем конвеєра перевірки, тому одна робота = один репозиторій.

Рівні 2 і 3 дають опцію працювати на наскрізному артефакті — власному репозиторії студента vtfk-sid, створеному один раз на першій лабораторній і живому до десятої. Він не перевіряється машиною: рівні 2–3 здаються захистом. Хто наскрізного артефакту не веде, не втрачає нічого — кожна умова рівнів 2–3 має другу версію, «на референсному знімку».

4.4. Зведена таблиця лабораторних

ЛР0 · Вступ: як влаштований курс, робоче середовище в Docker і здача робіт ⟷ «Перше ввімкнення» (Модуль —)

Парні теми СРС: немає — вступна робота, поза сіткою годин.

ЛР1 · Контейнер розробника: перша капсула ⟷ «Ізоляційна Капсула» (Модуль 1)

РівеньЩо перевіряєтьсяОцінка
1автотести3
2захист (усно, з демонстрацією)4
3розширення за контрактом (захист)5

Парні теми СРС: (рів. 2) Публікація портів у Docker: -p, EXPOSE і чому без них хост не бачить контейнера · (рів. 3) Ідемпотентність скрипта розгортання: запустити двічі й не зламати

ЛР2 · Dockerfile з багатоетапною збіркою і порівнянням розмірів ⟷ «Кібер-Дієта» (Модуль 1)

РівеньЩо перевіряєтьсяОцінка
1автотести3
2захист (усно, з демонстрацією)4
3розширення за контрактом (захист)5

Парні теми СРС: (рів. 2) OverlayFS і шари образу: як влаштовано об'єднану файлову систему · (рів. 3) Відтворюваність збірки і довіра до образу (digest, pin версій)

ЛР3 · Простори імен на практиці: два контейнери в ізольованій мережі ⟷ «Сліпий Канал» (Модуль 1)

РівеньЩо перевіряєтьсяОцінка
1автотести3
2захист (усно, з демонстрацією)4
3розширення за контрактом (захист)5

Парні теми СРС: (рів. 2) Мережі Docker (bridge/none/host) і службове DNS між контейнерами · (рів. 3) Керування секретами: env проти файлів проти docker secrets

ЛР4 · Перший проєкт на Cargo з юніт-тестом ⟷ «Кування Відмички» (Модуль 2)

РівеньЩо перевіряєтьсяОцінка
1автотести3
2захист (усно, з демонстрацією)4
3розширення за контрактом (захист)5

Парні теми СРС: (рів. 2) Екосистема crates.io, Cargo.toml/Cargo.lock і семантичне версіонування залежностей · (рів. 3) Модель володіння Rust проти збирача сміття і ручного керування пам'яттю

ЛР5 · Набір програм, що не компілюються (borrow checker) ⟷ «Мертвий Лог» (Модуль 2)

РівеньЩо перевіряєтьсяОцінка
1автотести3
2захист (усно, з демонстрацією)4
3розширення за контрактом (захист)5

Парні теми СРС: (рів. 2) Часи життя (lifetimes) у сигнатурах функцій: що саме перевіряє компілятор · (рів. 3) Rc<T> і RefCell<T>: спільне володіння та внутрішня мутабельність без гонок

ЛР6 · Структури і перелічення без null ⟷ «Архітектура Ворога» (Модуль 2)

РівеньЩо перевіряєтьсяОцінка
1автотести3
2захист (усно, з демонстрацією)4
3розширення за контрактом (захист)5

Парні теми СРС: (рів. 2) Алгебраїчні типи даних (enum) і вичерпне зіставлення зі зразком (match) · (рів. 3) Патерн «зробити некоректний стан непредставним» (make illegal states unrepresentable)

ЛР7 · Читання файлу з обробкою помилок ⟷ «Мінне Поле» (Модуль 2)

РівеньЩо перевіряєтьсяОцінка
1автотести3
2захист (усно, з демонстрацією)4
3розширення за контрактом (захист)5

Парні теми СРС: (рів. 2) Result<T, E> проти panic!: коли доречна відновна відмова, а коли зупинка програми · (рів. 3) Власні типи помилок і трейт std::error::Error: Display, Debug, Box<dyn Error>

ЛР8 · Модуль на WAT вручну ⟷ «Пряма Ін'єкція» (Модуль 3)

РівеньЩо перевіряєтьсяОцінка
1автотести3
2захист (усно, з демонстрацією)4
3розширення за контрактом (захист)5

Парні теми СРС: (рів. 2) Стекова машина WebAssembly і структура текстового формату .wat · (рів. 3) Лінійна пам'ять WASM і межі безпеки пісочниці

ЛР9 · Той самий алгоритм у двох асемблерах ⟷ «Розтин Системи» (Модуль 3)

РівеньЩо перевіряєтьсяОцінка
1автотести3
2захист (усно, з демонстрацією)4
3розширення за контрактом (захист)5

Парні теми СРС: (рів. 2) Угоди виклику (calling conventions) x86-64: System V AMD64 ABI · (рів. 3) Інструменти дизасемблювання: objdump та wasm-objdump, синтаксис AT&T проти Intel

ЛР10 · Ядро на Rust у WASM на сторінці з відтворюваною збіркою ⟷ «Звільнення» (Модуль 3)

РівеньЩо перевіряєтьсяОцінка
1автотести3
2захист (усно, з демонстрацією)4
3розширення за контрактом (захист)5

Парні теми СРС: (рів. 2) Межа Rust↔︎JS через wasm-bindgen: маршалінг типів і виклик з JavaScript · (рів. 3) Відтворювані збірки Rust→WASM і цілісність ланцюга постачання (supply chain)

5. Самостійна робота студентів (СРС)

Двадцять тем, по дві на кожну лабораторну: перша готує до захисту (рівень 2), друга — до розширеного завдання (рівень 3). СРС — маршрут до глибини, а не шлагбаум: окремо не здається й не оцінюється, оцінюється рівень лабораторної. Кожна тема має академічне й сюжетне формулювання. Опрацьовується на другій годині відповідного лекційного заняття.

5.1. Шаблон завдання СРС

  1. Тема і до якої ЛР/рівня прив'язана.

  2. Що прочитати/спробувати — джерела і мінімальна практична проба.

  3. Орієнтир самоперевірки — питання, на яке студент має вміти відповісти після опрацювання.

  4. Сюжетне формулювання — та сама тема мовою місії С.І.Д.

  5. Завдання й контрольні питання.

5.2. Реєстр тем СРС

№ЛРРів.ГодинАкадемічне формулюванняСюжетне формулювання
1ЛР122.5Публікація портів у Docker: -p, EXPOSE і чому без них хост не бачить контейнераБрама, крізь яку пускають
2ЛР133.0Ідемпотентність скрипта розгортання: запустити двічі й не зламатиПідняти капсулу двічі — і не розбудити сусідів
3ЛР222.5OverlayFS і шари образу: як влаштовано об'єднану файлову системуПласти міста-привида
4ЛР233.0Відтворюваність збірки і довіра до образу (digest, pin версій)Цифровий відбиток фундаменту
5ЛР322.5Мережі Docker (bridge/none/host) і службове DNS між контейнерамиЛистоноша приватного кварталу
6ЛР333.0Керування секретами: env проти файлів проти docker secretsКлючар: передати ключ без звуку
7ЛР433.0Модель володіння Rust проти збирача сміття і ручного керування пам'яттюЧому відмичка не ламається
8ЛР422.5Екосистема crates.io, Cargo.toml/Cargo.lock і семантичне версіонування залежностейАрсенал відмички
9ЛР522.5Часи життя (lifetimes) у сигнатурах функцій: що саме перевіряє компіляторРозшифровка часових міток координат
10ЛР533.0Rc<T> і RefCell<T>: спільне володіння та внутрішня мутабельність без гонокСпільний доступ до ядра
11ЛР622.5Алгебраїчні типи даних (enum) і вичерпне зіставлення зі зразком (match)Мова опису ворожих вузлів
12ЛР633.0Патерн «зробити некоректний стан непредставним» (make illegal states unrepresentable)Архітектура без дір
13ЛР722.5Result<T, E> проти panic!: коли доречна відновна відмова, а коли зупинка програмиТиха обробка пасток
14ЛР733.0Власні типи помилок і трейт std::error::Error: Display, Debug, Box<dyn Error>Єдина мова інцидентів
15ЛР822.5Стекова машина WebAssembly і структура текстового формату .watАсемблер нейроімпланта
16ЛР833.0Лінійна пам'ять WASM і межі безпеки пісочниціПряма робота з пам'яттю монітора
17ЛР922.5Угоди виклику (calling conventions) x86-64: System V AMD64 ABIЯк ворожий процесор приймає команди
18ЛР933.0Інструменти дизасемблювання: objdump та wasm-objdump, синтаксис AT&T проти IntelРозтин бінарника
19ЛР1022.5Межа Rust↔︎JS через wasm-bindgen: маршалінг типів і виклик з JavaScriptМіст між ядром і панеллю
20ЛР1033.0Відтворювані збірки Rust→WASM і цілісність ланцюга постачання (supply chain)Щоб звільнення можна було повторити

5.3. Індивідуальний проєкт (необов'язковий)

Наскрізний індивідуальний проєкт — альтернативний шлях до глибини рівня 3: студент бере власну невелику задачу, що поєднує три межі курсу (контейнеризований застосунок на Rust із фрагментом у WebAssembly). Необов'язковий; не є умовою допуску до заліку.

Окремо — позакурсова опція «ядро, що говорить»: інференс крихітної мовної моделі, скомпільований із Rust у WebAssembly і запущений у браузері без сервера. Не оцінюється, не входить у нормативні години й не є частиною жодної ЛР — це фінал для тих, кому мало. Заміри, ліцензії й обґрунтування — docs/private/MODEL_RECON_2026-09.md.

6. Наскрізна сюжетна арка «Проєкт С.І.Д.»

Повний текст історії не дублюється в цьому документі. Він живе там, де його читає студент, і генерується звідти:

Причина, чому тут лише посилання, а не текст: до 07.09.2026 в цьому документі лежала власна копія прологу, десяти брифів і епілогу — і саме вона розійшлася з матеріалами настільки, що описувала ранги, яких у курсі немає, і сцени, які переписані. Копія нормативного тексту, яку ніхто не оновлює разом із джерелом, шкідливіша за посилання.

7. Банк тестових питань

Єдиний банк живе в закритому репозиторії дисципліни й ніколи не публікується на GitHub Pages. З нього збираються і модульні тестові контролі, і директорська контрольна. Питання класифікуються за п'ятьма рівнями засвоєння (п. 4.8.2 Положення про НМЗ).

7.1. П'ять рівнів засвоєння

РівеньНазваЩо перевіряє
1Впізнаваннярозпізнати термін/поняття серед варіантів
2Репродуктивнийвідтворити означення, синтаксис, послідовність
3Розумінняпояснити, чому/як працює механізм
4Реконструктивнийзастосувати в новій, але типовій ситуації
5Творчийпроаналізувати нестандартний випадок, знайти помилку

7.2. Структура і квоти

Питання згруповані за модулями і темами лекцій; кожне має рівень (1–5), тип (одна відповідь / кілька / відповідність / короткий ввід) і теги теми. Орієнтовний обсяг — ≈100 питань на модуль (≈300 разом), що дає достатньо для неповторюваних варіантів. Формат зберігання — YAML у репозиторії:

- id: m2-ownership-003

module: 2 # 1..3

topic: ownership # тег теми лекції

level: 3 # рівень засвоєння 1..5

type: single # single | multi | match | short

text: "Що станеться при спробі використати значення після move?"

options: [ ... ]

answer: [ 2 ]

7.3. Модульні тестові контролі

КонтрольПісля модуляДатаТривалість
Т1модуль 123.10.202630 хв
Т2модуль 218.12.202630 хв
Т3модуль 312.02.202730 хв

Складаються з банку за квотами рівнів (переважно рівні 1–3, кілька — 4). Результат — орієнтир; основою оцінки лишаються рівні, досягнуті в лабораторних.

7.4. Директорська контрольна робота

ПараметрЗначення
Коли12.02.2027 (залік)
Кількість варіантів4 (неповторювані)
Питань у варіанті25
Тривалість45 хвилин
Джерело питаньтой самий банк, що й модульні тести
Розподіл за модулямирівномірно, ≈8/9/8 по трьох модулях
Розподіл за рівнямирівні 1–2 — 60%, рівень 3 — 28%, рівні 4–5 — 12%
Критерійза шкалою коледжу; окремий стовпчик журналу

8. Календарний план публікації

Матеріали публікуються автоматично за розкладом із конфігурації дисципліни (offering/*.yml). Лабораторна відкривається студентам у день своєї пари, одночасно з лекцією того самого топіка — так тема й практика не розходяться в часі. Конвеєр публікації працює за принципом T-48h: у Classroom матеріали йдуть за 48 годин до відкриття, тобто текст умови й стартовий репозиторій заморожуються за дві доби. Це не зручність, а вимога: умову лабораторної неможливо виправити після того, як студент прийняв завдання — Classroom 50 не доносить оновлення стартера у вже прийняті репозиторії.

Порядок готовності матеріалу до кожної лабораторної:

  1. Конспект лекції — до відповідної лекції.

  2. Стартовий репозиторій + автотести — до відкриття завдання.

  3. Методичні вказівки (обидві версії) — до відкриття завдання, посилання в Classroom.

  4. Парні теми СРС — разом із вказівками.

  5. Питання банку для модуля — до модульного контролю.

МатеріалЛекціяЛР відкриваєтьсяМʼякий дедлайн
ЛР004.09.2026відкрита завжди—
ЛР111.09.202611.09.202602.10.2026
ЛР225.09.202625.09.202616.10.2026
ЛР309.10.202609.10.202630.10.2026
ЛР423.10.202623.10.202613.11.2026
ЛР506.11.202606.11.202627.11.2026
ЛР620.11.202620.11.202611.12.2026
ЛР704.12.202604.12.202625.12.2026
ЛР818.12.202618.12.202622.01.2027
ЛР915.01.202715.01.202705.02.2027
ЛР1029.01.202729.01.202719.02.2027

Правило готовності: матеріал готовий за два тижні до пари.

9. Реєстр готовності

АртефактСтан
Робоча програмаготово
Силабусготово
Цей план матеріалівготово, генерується з даних
Канон сюжету (canon.yml, STORY_CANON.md, ARTIFACT_CHAIN.md)готово
Конспекти лекцій (11)готово
Слайд-колоди лекцій (11)готово
Методичні вказівки до ЛР (11 × 2 версії)готово
Завдання СРС (20 × 2 версії)готово
Довідник «Коли щось пішло не так»готово, генерується з ЛР
Стартові репозиторії + автотести (11)готово
Шаблони vtfk-sid і vtfk-sid-referenceготово (templates/), не викладені на GitHub
Ілюстрації (53 слоти)0 із 53 — не блокує занять
Банк тестових питань (≈300, 5 рівнів)згенерувати
Директорська контрольна (4 варіанти)згенерувати з банку