ОСНОВИ РОЗРОБКИ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ НА ПЛАТФОРМІ NODE.JS - Робоча програма навчальної дисципліни (Силабус)
Реквізити навчальної дисципліни
Рівень вищої освіти | Перший (бакалаврський) |
---|---|
Галузь знань | 12 «Інформаційні технології» |
Спеціальність | 121 Інженерія програмного забезпечення, 123 Комп’ютерна інженерія, 126 Інформаційні системи та технології |
Освітня програма | Інженерія програмного забезпечення комп’ютерних систем, Інженерія програмного забезпечення інформаційних систем, Комп’ютерні системи та мережі, Інтегровані інформаційні системи, Інформаційні управляючі системи та технології, Інформаційне забезпечення робототехнічних систем |
Статус дисципліни | Вибіркова |
Форма навчання | Очна (денна) |
Рік підготовки, семестр | 2 курс, весняний семестр |
Обсяг дисципліни | 4 кредити ECTS /120 годин (36 годин лекцій, 18 годин лабораторних робіт; 66 годин самостійна робота студента) |
Семестровий контроль/ контрольні заходи | Залік, МКР, захист лабораторних робіт |
Розклад занять | 1 лекція (2 години) 1 раз на тиждень; 1 лабораторна робота (2 години) 1 раз на 2 тижні. |
Мова викладання | Українська |
Інформація про керівника курсу / викладачів |
Лектор: к.т.н. Букасов Максим Михайлович, @bukasov Лабораторні роботи: к.т.н. Букасов Максим Михайлович, @bukasov |
Розміщення курсу | https://drive.google.com/drive/folders/1epluZW3ybjHcKX2rOwSlyGsr4hqFYnkq |
Програма навчальної дисципліни
Опис навчальної дисципліни, її мета, предмет вивчання та результати навчання
Силабус освітнього компонента «Основи розроблення програмного забезпечення на платформі Node.js» складено відповідно до освітньої програми підготовки бакалаврів спеціальностей 126 – Інформаційні системи і технології, 121 – Інженерія програмного забезпечення, 123 – Комп’ютерна інженерія.
Метою навчальної дисципліни є формування та закріплення у студентів наступних компетентностей: Здатність до абстрактного мислення, аналізу та синтезу; Здатність спілкуватися іноземною мовою; Здатність розробляти проекти та управляти ними; Здатність оцінювати та забезпечувати якість виконуваних робіт; Здатність розробляти та застосувати ІСТ, необхідні для розв’язання стратегічних і поточних задач; Здатність формулювати вимоги до етапів життєвого циклу сервіс-орієнтованих інформаційних систем; Здатність проектувати інформаційні системи з урахуванням особливостей їх призначення, неповної/недостатньої інформації та суперечливих вимог..
Предмет навчальної дисципліни – платформа Node.js, та її використання для створення вебзастосунків та вебсервісів.
Програмні результати навчання, на формування та покращення яких спрямована дисципліна: Відшуковувати необхідну інформацію в науковій і технічній літературі, базах даних, інших джерелах, аналізувати та оцінювати цю інформацію; Вільно спілкуватись державною та іноземною мовами в науковій, виробничій та соціально-суспільній сферах діяльності; Приймати ефективні рішення з проблем розвитку інформаційної інфраструктури, створення і застосування ІСТ; Управляти процесами розробки, впровадження та експлуатації у сфері ІСТ, які є складними, непередбачуваними і потребують нових стратегічних та командних підходів; Визначати вимоги до ІСТ на основі аналізу бізнес-процесів та аналізу потреб зацікавлених сторін, розробляти технічні завдання; Обґрунтовувати вибір технічних та програмних рішень з урахуванням їх взаємодії та потенційного впливу на вирішення організаційних проблем, організовувати їх впровадження та використання; Здійснювати обґрунтований вибір проектних рішень та проектувати сервіс-орієнтовану інформаційну архітектуру підприємства (установи, організації тощо).
Пререквізити та постреквізити дисципліни
Для успішного засвоєння дисципліни студент повинен володіти освітніми компонентами «Програмування-1. Основи програмування», «Програмування-2. Структури даних та алгоритми» та «Бази даних».
Зміст навчальної дисципліни
Розділ 1. Загальні положення
Тема 1.1. Структура та зміст курсу. РСО
Розділ 2. Мова програмування JavaScript
Тема 2.1. Загальні поняття про мову JavaScript та платформу Node.js
Тема 2.2. Основи синтаксису JavaScript
Тема 2.3. Функції JavaScript
Тема 2.4. Особливості використання функцій при роботи з об’єктами JavaScript
Тема 2.5. ООП у JavaScript
Тема 2.6. Особливості синтаксису ECMAScript 6+
Тема 2.7. Особливості роботи з масивами в JavaScript
Тема 2.8. Асоціативні масиви та множини.
Розділ 2. Платформа Node.js
Тема 3.1. Модулі Node.js
Тема 3.2. Асинхронне програмування в Node.js
Тема 3.3. Використання SQL в Node.js
Тема 3.4. Використання ORM Sequelize в Node.js
Тема 3.5. Створення клієнт-серверних застосунків на платформі Node.js
Тема 3.6. Створення веб-застосунків за допомогою express.js
Тема 3.7. Безпека веб-застосунків
Тема 3.8. Створення RESTful веб-сервісів
Навчальні матеріали та ресурси
Основна література
Фрімен Ерік. Head First. Програмування на JavaScript. Легкий для сприйняття довідник.- Фабула, 2022. - 672 с.
Craig Backler. Node.js: Novice to Ninja. - SitePoint Pty. Ltd, - 2022. - 341 p.
Basarat Ali Syed. Beginning Node.js. - Apress, 2014. - 426 p.
Додаткова література
- Node.js in Action / Mike Cantelon, Marc Harter, TJ Holowaychuk, Nathan Rajlich. Manning Publications, – 2013. – 416 p.
Навчальний контент
Методика опанування навчальної дисципліни (освітнього компонента)
Лекційні заняття
№ з/п |
Назва теми лекції та перелік основних питань (перелік дидактичних засобів, посилання на інформаційні джерела) |
---|---|
1 | Тема 1.1. Структура та зміст курсу. РСО Тема 2.1. Загальні поняття про мову JavaScript та платформу Node.js Основні питання: загальні відомості про платформу Node.js, область її застосування, переваги та недоліки у порівнянні з іншими платформами. Історія розвитку мови програмування JavaScript. |
2 | Тема 2.1. Основи синтаксису JavaScript Основні питання: Типи даних. Динамічна типізація та приведення типів. Арифметичні та логічні оператори. Приведення типів. Суворе та несуворе порівняння. Оголошення та використання змінних. Оператори розгалуження та цикли. |
3 | Тема 2.3. Функції JavaScript Основні питання: Типи функцій. Декларація та виклик функцій. Передача аргументів та повернення значень. Локальні та глобальні змінні. Hoisting. Рекурсія. Замикання. |
4 | Тема 2.4. Особливості використання функцій при роботи з об’єктами JavaScript Основні питання: Функції-конструктори. Контекст виклику. Методи call(), apply() та bind(). Аксесори (гетери та сетери). |
5 | Тема 2.5. Особливості реалізації ООП в JavaScript Основні питання: Динамічна типізація. Прототипи. Ланцюжки прототипів. Тип Object. Створення об’єктів. |
6 | Тема 2.6. Особливості синтаксису ECMAScript версій 6+ Основні питання: Декларація зміних в локальній області видимості. Деструктуризація. Параметри функцій за замовченням. Класи. Статичні та приватні елементи класів. |
7 | Тема 2.7. Особливості роботи з масивами в JavaScript Основні питання: Цикли for-in та for-of. Протоколи iterable та iterator. Функції-генератори. |
8 | Тема 2.8. Асоціативні масиви та множини Основні питання: Відмінності об’єктів, масивів та асоціативних масивів (Map). Основні операції над асоціативними масивами. Множини (Set) та основні операції над ними. Слабкі асоціативні масиви та множини (WeakMap, WeakSet). |
9 | Модульна контрольна робота На контрольну роботу виноситься увесь попередній матеріал, що включає основи JavaScript. Завдання включають теоретичну та практичну частини. Завдання для СРС. Повторити матеріал 1-8 лекцій. |
10 | Тема 3.1. Модулі Node.js Основні питання: Системи організації модулів у Node.js: модулі CommonJS та ECMAScript-модулі. Особливості сумісного використання модулів різних типів. |
11 | Тема 3.2. Асинхронне програмування в Node.js Основні питання: Переваги та недоліки паралельних та асинхронних обчислень. Цикл подій та стек викликів. Основні підходи до організації асинхронних обчислень в Node.js: callback-функції, проміси, async-await, їх переваги та недоліки. Оброблення помилок при використанні різних способів організації асинхронних обчислень. |
12 | Тема 3.3. Використання SQL в Node.js Основні питання: Архітектура організації доступу до СУБД. Модуль Oracledb. З’єднання з СУБД. Організація пулів з’єднань. Виконання основних операції при роботі з БД: створення, читання, внесення змін та видалення даних. Керування транзакціями. |
13 | Тема 3.4. Використання ORM Sequelize в Node.js. Основні питання: Підключення до СУБД з використанням Sequelize. Визначення моделі даних. Виконання основних операцій з СУБД. Організація відношень один-до-одного, один-до-багатьох, багато-до-одного, багато-до-багатьох. |
14 | Тема 3.5. Створення клієнт-серверних застосунків на платформі Node.js. Основні питання: Генерація та прослуховування подій за допомогою EventEmitter. Основні модулі Node.js для організації клієнт-серверної взаємодії: Net, HTTP, HTTPS, HTTP/2. Особливості організації клієнт-серверної взаємодії за допомогою цих модулів. |
15 | Тема 3.6. Створення веб-застосунків за допомогою express.js Основні питання: Структура типового застосунку при використанні express.js. Роутінг. Передача параметрів. Генерація контенту на стороні сервера за допомогою шаблонізаторів. Шаблонізатор Pug. Шаблонізатор EJS. |
16 | Тема 3.7. Безпека веб-застосунків Основні питання: Основні способи організації безпеки веб-застосунків. Аутентифікація та авторизація. Сесії. JWT (JSON Web Tokens). CORS (Cross-origin resource sharing). XSS (Cross-site scripting). CSRF (Cross-site request forgery). |
17 | Тема 3.8. Створення RESTful веб-сервісів. Основні питання: Особливості RESTful веб-сервісів у порівнянні з іншими способами організації розподілених обчислень. Реалізація основних CRUD-операцій за допомогою HTTP-методів GET, POST, PUT, PATCH, DELETE. Best practice при створенні RESTful веб-сервісів. |
18 | Модульна контрольна робота На контрольну роботу виноситься увесь попередній матеріал, що включає основи використання платформи Node.js. Завдання включають теоретичну та практичну частини. Завдання для СРС. Повторити матеріал 10-17 лекцій. |
Лабораторні роботи
№ з/п |
Перелік лабораторних робіт |
---|---|
1 | Лабораторна робота №1. Перше знайомство з мовою JavaScript та платформою Node.js Мета роботи – Навчитися встановлювати 'Node.js', налаштовувати середовище розроблення, створювати та запускати застосунки. |
2 | Лабораторна робота №2. Робота з файловою системою (ч.1) Мета роботи – Навчитись працювати з файловую системою з використанням синхронних функцій та асинхронних callback-функцій модуля 'node:fs'. |
3 | Лабораторна робота №3. Робота з файловою системою (ч.2) Мета роботи – Навчитись працювати з файловую системою з використанням promise та async-await функцій модуля 'node:fs'. |
4 | Лабораторна робота №4. Створення клієнт-серверних застосунків Мета роботи – Навчитися створювати клієнт-серверні застосунки за допомогою функцій модулів 'node:net' та 'node:http'. |
5 | Лабораторна робота №5. Створення веб-застосунків (ч.1) Мета роботи – Навчитися створювати веб-застосунки за допомогою фреймворку 'Express.js' та шаблонізатора 'Pug'. |
6 | Лабораторна робота №6. Створення веб-застосунків (ч.2) Мета роботи – Навчитися створювати веб-застосунки за допомогою фреймворку ‘Express.js’ та шаблонізатора 'EJS'. |
7 | Лабораторна робота №7. Створення RESTful веб-сервісів Мета роботи – Навчитися використовувати фреймворки 'Node.js' та 'Express.js' для створення RESTful веб-сервісів. |
8 | Лабораторна робота №8. Взаємодія з СУБД за допомогою SQL Мета роботи – Навчитися використовувати API для доступу до реляційних баз даних за допомогою SQL. Отримати уміння налаштовувати СУБД, а також створювати та конфігурувати вебзастосунки для роботи з нею. |
9 | Лабораторна робота №9. Взаємодія з СУБД за допомогою ORM Мета роботи – Навчитися використовувати ORM 'Sequelize' для доступу до СУБД. Отримати уміння налаштовувати моделі сутностей. |
Самостійна робота студента
№ з/п |
Вид самостійної роботи | Кількість годин СРС |
---|---|---|
1 | Підготовка до лабораторних робіт | 54 |
2 | Підготовка до МКР | 10 |
3 | Підготовка до екзамену | 2 |
6. Контрольна робота
Метою контрольної роботи є закріплення та перевірка теоретичних знань із освітнього компонента, набуття студентами практичних навичок самостійного вирішення задач та складанні та компіляції програм. Модульна контрольна робота (МКР) виконується після вивчення Розділів 1 та 2.
Політика та контроль
Політика навчальної дисципліни (освітнього компонента)
Система вимог, які викладач ставить перед студентом:
правила відвідування занять: заборонено оцінювати присутність або відсутність здобувача на аудиторному занятті, в тому числі нараховувати заохочувальні або штрафні бали. Відповідно до РСО даної дисципліни бали нараховують за відповідні види навчальної активності на лекційних та практичних заняттях.
правила поведінки на заняттях: студент має можливість отримувати бали за відповідні види навчальної активності на лекційних та практичних заняттях, передбачені РСО дисципліни. Використання засобів зв’язку для пошуку інформації на гугл-диску викладача, в інтернеті, в дистанційному курсі на платформі Сікорський здійснюється за умови вказівки викладача;
політика дедлайнів та перескладань: якщо студент не проходив або не з’явився на МКР (без поважної причини), його результат оцінюється у 0 балів. Перескладання результатів МКР не передбачено;
політика щодо академічної доброчесності: Кодекс честі Національного технічного університету України «Київський політехнічний інститут» https://kpi.ua/files/honorcode.pdf встановлює загальні моральні принципи, правила етичної поведінки осіб та передбачає політику академічної доброчесності для осіб, що працюють і навчаються в університеті, якими вони мають керуватись у своїй діяльності, в тому числі при вивченні та складанні контрольних заходів з даної дисципліни;
при використанні цифрових засобів зв’язку з викладачем (мобільний зв’язок, електронна пошта, переписка на форумах та у соцмережах тощо) необхідно дотримуватись загальноприйнятих етичних норм, зокрема бути ввічливим та обмежувати спілкування робочим часом викладача.
Види контролю та рейтингова система оцінювання результатів навчання (РСО)
Поточний контроль: МКР, виконання та захист лабораторних робіт.
Календарний контроль: провадиться двічі на семестр як моніторинг поточного стану виконання вимог силабусу.
Семестровий контроль: залік.
Умови допуску до семестрового контролю: виконані та захищені лабораторні роботи, семестровий рейтинг більше 60 балів.
Таблиця відповідності рейтингових балів оцінкам за університетською шкалою:
Кількість балів | Оцінка |
95-100 | Відмінно |
85-94 | Дуже добре |
75-84 | Добре |
65-74 | Задовільно |
60-64 | Достатньо |
Менше 60 | Незадовільно |
Загальна рейтингова оцінка студента після завершення семестру складається з балів, отриманих за:
виконання та захист лабораторних робіт;
виконання модульної контрольної роботи (МКР).
Лабораторні роботи
Ваговий бал. Лабораторні мають ваговий бал 10. Максимальна кількість балів за всі лабораторні роботи складає 10 бали * 9 робіт = 90 балів.
На лабораторних роботах студенти перевіряють та демонструють працездатність написаних вдома програм. Для допуску до поточної лабораторної роботи необхідно мати Протокол, оформлений відповідно до норм оформлення технічної документації, який має містити всі необхідні пункти, відповідно до Методичних вказівок. Також для допуску до лабораторної роботи (окрім 1-ї) необхідно захистити попередню. Студенти, що не захистили попередню лабораторну роботу можуть бути не допущені до виконання наступної. Лабораторні роботи виконуються бригадою.
Критерії оцінювання лабораторної роботи:
10 балів. Під час виконання завдання студент реалізував як обов’язкову так і опціональну частину завдання. В програмі відсутні помилки. Під час захисту студент надає правильні, повні та чіткі відповіді на поставлені питання.
8-9 балів. Під час виконання завдання студент реалізував лише обов’язкову частину завдання (опціональна частина відсутня). В програмі відсутні помилки. Під час захисту дає неповні відповіді або допускає помилки в незначних деталях.
6-7 балів. Написана студентом програма працює, але містить невідповідності архітектурним патернам, рекомендаціям до оформлення коду, використовує неефективні алгоритми. Під час відповіді на деякі питання студент припускається істотних помилок.
0 балів. Програма не написана, не працює, або має грубі порушення в архітектурі. Під час відповіді на питання студент припускається грубих помилок або не може дати відповіді на питання.
Модульні контрольні роботи
Ваговий бал – 10. Модульні контрольні роботи (МКР) виконуються протягом семестру на одному з лекційних занять після вивчення розділів 1 та 2.
Ваговий бал. Модульні контрольні роботи мають ваговий бал 5*.** Максимальна кількість балів за всі лабораторні роботи складає 5 балів * 2 роботи = 10 балів.*
Критерії оцінювання модульної контрольної роботи:
На модульній контрольній роботі студент виконує завдання, яке оцінюється від 0 до 5 балів:
- архітектура системи розроблена правильно, діаграма використання, діаграма класів та ER-діаграма намальовані та описані без помилок - 5 балів;
- архітектура системи, діаграма використання, діаграма класів та ER-діаграма в цілому розроблені правильно, але в наведених діаграмах присутні невідповідності в окремих функціях системи - 4 бали;
- архітектура системи, діаграма використання, діаграма класів та ER-діаграма розроблені з помилками, але грубі помилки відсутні - 3 бали;
- архітектура системи, діаграма використання, діаграма класів та ER-діаграма не розроблені, або мають грубі помилки - 0 балів.
Календарний контроль
Календарний контроль базується на поточній рейтинговій оцінці. Умовою позитивної атестації є значення поточного рейтингу студента не менше 60% від максимально можливого на час атестації. Бал, необхідний для отримання позитивного календарного контролю доводиться до відома студентів викладачем не пізніше ніж за 2 тижні до початку календарного контролю.
Форма семестрового контролю – залік
Максимальна сума балів за роботу у семестрі складає 100. Необхідною умовою допуску до заліку є виконані та захищені лабораторні роботи, семестровий рейтинг не менше 60 балів.
Робочу програму навчальної дисципліни (силабус):
Складено доцентом кафедри інформаційних систем та технологій ФІОТ, к.т.н. Букасов М.М.
Ухвалено кафедрою інформаційних систем та технологій ФІОТ (протокол № 21 від 29.06.2023 р.)
Погоджено Методичною комісією факультету (протокол № 11 від 29.06.2023 р.)