Кросплатформне програмування

Вибіркова дисципліна
Навчальна дисципліна професійної підготовки
Обсяг освітнього компонента: 
• у кредитах ЄКТС — 4.5.
Кількість аудиторних занять: 
Лекційних занять - 15, лабораторних занять 7.
Самостійна робота: 
91 година.
Семестровий контроль: 
Залік.
Анотація: 

Мета даної дисципліни – надати студентам знання та практичні навички з розробки кросплатформних застосунків із використанням Python, розуміння архітектурних підходів, інструментів та фреймворків для створення десктопних, мобільних і веб-рішень, що можуть працювати на різних операційних системах. 
Практичне значення та використання отриманих знань полягає у:
    формування навичок розробки програмних продуктів, що працюють на різних операційних системах та пристроях;
    опанування сучасних підходів до створення мобільних, настільних та веб-застосунків на Python;
    розуміння принципів UI/UX для кросплатформних інтерфейсів, включно з адаптивним дизайном;
    отримання досвіду структурування програмних проєктів, розширюваності та підтримуваності коду;
    формування компетентностей у роботі з мережевими протоколами, API, та інтеграцією сервер–клієнт в одному середовищі;
    засвоєння навичок роботи з віртуальними середовищами, базами даних та деплою застосунків;
    підготовка до роботи у сфері стартапів, фрилансу, low-budget/MVP-продуктів, де Python – гнучкий і швидкий інструмент;
    розвиток навичок тестування та пакування програмних продуктів для реального використання.
Студенти зможуть застосувати результати навчання для:
    створення кросплатформних десктопних застосунків
(інструменти, утиліти, дизайн-програми, навчальні застосунки);
    розробки мобільних застосунків на Python (Kivy / BeeWare);
    побудови веб-сервісів і клієнт-серверних програм
(Flask, WebSockets, чат-додатки);
    проєктування інтерфейсів користувача для різних платформ
(десктоп, планшет, смартфон);
    створення інтерактивних мультимедійних систем
(анімовані UI, музичні й творчі застосунки, прототипи ігор);
    роботи з файловими системами та ОС у прикладних проєктах
(автоматизація задач, аналіз файлів, органайзери);
    підготовки та розгортання програмних продуктів
(.exe/.app/.apk/.deb пакунки, серверні додатки);
    розробки ідей стартапів та власних комп’ютерних застосунків
без прив’язки до конкретної ОС.

Тематика та види навчальних занять

Для денної форми здобуття освіти

Лекційні заняття

Лекція 1 «Вступ до кросплатформного програмування».
Лекція 2 «Основи мови Python для кросплатформних проєктів».
Лекція 3 «Архітектура кросплатформних застосунків».
Лекція 4 «Робота з файлами та системними ресурсами».
Лекція 5 «Графічні інтерфейси користувача (GUI)».
Лекція 6 «Бібліотека Kivy: розробка мультимедійних застосунків».
Лекція 7 «Кросплатформна робота з мережею».
Лекція 8 «Розробка вебзастосунків на Python».
Лекція 9 «Розробка мобільних застосунків».
Лекція 10 «Кросплатформні бібліотеки для мультимедіа».
Лекція 11 «Робота з базами даних».
Лекція 12 «Кросплатформні інструменти тестування та CI/CD».
Лекція 13 «Оптимізація продуктивності застосунків».
Лекція 14 «Пакування та розгортання застосунків».
Лекція 15 «Перспективи кросплатформного програмування».

Лабораторні роботи

Лабораторна робота 1 «Середовище розробки та кросплатформні інструменти».
Мета: набути навичок роботи з інструментами кросплатформної розробки, встановити необхідне програмне забезпечення, налаштувати середовище Python та IDE, навчитися запускати та тестувати прості Python-скрипти на різних платформах. 
Лабораторна робота 2 «Робота з віртуальними середовищами (venv, pipenv)».
Мета: навчитися створювати та керувати віртуальними середовищами, встановлювати та оновлювати пакети через пакетні менеджери Python, формувати requirements-файли для перенесення та відтворення робочого середовища на різних операційних системах.
Лабораторна робота 3 «Робота з файлами та ОС».
Мета роботи: вивчити механізми роботи з файловою системою у Python, навчитися виконувати файлові операції (читання, запис, копіювання, видалення), а також опрацьовувати шляхи у кросплатформний спосіб із використанням модулів os, pathlib та shutil. 
Лабораторна робота 4 «Створення застосунку для управління файлами».
Мета: створити консольний або простий графічний застосунок для локального керування файлами та директоріями, застосувавши принципи кросплатформності, структурування проекту, та обробки помилок файлової системи. 
Лабораторна робота 5 «GUI на Tkinter».
Мета: опрацювати базові засоби побудови графічного інтерфейсу у Python з використанням бібліотеки Tkinter, створити форму з меню та елементами керування, забезпечити коректне відображення інтерфейсу на різних ОС.
Лабораторна робота 6 «Kivy: створення застосунку з інтерфейсом».
Мета: опанувати створення графічних та мультимедійних застосунків у Kivy, розробити простий калькулятор або нотатник, реалізувати адаптивний інтерфейс, орієнтований на мобільні пристрої. 
Лабораторна робота  7 «Мережева взаємодія (чат-застосунок, сокети)».
Мета: вивчити принципи роботи мережевих протоколів у Python, реалізувати базову модель клієнт-серверного обміну даними через сокети, створити простий чат-застосунок, що працює на різних ОС.

Для заочної форми здобуття освіти

Лекційні заняття

Лекція 1. «Основи смарт-технологій: концепції, архітектура та сфери застосування».
Лекція 2. «Інтернет речей (IoT) у смарт-технологіях: концепція, інфраструктура та протоколи зв’язку»

Лабораторні заняття

Лабораторне заняття 1. «Кросплатформна розробка на Python: середовище, робота з файлами, ОС та віртуальні середовища».
Мета: навчитися встановлювати та налаштовувати інструменти для кросплатформної розробки на Python, працювати з віртуальними середовищами та пакетами, а також виконувати базові операції з файловою системою у кросплатформний спосіб.
Лабораторне заняття 2. «Графічний інтерфейс і мережеві застосунки на Python: Tkinter, Kivy та сокети».
Мета: опанувати створення кросплатформних графічних інтерфейсів на Tkinter і Kivy, навчитися будувати базові мережеві застосунки з використанням сокетів (клієнт–сервер), та розуміти принципи адаптивного інтерфейсу для мобільних платформ.

Консультації здійснюються впродовж семестру згідно встановленого розкладу.

Компетентності: 

К1. Здатність програмувати на мовах, що підтримують кросплатформну розробку (наприклад, JavaScript, C#, Python). Знання особливостей їх застосування для створення кросплатформних додатків.
К2. Здатність проєктувати програмне забезпечення з урахуванням кросплатформної архітектури та принципів MVC, MVVM чи MVP, що сприяє розподілу логіки та інтерфейсу.

Передумови вивчення дисципліни: 

Алгоритмізація та програмування
Об’єктно-орієнтоване програмування

Результати навчання: 

РН1. Розуміти принципи, переваги та обмеження кросплатформного підходу до розробки, а також ключові відмінності між кросплатформною та нативною розробкою.
РН2. Розробляти користувацькі інтерфейси, що адаптуються до різних розмірів екранів та специфікацій пристроїв, з урахуванням принципів UI/UX для забезпечення зручності та доступності.
РН3. Виконувати інтеграцію з рідними API платформ (камери, геолокація, датчики тощо), забезпечуючи належну взаємодію застосунка з можливостями пристроїв.

2024 рік