Системне програмування на С і С++ - Робоча програма навчальної дисципліни (Силабус)

Реквізити навчальної дисципліни

Рівень вищої освіти Перший (бакалаврський)
Галузь знань 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 графічних інтерфейсів, файлів, баз даних і мережевих застосувань.

Мета вивчення дисципліни ­ підготовка висококваліфікованих спеціалістів, які здатні розробляти, налагоджувати і тестувати системне і прикладне програмне забезпечення на основі мови програмування С(С++)

Предметом вивчення процес розробки, налагодження, тестування системного програмного забезпечення, мова програмування С (С++), модулі ядра ОС Linux, бібліотеки QT.

Основні завдання навчальної дисципліни

Знання

  • синтаксису мови С (С++), стилів і парадигм програмування;

  • технологічного циклу розробки, налагодження і тестування системного програмного забезпечення з використання GCC (G++);;

  • технологічного циклу розробки, налагодження і тестування прикладного програмного забезпечення з використанням обраного IDE, наприклад Qt Creator;

  • основ POSIX сумісних (сертифікованих) операційних систем у контексті розробки ПЗ;;

  • технології і парадигм розробки модулів ядра для Linux.

Уміння

  • користуватися компілятором GCC (G++), обраним IDE, наприклад Qt Creator;

  • розробляти, налагоджувати і тестувати системне програмне забезпечення з використанням С (С++);

  • розробляти, налагоджувати і тестувати прикладне програмне забезпечення з використанням С (С++) і стандартних бібліотек Qt;

  • розробляти модулі ядра Linux.

Місце в структурно-логічній схемі навчання за відповідною освітньою програмою

Пререквізити дисципліни

Вміти програмувати на початковому рівні, знати одну з мов програмування, базові знання дискретної математики, архітектури комп'ютера, знання англійської мови відповідно до програми, знання теорії і практики баз даних.

Постреквізити дисципліни

Вміти розробляти, налагоджувати і тестувати системне і прикладне програмне забезпечення з використанням С (С++) з використанням одного обраного компілятору (IDE) і типових бібліотек мови програмування.

Вміти користуватися налагоджувачами (дебагерами), самостійно набувати знання з питань системного і прикладного програмного забезпечення.

Зміст навчальної дисципліни

ТЕМА 1. ТЕХНОЛОГІЯ СТВОРЕННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ З ВИКОРИСТАННЯМ МОВИ С (С++) І КОМПІЛЯТОРА GCC

ТЕМА 2. ОСОБЛИВОСТІ СИСТЕМНОГО ПРОГРАМУВАННЯ ДЛЯ POSIX ОПЕРАЦІЙНИХ СИСТЕМ.

ТЕМА 3. ОСНОВИ ВИКОРИСТАННЯ БІБЛІОТЕК QT У ПАРАДИГМІ ОБ'ЄКТНО-ОРІЕНТОВАННОГО ПРОГРАМУВАННЯ.

ТЕМА 4. РОЗРОБКА ПРОГРАМНИХ ЗАСТОСУНКІВ ДЛЯ РОБОТИ З БАЗАМИ ДАНИХ НА ОСНОВІ БІБЛІОТЕК QT У ПАРАДИГМІ ОБ'ЄКТНО-ОРІЕНТОВАННОГО ПРОГРАМУВАННЯ.

ТЕМА 5. РОЗРОБКА ФАЙЛОВИХ І МЕРЕЖЕВИХ ЗАСТОСУНКІВ У POSIX СУМІСНИХ (СЕРТИФІКОВАНИХ) ОПЕРАЦІЙНИХ СИСТЕМАХ.

ТЕМА 6. БАЗОВІ ТЕХНОЛОГІЇ РОЗРОБКИ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ НА РІВНІ ЯДРА ОПЕРАЦІЙНОЇ СИСТЕМИ LINUX.

ТЕМА 7. ОСНОВИ РОЗРОБКИ МОДУЛІВ ЯДРА ОПЕРАЦІЙНОЇ СИСТЕМИ LINUX. ТЕМА 8. АРХИТЕКТУРА ПРОГРАМНОГО ЗАСТОСУНКУ НА БАЗІ МОДУЛЯ ЯДРА.

Навчальні матеріали та ресурси

Базова література:

  1. Замятин А.В., Сущенко С.П. Операционные системы : учебное пособие / А.В. Замятин, С.П. Су

  2. Тарарака В.Д. Архітектура комп'ютерних систем: навчальний посібник / В.Д. Тарарака. – Житомир: ЖДТУ, 2018. – 383 с.

  3. Шеховцов В. А. Операційні системи. – К.: Видавнича група BHV, 2005. – 576c

  4. Б.Керниган, Д.Ритчи, А.Фьюер. Язык программирования Си. Задачи по языку Си. М.: Финансы и статистика, 1985.— 320 с.: ил.

  5. Marc Gregoire.Nicholas A. Solter.Scott J. Kleper. PROFESSIONAL C++.Second Edition. 2011 by John Wiley & Sons, Inc., Indianapolis, Indiana - 816 р.

  6. Комп’ютерні системи реального часу, навчальний посібник [Електронний ресурс]: навч. посіб. для здобувачів ступеня магістра за освітньою програмою ”Системне програмування та спеціалізовані комп’ютерні системи” спеціальності 123 «Комп’ютерна інженерія»/ В. Г. Зайцев, Є. І. Цибаєв; КПІ ім. Ігоря Сікорського. - Електронні текстові дані (1 файл: 4 Мбайт). - Київ: КПІ ім. Ігоря Сікорського, 2019. - 162 с.

Додаткова література

  1. Програмування 3. Системне програмування [Електронний ресурс]: методичні рекомендації до виконання лабораторних робіт для студентів кафедри Автоматики та управління у технічних системах заочної форми навчання / НТУУ «КПІ» ; уклад. П. Ю. Катін. – 2-ге вид., випр. і доп. – Електронні текстові дані (1 файл: 432 Кбайт). – Київ : НТУУ «КПІ», 2015. – 73 с. – Назва з екрана. https://ela.kpi.ua/handle/123456789/11653

  2. Michael Kerrisk. ТHE LINUX PROGRAMMING INTERFACE. A Linux and UNIX® System Programming Handbook

  3. Scott Maxwell, Linux Core Kernel Commentary (Ядро Linux в комментариях),

  4. http://www.netlib.narod.ru/library/book0010/toc.htm .

  5. 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

  6. https://doc-snapshots.qt.io/qt5-5.9/qtsql-sqlbrowser-example.html

  7. https://doc-snapshots.qt.io/qt5-5.9/qtexamples.html

  8. 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

Політика та контроль

Політика навчальної дисципліни (освітнього компонента)

Система вимог, які викладач ставить перед студентом:

Висока присутність на лекціях є обов’язковою за винятком поважних причин.

Протягом семестру студенти:

- виконують та захищають лабораторні роботи у відповідні терміни;

- пишуть МКР;

- повинні позитивно закрити 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 Незадовільно
контрольні не зараховано Не допущено

Додаткова інформація з дисципліни (освітнього компонента)

Якщо студент переведений з іншого навчального закладу (або кафедри), де вивчав дисципліну з відповідною програмою та успішно її захистив, тоді можливий перезалік дисципліни через подання заяви в деканаті й узгодження з викладачем.

Робочу програму навчальної дисципліни (силабус):

Складено доцент кафедри ІСТ ФІОТ, к.т.н, Ковальов Микола Олександрович

Ухвалено кафедрою ІСТ ФІОТ (протокол № 21 від 29.06.2023)

Погоджено Методичною комісією факультету (протокол № 11 від 29.06.2023)