СИСТЕМНЕ ПРОГРАМУВАННЯ
Галузь знань 12 Інформаційні технології
Спеціальність 123 Комп’ютерна інженерія
Освітньо-професійна програма Комп’ютерна інженерія
Мова навчання – українська
Програма навчальної дисципліни «Системне програмування» для здобувачів освіти спеціальності 123 Комп’ютерна інженерія.
Опис навчальної дисципліни
| Найменування показників | Галузь знань, спеціальність, освітньо-професійний ступінь | Характеристика |
|---|---|---|
| денна форма навчання | ||
| Кількість кредитів: 3 |
|
Нормативна. Цикл професійної підготовки, ОК23 |
| Рік підготовки: четвертий | ||
| Семестр: сьомий | ||
| Лекції: 20 год. | ||
| Загальна кількість годин: 90 год. | ||
Практичні, семінарські: 0 год. |
||
| Тижневих годин для денної форми навчання: аудиторних – 2; самостійної роботи студента – 2,5. | ||
| Лабораторні: 20 год. | ||
| Самостійна робота: 50 год. |
||
| Індивідуальні завдання: | ||
| Вид контролю: залік |
1. Мета навчальної дисципліни
Мета дисципліни «Системне програмування» полягає у формуванні в здобувачів освіти цілісного уявлення про те, що відбувається між програмним кодом і машиною, на трьох рівнях взаємодії: межа середовища виконання (ізоляція процесів засобами операційної системи та контейнеризація), межа керування пам'яттю (модель володіння в системній мові програмування без збирача сміття) і межа набору інструкцій (асемблер архітектури x86-64 та переносний байт-код WebAssembly).
Завданням дисципліни є: ознайомлення з програмною моделлю процесу — адресним простором, стеком, купою, системними викликами; здобуття практичних навичок роботи з механізмами ізоляції операційної системи та засобами контейнеризації для побудови відтворюваного середовища збірки й виконання; ознайомлення з моделлю володіння пам'яттю в системній мові програмування зі статичною перевіркою та здобуття досвіду читання діагностики компілятора; формування вміння читати код на рівні машинних інструкцій — асемблера x86-64 і текстового формату WebAssembly; здобуття досвіду складання застосунку із системного ядра, автоматизованої збірки та публікації результату.
Вивчення дисципліни «Системне програмування» здійснюється на компетентністних засадах.
| Загальні компетентності: |
|
|---|---|
| Спеціальні компетентності (фахові, предметні): | СК2. Здатність застосовувати на практиці фундаментальні концепції, парадигми і основні принципи функціонування апаратних, програмних та інструментальних засобів комп’ютерної інженерії. СК3. Здатність вільно користуватись сучасними комп’ютерними та інформаційними технологіями, прикладними та спеціалізованими комп’ютерно-інтегрованими середовищами для розробки, впровадження та обслуговування апаратних та програмних засобів комп’ютерної інженерії. СК4. Здатність брати участь у розробці системного та прикладного програмного забезпечення засобів комп’ютерної інженерії з використанням ефективних алгоритмів, сучасних методів і мов програмування. СК7. Здатність системно адмініструвати, використовувати, адаптувати та експлуатувати наявні інформаційні технології та системи. СК9. Здатність оформляти отримані робочі результати у вигляді презентацій, науково-технічних звітів. СК10. Здатність аргументувати вибір методів розв’язування спеціалізованих задач, критично оцінювати отримані результати, обґрунтовувати прийняті рішення. СК13. Здатність ідентифікувати, класифікувати та описувати роботу програмно-технічних засобів, комп’ютерних систем, мереж та їх компонентів шляхом використання аналітичних методів і методів моделювання. СК14. Здатність оцінювати і враховувати економічні, соціальні, технологічні та екологічні чинники, що впливають на сферу професійної діяльності. |
Міждисциплінарні зв’язки
Дисципліна спирається на результати навчання, здобуті під час вивчення освітніх компонентів «Алгоритми і структури даних» (ОК13), «Програмування» (ОК19), «Архітектура комп’ютерів і периферійні пристрої» (ОК21), «Комп’ютерна схемотехніка» (ОК22) та «Операційні системи» (ОК24). Результати навчання з дисципліни використовуються під час вивчення освітнього компонента «Комп’ютерні мережі» (ОК25), проходження виробничої практики (ОК38), виконання мультидисциплінарного курсового проєкту (ВК4) та підготовки кваліфікаційної роботи (ОК40).
2. Результати навчання
| Результати навчання | РН2. Знати і розуміти теоретичні положення, що лежать в основі функціонування апаратних та програмних засобів комп’ютерної інженерії. РН3. Знати сучасні методи та технології для розв’язання прикладних задач комп’ютерної інженерії. РН6. Тестувати, діагностувати та обслуговувати апаратні та програмні засоби комп’ютерної інженерії. РН8. Застосовувати знання технічних характеристик, конструктивних особливостей, призначення і правил експлуатації апаратних та програмних засобів комп’ютерної інженерії для вирішення технічних задач у професійній діяльності. РН9. Розробляти, тестувати, впроваджувати, експлуатувати програмне забезпечення для вбудованих і розподілених систем. РН10. Здійснювати пошук інформації з різних джерел для розв’язання задач комп’ютерної інженерії. РН11. Ідентифікувати, класифікувати та описувати роботу програмно-технічних засобів комп’ютерної інженерії. РН12. Поєднувати теорію і практику, знаходити та обґрунтовувати шляхи рішення типових задач у професійній діяльності з урахуванням виробничих інтересів. РН13. Обґрунтовувати прийняті рішення, оцінювати, оформляти та представляти результати професійної діяльності згідно з діючою нормативною документацією. РН14. Використовувати сучасні інтегровані середовища, методи і технології розробки, впровадження, адміністрування комп’ютерних систем та мереж, баз даних і знань. РН15. Проводити інсталяцію та налаштування системного та прикладного програмного забезпечення, у тому числі програмних засобів захисту інформації з метою реалізації встановленої політики інформаційної безпеки. РН17. Вміти обґрунтовано обирати та використовувати цифрові інструменти, сервіси на основі штучного інтелекту, для вирішення фахових завдань, дотримуючись принципів академічної доброчесності, етичних норм та правових вимог щодо захисту авторського права. |
|---|
3. Структура навчальної дисципліни
3.1. Структура навчальної дисципліни загальна й за семестрами
На вивчення навчальної дисципліни відведено 90 годин
Перед першою лекцією та першою лабораторною роботою передбачено вступні організаційно-ознайомчі заняття «Лекція 0» і «Лабораторна робота 0», які проводяться поза сіткою годин, не оцінюються і доступні здобувачам освіти впродовж усього семестру.
| Кількість годин | Розподіл по семестрах та форми контролю | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Всього | На заняттях | СРС | Семестр 7 денна форма навчання | ||||||
| Лекції | Практ. | Лабор. | Семінар. | Іспит | Залік | Конс. | |||
| 90 | 40 | 50 | 20 | - | 20 | - | - | х | - |
3.2. Тематичний план
| № | Назва розділу (модуля), теми (змістові модулі) | Кількість годин | ||||
|---|---|---|---|---|---|---|
|
|
|
|
|
||
| Модуль 1. Ізоляція процесів: межа середовища виконання | ||||||
| 1 | Лекція 1. Три межі курсу: процес, адресний простір, системні виклики. | 2 | ||||
| 2 | Лекція 2. Простори імен, групи керування (cgroups), привілеї: ізоляція ядром без віртуалізації апаратури. | 2 | ||||
| 3 | Лекція 3. Образ як шари, Dockerfile, кеш, багатоетапна збірка. | 2 | ||||
| 4 | Лабораторна робота №1. Контейнер розробника й огляд просторів імен. | 2 | 5 | |||
| 5 | Лабораторна робота №2. Dockerfile з багатоетапною збіркою і порівнянням розмірів. | 2 | 5 | |||
| 6 | Лабораторна робота №3. Два контейнери разом і ізольована мережа. | 2 | 5 | |||
| Всього по темі: | 27 | 6 | 6 | 15 | ||
| Модуль 2. Керування пам'яттю: межа безпеки | ||||||
| 7 | Лекція 4. Чому програми псують пам’ять: ціна помилки керування пам’яттю. | 2 | ||||
| 8 | Лекція 5. Володіння (ownership): хто власник значення. | 2 | ||||
| 9 | Лекція 6. Запозичення і зрізи (borrowing, slices). | 2 | ||||
| 10 | Лекція 7. Option і Result: відсутність і помилка як тип. | 2 | ||||
| 11 | Лабораторна робота №4. Перший проєкт на Cargo з юніт-тестом. | 2 | 5 | |||
| 12 | Лабораторна робота №5. Набір програм, що не компілюються (borrow checker). | 2 | 5 | |||
| 13 | Лабораторна робота №6. Структури і перелічення без null. | 2 | 5 | |||
| 14 | Лабораторна робота №7. Читання файлу з обробкою помилок. | 2 | 5 | |||
| Всього по темі: | 36 | 8 | 8 | 20 | ||
| Модуль 3. Від асемблера до WebAssembly: межа набору інструкцій | ||||||
| 15 | Лекція 8. Асемблер x86-64: мова, якою насправді говорить процесор. | 2 | ||||
| 16 | Лекція 9. WebAssembly як переносний асемблер: один код — дві машини. | 2 | ||||
| 17 | Лекція 10. Rust у WASM, межа з host-середовищем. | 2 | ||||
| 18 | Лабораторна робота №8. Модуль на WAT вручну. | 2 | 5 | |||
| 19 | Лабораторна робота №9. Той самий алгоритм у двох асемблерах. | 2 | 5 | |||
| 20 | Лабораторна робота №10. Ядро на Rust у WASM на сторінці з відтворюваною збіркою. | 2 | 5 | |||
| Всього по темі: | 27 | 6 | 6 | 15 | ||
| Всього по курсу: | 90 | 20 | 20 | 50 | ||
3.3. Теми лекційних занять
| № з/п |
Назва теми | К-сть годин | Літ-ра |
|---|---|---|---|
| Лекція 1. Три межі курсу: процес, адресний простір, системні виклики. | 2 | [3, 8, 15] | |
| Лекція 2. Простори імен, групи керування (cgroups), привілеї: ізоляція ядром без віртуалізації апаратури. | 2 | [3, 7, 15, 17] | |
| Лекція 3. Образ як шари, Dockerfile, кеш, багатоетапна збірка. | 2 | [7, 13, 14] | |
| Лекція 4. Чому програми псують пам’ять: ціна помилки керування пам’яттю. | 2 | [5, 8] | |
| Лекція 5. Володіння (ownership): хто власник значення. | 2 | [4, 5, 9] | |
| Лекція 6. Запозичення і зрізи (borrowing, slices). | 2 | [4, 5, 9] | |
| Лекція 7. Option і Result: відсутність і помилка як тип. | 2 | [4, 5, 9] | |
| Лекція 8. Асемблер x86-64: мова, якою насправді говорить процесор. | 2 | [1, 2, 8, 16] | |
| Лекція 9. WebAssembly як переносний асемблер: один код — дві машини. | 2 | [6, 11, 12] | |
| Лекція 10. Rust у WASM, межа з host-середовищем. | 2 | [6, 10, 12] | |
| Всього: | 20 |
3.4. Теми практичних занять
| № з/п |
Назва теми | К-сть годин | Літ-ра |
|---|
3.5. Теми семінарських занять
| № з/п |
Назва теми | К-сть годин | Літ-ра |
|---|
3.6. Теми лабораторних занять
| № з/п |
Назва теми | К-сть годин | Літ-ра |
|---|---|---|---|
| Лабораторна робота №1. Контейнер розробника й огляд просторів імен. | 2 | МВ | |
| Лабораторна робота №2. Dockerfile з багатоетапною збіркою і порівнянням розмірів. | 2 | МВ | |
| Лабораторна робота №3. Два контейнери разом і ізольована мережа. | 2 | МВ | |
| Лабораторна робота №4. Перший проєкт на Cargo з юніт-тестом. | 2 | МВ | |
| Лабораторна робота №5. Набір програм, що не компілюються (borrow checker). | 2 | МВ | |
| Лабораторна робота №6. Структури і перелічення без null. | 2 | МВ | |
| Лабораторна робота №7. Читання файлу з обробкою помилок. | 2 | МВ | |
| Лабораторна робота №8. Модуль на WAT вручну. | 2 | МВ | |
| Лабораторна робота №9. Той самий алгоритм у двох асемблерах. | 2 | МВ | |
| Лабораторна робота №10. Ядро на Rust у WASM на сторінці з відтворюваною збіркою. | 2 | МВ | |
|
20 |
3.7. Самостійна робота
| № з/п |
Назва теми | К-сть годин | Форми контролю | Літ-ра |
|---|---|---|---|---|
| 1 | СРС 1. Простори імен Linux (PID, NET, MNT, UTS, IPC, USER): що ізолює кожен | 2 | Захист відповідної лабораторної роботи (рівень 2) | [3, 7, 15, 17] |
| 2 | СРС 2. Групи керування cgroups v2: обмеження CPU та пам’яті контейнера | 3 | Захист відповідної лабораторної роботи (рівень 3) | [3, 7, 15, 17] |
| 3 | СРС 3. OverlayFS і шари образу: як влаштовано об’єднану файлову систему | 2 | Захист відповідної лабораторної роботи (рівень 2) | [7, 13, 14] |
| 4 | СРС 4. Відтворюваність збірки і довіра до образу (digest, pin версій) | 3 | Захист відповідної лабораторної роботи (рівень 3) | [7, 13, 14] |
| 5 | СРС 5. Мережі Docker (bridge/none/host) і службове DNS між контейнерами | 2 | Захист відповідної лабораторної роботи (рівень 2) | [7, 14, 16] |
| 6 | СРС 6. Керування секретами: env проти файлів проти docker secrets | 3 | Захист відповідної лабораторної роботи (рівень 3) | [7, 15, 16] |
| 7 | СРС 7. Модель володіння Rust проти збирача сміття і ручного керування пам’яттю | 2 | Захист відповідної лабораторної роботи (рівень 2) | [4, 5, 9] |
| 8 | СРС 8. Екосистема crates.io, Cargo.toml/Cargo.lock і семантичне версіонування залежностей | 3 | Захист відповідної лабораторної роботи (рівень 3) | [4, 9, 19] |
| 9 | СРС 9. Часи життя (lifetimes) у сигнатурах функцій: що саме перевіряє компілятор | 2 | Захист відповідної лабораторної роботи (рівень 2) | [4, 5, 9] |
| 10 | СРС 10. Rc<T> і RefCell<T>: спільне володіння та внутрішня мутабельність без гонок | 3 | Захист відповідної лабораторної роботи (рівень 3) | [4, 5, 9] |
| 11 | СРС 11. Алгебраїчні типи даних (enum) і вичерпне зіставлення зі зразком (match) | 2 | Захист відповідної лабораторної роботи (рівень 2) | [4, 5, 9] |
| 12 | СРС 12. Патерн «зробити некоректний стан непредставним» (make illegal states unrepresentable) | 3 | Захист відповідної лабораторної роботи (рівень 3) | [4, 5, 9] |
| 13 | СРС 13. Result<T, E> проти panic!: коли доречна відновна відмова, а коли зупинка програми | 2 | Захист відповідної лабораторної роботи (рівень 2) | [4, 5, 9] |
| 14 | СРС 14. Власні типи помилок і трейт std::error::Error: Display, Debug, Box<dyn Error> | 3 | Захист відповідної лабораторної роботи (рівень 3) | [4, 5, 9] |
| 15 | СРС 15. Стекова машина WebAssembly і структура текстового формату .wat | 2 | Захист відповідної лабораторної роботи (рівень 2) | [6, 11, 12] |
| 16 | СРС 16. Лінійна пам’ять WASM і межі безпеки пісочниці | 3 | Захист відповідної лабораторної роботи (рівень 3) | [6, 11, 12] |
| 17 | СРС 17. Угоди виклику (calling conventions) x86-64: System V AMD64 ABI | 2 | Захист відповідної лабораторної роботи (рівень 2) | [1, 2, 8] |
| 18 | СРС 18. Інструменти дизасемблювання: objdump та wasm-objdump, синтаксис AT&T проти Intel | 3 | Захист відповідної лабораторної роботи (рівень 3) | [1, 2, 8, 16] |
| 19 | СРС 19. Межа Rust↔︎JS через wasm-bindgen: маршалінг типів і виклик з JavaScript | 2 | Захист відповідної лабораторної роботи (рівень 2) | [6, 10, 12] |
| 20 | СРС 20. Відтворювані збірки Rust→WASM і цілісність ланцюга постачання (supply chain) | 3 | Захист відповідної лабораторної роботи (рівень 3) | [4, 6, 7, 10, 13] |
| Всього | 50 |
4. Критерії оцінювання (за формами роботи)
4.1. Критерії оцінювання рівня володіння теоретичними знаннями
ОЦІНКА «5» – «ВІДМІННО»
Студент повністю й впевнено знає навчальний матеріал, вільно їм володіє, легко відрізняє головне від другорядного, у підтвердження висновків наводить правильні приклади, самостійно робить необхідні висновки й узагальнення, вправи та завдання виконує швидко й вірно, дає точні та чіткі формулювання, вміє самостійно працювати, зразково виконує практичні завдання, вільно використовує одержані знання на практиці.
ОЦІНКА «4» – «ДОБРЕ»
Студент повністю й твердо знає навчальний матеріал, може виділити головне, відповідає переконливо, вдумливо, послідовно, без додаткових запитань. Вміє працювати з книгою. Деякий час роздумує над питаннями, але вміє долати труднощі самостійно. Вміє поєднати теорію з практикою. Практичні вправи виконує з незначною допомогою викладача.
ОЦІНКА «3» – «ЗАДОВІЛЬНО»
Студент засвоїв мінімум програмового матеріалу, виникають довгі розмірковування під час відповіді на видозмінені або ускладнені питання, інколи йому погрібні навідні запитання. У письмових роботах і під час практичних завдань допускає помилки, недостатньо добре може працювати з підручником, в основному може використовувати на практиці одержані теоретичні знання.
ОЦІНКА «2» – «НЕЗАДОВІЛЬНО»
Студент не засвоїв основного навчального матеріалу. Відповідає лише за допомогою навідних запитань, у відповідях не може виділити головного. Відповіді помилкові. Самостійно не розбирається в навчальному матеріалі, практичні завдання виконувати не може.
4.2. Критерії оцінювання навчальних досягнень при виконанні лабораторних робіт
Оцінювання лабораторної роботи здійснюється за трьома рівнями досягнення. Рівень 1 — автоматизовані тести до завдання виконуються успішно, звіт оформлено відповідно до вимог і прийнято без критичних зауважень. Рівень 2 — здобувач освіти захищає роботу, пояснюючи власний код. Рівень 3 — здобувач освіти виконав розширене завдання, передбачене умовою лабораторної роботи. Кожен наступний рівень передбачає виконання вимог попереднього.
Самостійна робота окремо не здається і не оцінюється. До кожної лабораторної роботи віднесено дві теми самостійної роботи: перша готує до захисту на рівні 2, друга — до виконання розширеного завдання на рівні 3. Здобувач освіти може досягти будь-якого рівня незалежно від того, чи опрацьовував він ці теми.
Рівень 1 фіксується на занятті за результатами автоматизованої перевірки. Рівні 2 і 3 підтверджуються на захисті, який може відбутися пізніше: оцінку за лабораторну роботу можна підвищити до завершення відповідного модуля.
За лабораторну роботу оцінка виставляється кожному здобувачеві освіти. Здобувач освіти оформляє письмовий звіт по лабораторній роботі; звіти зберігаються протягом навчального року. Обов’язковим при оцінюванні є врахування дотримання здобувачами освіти правил техніки безпеки під час виконання лабораторних робіт.
ОЦІНКА «5» (ВІДМІННО) — рівень 3. Виконано вимоги рівня 2; здобувач освіти виконав розширене завдання, опрацював граничні випадки та обґрунтував прийняті рішення, порівнявши їх з альтернативними.
ОЦІНКА «4» (ДОБРЕ) — рівень 2. Виконано вимоги рівня 1; здобувач освіти на захисті пояснює власний код, обґрунтовує вибір використаних конструкцій і відповідає на запитання по суті роботи.
ОЦІНКА «3» (ЗАДОВІЛЬНО) — рівень 1. Автоматизовані тести до завдання виконуються успішно, звіт прийнято без критичних зауважень. Роботу виконано за інструкцією; здобувач освіти відтворює послідовність дій і пояснює отриманий результат.
ОЦІНКА «2» (НЕЗАДОВІЛЬНО). Автоматизовані тести не виконуються, або звіт відсутній чи не відповідає виконаній роботі; здобувач освіти не може пояснити отриманий результат.
Умовою допуску до заліку є виконання всіх десяти лабораторних робіт щонайменше на рівні 1. Індивідуальний проєкт є необов’язковим і виконується за бажанням здобувача освіти.
4.3. Критерії оцінювання навчальних досягнень при виконанні тестових завдань
Тестова перевірка знань дає можливість індивідуалізувати процес контролю виконання здобувачами освіти програми курсу, об’єктивно перевірити знання теоретико-методичного матеріалу, виявити рівень сформованості в них професійних компетентностей.
Студентам пропонується виконати тестові завдання закритого типу (30 завдань з варіантами відповіді й однією або кількома правильними відповідями).
Оцінювання тестів здійснюється за п’ятибальною шкалою:
ОЦІНКА «5» (ВІДМІННО) - >= 85% правильних відповідей;
ОЦІНКА «4» (ДОБРЕ) - >= 75% правильних відповідей;
ОЦІНКА «3» (ЗАДОВІЛЬНО) - >= 60% правильних відповідей;
ОЦІНКА «2» (НЕЗАДОВІЛЬНО) - < 60% правильних відповідей.
4.4. Критерії оцінювання результатів навчання, здобутих у неформальній та інформальній освіті
Умови для зарахування результатів
Визнання результатів неформальної освіти здійснюється на основі одного з двох варіантів. Варіант А (документальний): надання сертифіката про успішне проходження онлайн-курсу від освітніх платформ. Варіант Б (практичний): виконання та захист індивідуального проєкту або доповіді-презентації, якщо курсом не передбачений сертифікат.
Загальні вимоги: зміст навчання має прямо корелювати з результатами навчання дисципліни; курс має бути пройдений протягом семестру; обов’язковою є верифікація знань шляхом бесіди або захисту результатів. Обов’язковою умовою зарахування є суворе дотримання принципів академічної доброчесності та етики використання інструментів штучного інтелекту (РН17).
Для дисципліни «Системне програмування» верифікація проводиться у формі захисту відповідної лабораторної роботи на рівні 2 або 3: здобувач освіти демонструє засвоєний матеріал у власному коді. Окрема процедура не запроваджується.
Критерії оцінювання результатів навчання (неформальна освіта)
| Оцінка | Критерій оцінювання | Вимоги до здобувача освіти (сертифікат або проєкт) |
|---|---|---|
| «5» (відмінно) | Зарахування результатів неформальної освіти / відмінне виконання проєкту | Надано релевантний сертифікат, підтверджений упевненими відповідями на співбесіді, або представлено результат навчання. Здобувач освіти демонструє глибоке розуміння матеріалу, вільне володіння вивченими методами, їх логічний зв’язок із програмою дисципліни та повне дотримання етичних норм. |
| «4» (добре) | Зарахування результатів неформальної освіти / добре виконання | Проєкт або результати курсу є актуальними та змістовними. Демонструється впевнене володіння ключовими поняттями та принципами дисципліни. |
| «3» (задовільно) | Зарахування результатів неформальної освіти / задовільне виконання | Наданий документ відповідає темі або вимогам. Загальний опис теми без глибокого аналізу. Зміст має ознаки копіювання, відсутня демонстрація власного практичного використання знань. |
| «2» (незадовільно) | Незарахування результатів неформальної освіти / незадовільне виконання | Наданий документ не відповідає темі або вимогам. Здобувач освіти не може відповісти на запитання щодо змісту курсу. Матеріал не відповідає темі, виявлено плагіат. |
Процедура підтвердження, якщо сертифікат відсутній
Якщо освітній курс не передбачає видачу сертифіката, здобувач освіти підтверджує знання одним із способів: презентація результатів (демонстрація набутих навичок на власному коді); звіт про навчання (короткий виклад ключових тез курсу та їх застосування в межах дисципліни); співбесіда-валідація (детальне опитування викладачем за програмою пройденого курсу).
5. Засоби оцінювання
Звіти про виконання лабораторних робіт з автоматизованою перевіркою результатів.
Захист лабораторної роботи з поясненням власного коду (рівень 2).
Захист розширеного завдання лабораторної роботи (рівень 3).
Захист необов’язкового індивідуального проєкту.
Тестовий контроль за темами.
Обов‘язкові та директорські контрольні роботи.
6.1. Основна література
Рисований О.М. Системне програмування: підручник для студентів напрямку «Комп’ютерна інженерія» вищих навчальних закладів. Том 1. — Видання четверте: виправлено та доповнено. — Х.: «Слово», 2015. — 576 с.
Тонкошкур О.С., Гниленко О.Б., Матвєєва Н.О., Морозов О.С. Архітектура комп’ютерів. Машинні команди та програмування на асемблері: навчальний посібник. — Д.: Вид-во «Нова Ідеологія», 2018. — 179 с.
Зайцев В.Г., Дробязко І.П. Операційні системи: навч. посіб. для студ. спеціальності 123 «Комп’ютерна інженерія» / КПІ ім. Ігоря Сікорського. — Київ: КПІ ім. Ігоря Сікорського, 2019. — 240 с.
Klabnik S., Nichols C. The Rust Programming Language. — 2nd ed. — San Francisco: No Starch Press, 2023.
Blandy J., Orendorff J., Tindall L. Programming Rust: Fast, Safe Systems Development. — 2nd ed. — Sebastopol: O’Reilly Media, 2021.
Sletten B. WebAssembly: The Definitive Guide. — Sebastopol: O’Reilly Media, 2021.
Nickoloff J., Kuenzli S. Docker in Action. — 2nd ed. — Shelter Island: Manning Publications, 2019.
Bryant R.E., O’Hallaron D.R. Computer Systems: A Programmer’s Perspective. — 3rd ed. — Pearson, 2016.
6.2. Додаткова література
Іщеряков С.М. Основи мови Асемблер: конспект лекцій з курсів «Системне програмування», «Системне програмування та операційні системи». — Івано-Франківськ: Факел, 2004. — 52 с.
Дудзяний І.М., Черняхівський В.В. Програмування мовою Асемблера: навчальний посібник. — Львів, 2002. — 112 с.
6.3. Електронні ресурси
The Rust Programming Language (офіційне видання). URL: https://doc.rust-lang.org/book/
Rust and WebAssembly (офіційна документація). URL: https://rustwasm.github.io/docs/book/
WebAssembly Core Specification. URL: https://webassembly.github.io/spec/core/
WebAssembly — MDN Web Docs. URL: https://developer.mozilla.org/en-US/docs/WebAssembly
Docker Documentation. URL: https://docs.docker.com/
Docker Compose. URL: https://docs.docker.com/compose/
Linux Programmer’s Manual: namespaces(7), cgroups(7). URL: https://man7.org/linux/man-pages/man7/namespaces.7.html
NASM — The Netwide Assembler: Documentation. URL: https://www.nasm.us/docs.php
Clippy: набір перевірок коду мовою Rust. URL: https://doc.rust-lang.org/clippy/
Примітка. Основну літературу складають фундаментальні підручники, які зберігають чинність поза п’ятирічним горизонтом. Вимогу щодо актуальності джерел забезпечує підрозділ 6.3, перелік якого переглядається щороку перед початком навчального року.