Системне програмування на С і С++ - Робоча програма навчальної дисципліни (Силабус)
Реквізити навчальної дисципліни
Рівень вищої освіти | Перший (бакалаврський) |
---|---|
Галузь знань | 12 Інформаційні технології |
Спеціальність | 121 Інженерія програмного забезпечення; 123 Комп’ютерна інженерія; 126 Інформаційні системи та технології |
Освітня програма | Інженерія програмного забезпечення комп’ютерних систем; Інженерія програмного забезпечення інформаційних систем; Комп’ютерні системи та мережі; Інтегровані інформаційні системи; Інформаційні управляючі системи та технології; Інформаційне забезпечення робототехнічних систем |
Статус дисципліни | Вибіркова |
Форма навчання | очна(денна) |
Рік підготовки, семестр | 3 курс, осінній семестр |
Обсяг дисципліни | 5 кредитів / 150 годин |
Семестровий контроль/ контрольні заходи | Залік/ Модульна контрольна робота (МКР)/Лабораторні роботи |
Розклад занять | http://rozklad.kpi.ua/ |
Мова викладання | Українська |
Інформація про керівника курсу / викладачів |
Лектор: доц., к.т.н., Ковальов Микола Олександрович, kovua@yahoo.com, тел. 067-680-20-09 Лабораторні роботи: ст. вик., к.е.н. Густера Олег Михайлович, gusteraom87@gmail.com, @Oleg_Gustera, тел. 098-247-42-75 |
Розміщення курсу | Кампус, Google classroom |
Програма навчальної дисципліни
Опис навчальної дисципліни, її мета, предмет вивчання та результати навчання
Навчальна дисципліна «Системне програмування на С і С++» повинна сформувати у студентів навички розробки, налагодження і тестування системного програмного забезпечення (ПЗ) для POSIX сумісних (сертифікованих) операційних систем (ОС) з використанням мови програмування С (С++), в тому числі на рівні ядра ОС Linux. Розглядаються також питання розробки прикладного програмного забезпечення, створення на базі бібліотек QT графічних інтерфейсів, файлів, баз даних і мережевих застосувань.
Мета вивчення дисципліни підготовка висококваліфікованих спеціалістів, які здатні розробляти, налагоджувати і тестувати системне і прикладне програмне забезпечення із застосуванням мови програмування С(С++).
Предметом вивчення є процес розробки, налагодження, тестування системного програмного забезпечення, розробленого з використанням мови програмування С (С++), модулі ядра Unix-подібних ОС, бібліотеки QT.
Основні завдання навчальної дисципліни
Знання
синтаксису мови С (С++), навичок програмування;
технологічного циклу розробки, налагодження і тестування системного програмного забезпечення;
технологічного циклу розробки, налагодження і тестування прикладного програмного забезпечення з використанням обраного IDE, наприклад Qt Creator;
основ POSIX сумісних (сертифікованих) ОС у контексті розробки ПЗ;
технології і парадигм розробки модулів ядра для Unix-подібних ОС.
Уміння
користуватися компілятором GCC (G++), обраним IDE, наприклад Qt Creator;
розробляти, налагоджувати і тестувати системне програмне забезпечення з використанням С (С++);
розробляти, налагоджувати і тестувати прикладне програмне забезпечення з використанням С (С++) і стандартних бібліотек Qt;
розробляти модулі ядра Linux.
Місце в структурно-логічній схемі навчання за відповідною освітньою програмою
Пререквізити дисципліни
Вміти програмувати на початковому рівні, знати одну з мов програмування, базові знання дискретної математики, архітектури комп'ютера, знання англійської мови відповідно до програми, знання теорії і практики баз даних.
Постреквізити дисципліни
Вміти розробляти, налагоджувати і тестувати системне і прикладне програмне забезпечення з використанням С (С++) з використанням одного обраного компілятору (IDE) і типових бібліотек мови програмування.
Вміти користуватися відладчиками, самостійно набувати знання з питань системного і прикладного програмного забезпечення.
Зміст навчальної дисципліни
ТЕМА 1. ТЕХНОЛОГІЯ СТВОРЕННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ З ВИКОРИСТАННЯМ МОВИ С (С++) І КОМПІЛЯТОРА GCC
ТЕМА 2. ОСОБЛИВОСТІ СИСТЕМНОГО ПРОГРАМУВАННЯ ДЛЯ POSIX ОС.
ТЕМА 3. ОСНОВИ ВИКОРИСТАННЯ БІБЛІОТЕК QT У ПАРАДИГМІ ОБ'ЄКТНО-ОРІЕНТОВАННОГО ПРОГРАМУВАННЯ.
ТЕМА 4. РОЗРОБКА ПРОГРАМНИХ ЗАСТОСУНКІВ ДЛЯ РОБОТИ З БАЗАМИ ДАНИХ НА ОСНОВІ БІБЛІОТЕК QT У ПАРАДИГМІ ОБ'ЄКТНО-ОРІЕНТОВАННОГО ПРОГРАМУВАННЯ.
ТЕМА 5. РОЗРОБКА ФАЙЛОВИХ І МЕРЕЖЕВИХ ЗАСТОСУНКІВ У POSIX СУМІСНИХ (СЕРТИФІКОВАНИХ) ОС.
ТЕМА 6. БАЗОВІ ТЕХНОЛОГІЇ РОЗРОБКИ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ НА РІВНІ ЯДРА ОС LINUX.
ТЕМА 7. ОСНОВИ РОЗРОБКИ МОДУЛІВ ЯДРА ОС LINUX.
ТЕМА 8. АРХИТЕКТУРА ПРОГРАМНОГО ЗАСТОСУНКУ НА БАЗІ МОДУЛЯ ЯДРА.
Навчальні матеріали та ресурси
Базова література:
Тарарака В.Д. Архітектура комп'ютерних систем: навчальний посібник / В.Д. Тарарака. – Житомир: ЖДТУ, 2018. – 383 с.
Шеховцов В. А. Операційні системи. – К.: Видавнича група BHV, 2005. – 576c
Marc Gregoire.Nicholas A. Solter.Scott J. Kleper. PROFESSIONAL C++.Second Edition. 2011 by John Wiley & Sons, Inc., Indianapolis, Indiana - 816 р.
Комп’ютерні системи реального часу, навчальний посібник [Електронний ресурс]: навч. посіб. для здобувачів ступеня магістра за освітньою програмою ”Системне програмування та спеціалізовані комп’ютерні системи” спеціальності 123 «Комп’ютерна інженерія»/ В. Г. Зайцев, Є. І. Цибаєв; КПІ ім. Ігоря Сікорського. - Електронні текстові дані (1 файл: 4 Мбайт). - Київ: КПІ ім. Ігоря Сікорського, 2019. - 162 с.
Додаткова література
Системне програмування [Електронний ресурс]: методичні рекомендації до виконання лабораторних робіт для студентів кафедри Автоматики та управління у технічних системах заочної форми навчання / НТУУ «КПІ» ; уклад. П. Ю. Катін. – 2-ге вид., випр. і доп. – Електронні текстові дані (1 файл: 432 Кбайт). – Київ : НТУУ «КПІ», 2015. – 73 с. – Назва з екрана. https://ela.kpi.ua/handle/123456789/11653
Michael Kerrisk. ТHE LINUX PROGRAMMING INTERFACE. A Linux and UNIX® System Programming Handbook
PUHAN, Janez, Operating Systems, Embedded Systems, and Real-Time Systems [Electronic source] / Janez Puhan Faculty of Electrical Engineering. - 1st ed. -El. book. - Ljubljana : FE Publishing, 2015
Linux System Programming by Robert Love Copyright © 2007 O'Reilly Media, Inc. All rights reserved. Printed in the United States of America.Published by O'Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472.
Навчальний контент
Методика опанування навчальної дисципліни (освітнього компонента)
№ з/п | Назва теми лекції та перелік основних питань |
---|---|
ТЕМА 1. ТЕХНОЛОГІЯ СТВОРЕННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ З ВИКОРИСТАННЯМ МОВИ С (С++) І КОМПІЛЯТОРА GCC | |
1 | Загальна концепція і базова технологія системного програмування у POSIX сумісних (сертифікованих) ОС. |
2 | Технології розробки системних програм для POSIX сумісних (сертифікованих) ОС. |
ТЕМА 2. СИСТЕМНЕ ПРОГРАМУВАННЯ ДЛЯ POSIX ОС. | |
3 | Особливості синтаксису мови програмування С (С++). |
4 | Керування багатопотоковістю і пам'яттю на системному рівні. |
ТЕМА 3. ОСНОВИ ВИКОРИСТАННЯ БІБЛІОТЕК QT У ПАРАДИГМІ ОБ'ЄКТНО-ОРІЄНТОВАНОГО ПРОГРАМУВАННЯ. | |
5 | Особливості об'єктно-орієнтованого програмування мовою С++. |
6 | Графічний інтерфейс на основі бібліотек Qt у парадигмі об'єктно-орієнтованого програмування. |
ТЕМА 4. РОЗРОБКА ПРОГРАМНИХ ЗАСТОСУНКІВ ДЛЯ РОБОТИ З БАЗАМИ ДАНИХ НА ОСНОВІ БІБЛІОТЕК QT У ПАРАДИГМІ ОБ'ЄКТНО-ОРІЕНТОВАННОГО ПРОГРАМУВАННЯ. | |
7 | Програмування з використанням парадигми об'єктно-орієнтованого програмування. |
8 | Розробка програмних застосунків для роботи з базами даних на основі бібліотек Qt у парадигмі об'єктно-оріентованного програмування. |
ТЕМА 5. РОЗРОБКА ФАЙЛОВИХ І МЕРЕЖЕВИХ ЗАСТОСУНКІВ У POSIX СУМІСНИХ (СЕРТИФІКОВАНИХ) ОС. | |
9 | Основи технології для роботи з файлами у POSIX сумісних (сертифікованих) ОС. |
10 | Розробка файлових і мережевих застосунків у POSIX сумісних (сертифікованих) ОС. |
ТЕМА 6. БАЗОВІ ТЕХНОЛОГІЇ РОЗРОБКИ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ НА РІВНІ ЯДРА ОС LINUX. | |
11 | Архітектурні особливості будови ядра. |
12 | Технології розробки програмного забезпечення на рівні ядра ОС Linux. |
ТЕМА 7. ОСНОВИ РОЗРОБКИ МОДУЛІВ ЯДРА ОС LINUX. | |
13 | Загальна програмна інфраструктура модулів ядра ОС Linux. |
14 | Розробка модулів ядра ОС Linux. |
ТЕМА 8. АРХИТЕКТУРА ПРОГРАМНОГО ЗАСТОСУНКУ НА БАЗІ МОДУЛЯ ЯДРА. | |
15 | Архітектура програмного застосунку на базі модуля ядра з текстовим інтерфейсом користувача. |
16 | Архітектура програмного застосунку на базі модуля ядра з графічним інтерфейсом користувача. |
№ з/п | Назва лабораторної роботи. | Кількість ауд. годин |
---|---|---|
1 | Технології розробки системних програм для POSIX сумісних (сертифікованих) операційних систем. | 2 |
2 | Створення статичних і динамічних бібліотек для POSIX сумісних (сертифікованих) операційних систем | 4 |
3 | Розробка графічного інтерфейсу з використанням бібліотеки Qt для стандартних потоків вводу-виводу | 4 |
4 | Технології розробки модулів ядра для операційної системи Linux. | 4 |
5 | Створення віртуального символьного пристрою у варіанті модуля ядра Linux і прототипів системних викликів | 4 |
Самостійна робота студента
№ з/п | Назва теми, що виноситься на самостійне опрацювання | Кількість годин СРС |
---|---|---|
1 | Глобальні та локальні змінні. Концепція вкладеного циклу. Типи даних користувача (структури, об'єднання), масиви. Масиви. Властивості масивів. Зв'язок масивів і покажчиків. C-рядки, особливості масивів символів. Поняття архітектури операційної системи. Ядро і системне програмне забезпечення. Привілейований режим і режим користувача. Монолітна архітектура. Багаторівнева архітектура. Мікроядрова архітектура. | 12 |
2 | Права і користувачі. Загальний опис структури ОС Linux. Створення і керування користувачами. Опис і завдання прав доступу користувачів. Основні групи користувачів.Файлові системи і загальні принципи організації файлового простору. Опис стандартної структури каталогів UNIX-систем. Призначення основних каталогів. Монтування файлових систем. Права доступу до файлів. Мультипрограмування. Процес і поток. Моделі процесів і потоків. Потоки ядра і потоки користувача. Керування потоками, планування. Опис процесів і потоків: керуючий блок, образ, дескриптор і контекст. Стани потоків. Створення процесів | 11 |
3 | Оголошення, опис і виклик функції(методів). Параметри функції (методів) та типи значення що повертає. Скалярні величини як параметри функцій (методів). Структури та рядки як параметри функцій (методів). Масиви як параметри функцій (методів). Покажчики і посилання як параметри функції (методів). Загальний огляд стандартної бібліотеки С++. Рядки, потоки вводу-виводу, локалізація, виключення, математичні утиліті, часові утиліти, випадкові числа, кортежі, регулярні вирази, стандартна бібліотека шаблонів, стандартні бібліотечні алгоритми. | 10 |
4 | Неявне перетворення об’єктів похідного класу до базового. Спадкування у конструюванні програмного забезпечення. Складне спадкування. Перетворення покажчиків базового класу у покажчики на похідний клас.Перевизначення елементів базового класу у похідному класі. Відкриті, захищені та закриті базові класи. Безпосередні та непрямі базові класи. Використання конструктора і деструктора у похідному класі. Механізми абстракції і реалізація інтерфейсів у мові програмування С++. | 10 |
5 | Виклик віддалених процедур Remote Procedure Call (RPC). Налаштування і управління периферійними пристроями МПС на прикладі СОМ порту. Дослідження сигналу лінії TxD. Запис і читання інформації СОМ порту у синхронному режимі. | 10 |
6 | Види тестування за запуском коду на виконання: статичне, динамічне. За доступом до коду та архітектури додатка: вlack box, White box, Gray box. | 10 |
7 | Патерни проектування що породжують. Загальний опис патернів: Абстрактна фабрика, будівельник, фабричний метод, прототип. Докладний розгляд патерну одинак. Структурні патерни проектування. Загальний опис патернів: Адаптер, Міст, Компонувальник. Докладний опис патерну Декоратор. | 15 |
8 | Логічна і фізична адресація пам'яті. Віртуальна пам'ять. Динамічний розподіл пам'яті. Пули пам'яті. Куча за замовчуванням. Створення додаткового пулу пам'яті. Виділення та звільнення пам'яті в кучі. Перевірка коректності даних, які розміщені в кучі. Отримання інформації про захист сторінок пам'яті. | 9 |
9 | Організація протоколів прикладного рівня. Архітектура мережної підтримки Windows та Linux. Завдання керування введенням-виведенням. Фізична організація пристроїв введення-виведення. Контролери, регістри. Організація програмного забезпечення введення-виведення. | 9 |
В підсумку | 96 |
Політика та контроль
Політика навчальної дисципліни (освітнього компонента)
Система вимог, які викладач ставить перед студентом:
кодекс честі: http://kpi.ua/code;
правила внутрішнього розпорядку: http://kpi.ua/admin-rule;
положення про організацію освітнього процесу в КПІ ім. Ігоря Сікорського: https://kpi.ua/regulations.
Висока присутність на лекціях є обов’язковою за винятком поважних причин.
Протягом семестру студенти:
- виконують та захищають лабораторні роботи у відповідні терміни;
- пишуть МКР;
- повинні позитивно закрити 2 атестації.
По закінченні навчального процесу студенти складають залік.
Види контролю та рейтингова система оцінювання результатів навчання (РСО)
Рейтинг студента з кредитного модуля складається з балів, що він отримує за:
– виконання 5 лабораторних робіт (5х15=75 балів максимально).
– виконання МКР (25 балів максимально);
– активну роботу на заняттях (до 5 балів);
штраф.
Лабораторні роботи оцінюються по 15 балів. Максимальна кількість балів за усі 5 виконаних і зданих робіти дорівнює 75 балів. Оцінювання робіт:
– якщо виконані невчасно штрафуються на 20-40% від максимальної кількості балів в залежності від терміну запізнення;
– якщо виконаний не самостійно або не у відповідності з варіантом, не зараховується.
Обов’язкові терміни виконання робіт:
«1» та «2» – до 1-о календарного контролю;
«3» та «4» – до 2-о календарного контролю;
«5» – до кінця семестрових занять.
Завдання МКР і залікової роботи (оцінюється максимально в 60 балів) складаються з 2-х питань зі списку викладача.
Умовою позитивної 1-ї атестації є здача мінімум перших 2-х робіт, 2-ї – 4-х.
Штрафні бали віднімаються за низьку присутність на лекціях (до 5 балів).
Сума рейтингових балів, отриманих студентом протягом семестру, за умови зарахування контрольної роботи та штрафу, переводиться до підсумкової оцінки згідно з таблицею нижче.
Якщо сума балів менша за 60, але МКР зарахована, студент виконує залікову контрольну роботу. Те ж відноситься до випадку, коли студент бажає підвищити свій результат. Тоді остаточний рейтинг складається із балів, отриманих за виконання лабораторних робіт та залікової контрольної роботи.
Бали | Оцінка |
95 - 100 | Відмінно |
85 - 94 | Дуже добре |
75 - 84 | Добре |
65 - 74 | Задовільно |
60 - 64 | Достатньо |
Менше 60 | Незадовільно |
контрольні не зараховано | Не допущено |
Додаткова інформація з дисципліни (освітнього компонента)
Якщо студент переведений з іншого навчального закладу (або кафедри), де вивчав дисципліну з відповідною програмою та успішно її захистив, тоді можливий перезалік дисципліни через подання заяви в деканаті й узгодження з викладачем.
Робочу програму навчальної дисципліни (силабус):
Складено: доц. кафедри ІСТ ФІОТ, к.т.н, Ковальов Микола Олександрович
Ухвалено кафедрою ІСТ ФІОТ (протокол № 16 від 12.06.2024)
Погоджено Методичною комісією факультету (протокол № 10 від 21.06.2024 р.)