Основи програмування

Обов'язкова дисципліна
Навчальна дисципліна професійної підготовки
Обсяг освітнього компонента: 
• у кредитах ЄКТС — 4.5.
Кількість аудиторних занять: 
30 годин лекційних занять, 16 годин практичних занять, 14 годин лабораторних занять.
Самостійна робота: 
складає 75 годин.
Семестровий контроль: 
Залік.
Освітню компоненту забезпечує: 
Анотація: 

Анотація навчальної дисципліни

Мета дисципліни:
надання знань з теоретичних основ розробки прикладного програмного забезпечення мовою високого рівня Python, оволодіння основними прийомами та алгоритмами вирішення прикладних завдань в області  інженерії програмного забезпечення та їх програмної реалізації з використанням мови програмування Python та модулів стандартних бібліотек.
Завдання дисципліни:
ознайомитись з основними поняттями та особливостями роботи інтерпретаторів, сформувати комплексне уявлення про структуру прикладних програм мовою Python;
вивчити особливості синтаксису і семантики базових конструктивних елементів мови програмування Python: лексем, виразів та операторів;
отримати знання про різновиди простих та складених типів даних, усвідомити особливості їх використання при вирішенні прикладних завдань мовою програмування Python;
сформувати уявлення про програмування функцій і їх використання для реалізації ієрархічної структури програми, отримати знання про імпорт та використання модулів стандартних бібліотек;
сформувати комплексне уявлення про об'єктно-орієнтовану парадигму програмування мовою Python;
оволодіти прийомами створення графічного інтерфейсу з організацією вводу та відображення даних, позиціонуванням елементів управління та обробкою пов’язаних з ними подій;
вивчити особливості роботи з текстовими, бінарними та CSV-файлами, оволодіти основними операціями над ними;
оволодіти базовими прийомами програмування ігор мовою Python, отримати знання про налаштування ігрового циклу;
сформувати уявлення про засоби аналізу даних у Python, оволодіти базовими операціями для взаємодії з даними;
вивчити засоби візуалізації даних у Python, оволодіти прийомами побудови графіків та налаштування їх елементів;
сформувати уявлення про основні етапи модульного тестування, вивчити прийоми побудови unit-тестів.  
Основні результати навчання

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

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

Л – лекційні заняття; ЛЗ – лабораторні заняття; ПР – практичне заняття; СРС – самостійна робота здобувача вищої освіти; МКР – модульна контрольна робота; К – консультації.

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

1    тиждень

Л1. Принципи роботи інтерпретатору Python. Історія виникнення мови Python та її порівняння з іншими мовами програмування. Основні особливості Python: скриптова мова, підтримка різних парадигм програмування, портативність і платформонезалежність, автоматичне управління пам'яттю, динамічна типізація.
ПР1. Основні програмні терміни та етапи розробки програм. Огляд програмного забезпечення: IDLE, IDE PyCharm, Jupyter Notebook.
СРС. К.

2    тиждень

Л2. Алфавіт мови програмування Python. Змінні та стандартні типи даних: числові та логічні. Приклади динамічної типізації. Операції: логічні, математичні, операції відношення та інші. Пріоритети та приклади використання операцій. Вирази. 
ЛЗ1. Знайомство з середовищами розробки IDE PyCharm та Jupyter Notebook: інсталяція, налаштування, запуск типової програми.
СРС. К.

3    тиждень

Л3. Архітектура програми мовою Python, імпорт та використання модулів стандартних бібліотек. Функції, область видимості змінних. Ввід та вивід даних, форматування вводу та виводу. Рядки, базові операції з рядками.
ПР2. Складання програм для обчислення арифметичних виразів з використанням вводу і виводу даних. Організація інтерфейсу програми за допомогою рядків.
СРС. К.

4    тиждень

Л4. Умовний оператор: if, else, elif. Оператори циклів while та for. Використання блоків та відступів.  Оператори break, continue.  
ЛЗ2. Створення програми з використанням умовних операторів та циклів. Організація обчислювальних процесів за допомогою вкладених умовних операторів та циклів.
СРС. К.

5    тиждень

Л5. Об'єктно-орієнтована парадигма програмування Python: класи, об’єкти, інкапсуляція, успадкування, поліморфізм, клас object. Типові практичні приклади для демонстрації об'єктно-орієнтованого програмування в мові Python. 
ПР3. Складання об'єктно-орієнтованих програм із застосуванням інкапсуляції, успадкування та поліморфізму.
СРС. К.

6    тиждень

Л6. Створення графічного інтерфейсу. Модуль Tkinter: створення вікна застосування, робота з кнопками Button, текстовими мітками Label, полями вводу Entry. Позиціонування елементів.
ЛЗ3. Створення програми, що містить галерею фотографій та засоби навігації по галереї.
СРС. К.

7    тиждень

Л7. Створення графічного інтерфейсу (продовження). Модуль Tkinter: організація вибору з елементами Checkbutton та Radiobutton, оформлення списку з Listbox, створення ієрархічного меню з Menu. 
ПР4. Створення графічної програми для проведення анкетування із застосуванням елементів вибору варіантів відповідей. 
СРС. К.

8    тиждень

Л8. Робота з наборами даних. Стандартні типи list (список), dict (словник). Стандартні методи для роботи зі списками та словниками: створення, звернення до елементів, модифікація, порівняння, перебір елементів.
ЛЗ4. Створення графічної програми для проведення анкетування з використанням списків та словників. Заповнення, обробка та вивід вмісту списків та словників.
МКР1. СРС. К.

9    тиждень

Л9. Робота з наборами даних (продовження). Стандартні типи tuple (кортеж), set (множина). Стандартні методи для роботи з кортежами та множинами: створення, звернення до елементів, модифікація, порівняння, перебір елементів.
ПР5. Створення програми з використанням наборів даних: список, словник, кортеж, множина. Виконання операцій над наборами даних. 
СРС. К.

10    тиждень

Л10. Робота з файлами: відкриття, закриття, читання та запис. Текстові, бінарні та CSV-файли. Модулі pickle та csv.
ЛЗ5. Створення програми – текстового редактора з базовою функціональністю. Робота з вмістом документу з використанням текстового файлу, збереження налаштувань документу у бінарному та CSV-файлі.
СРС. К.

11    тиждень

Л11. Основи програмування ігор. Бібліотека pygame. Ігровий цикл: обробка вводу (події), оновлення гри, рендеринг (прорисовка), швидкість роботи ігрового циклу. Створення шаблону для ігрового проекту. Використання звуків і фонової музики.
ПР6. Створення базової програми для ігрового проекту. Налаштування ігрового циклу. Розгляд можливостей створення ігор категорії «Skill-and-action».
СРС. К.

12    тиждень

Л12. Основи програмування ігор (продовження). Робота зі спрайтами.  Рух / управління спрайтами. Кінематика руху та зіткнень.  
ЛЗ6. Створення ігрової програми з використанням руху спрайтів та їх взаємодії з іншими об’єктами.
СРС. К.

13    тиждень

Л13. Засоби аналізу даних. Бібліотека pandas: структури даних Series та DataFrame, індексні об’єкти. Фундаментальні основи взаємодії з даними, аналіз і маніпуляція даними. Основи NumPy: масиви і векторні обчислення. 
ПР7. Створення програм для аналізу даних з використанням структур даних Series, DataFrame та NumPy.
СРС. К.

14    тиждень

Л14. Візуалізація даних. Бібліотека Mathplotlib. Основи роботи з модулем pyplot: побудова графіків, текстові надписи на графіку, налаштування елементів графіка, візуалізація даних з функцією plot().
ЛЗ7. Створення програми для візуалізації даних з використанням Mathplotlib. Дані для візуалізації отримуються за допомогою pandas.
МКР2.СРС. К.

15    тиждень

Л15. Модульне тестування. Основні ідеї unit-тестів. Використання модулю unittest. Концепції test case, test suite, test fixture, test runner. Методи setUp та tearDown. Аналіз результатів тестування. 
ПР8. Створення програм для обчислення арифметичних виразів з наявністю методів. Побудова unit-тестів для перевірки працездатності методів.
СРС. К.

 

Процедура оцінювання

Система оцінювання рівня навчальних досягнень ґрунтується на принципах ЄКТС та є накопичувальною. Здобувачі протягом семестру готуються до лекційних, практичних та лабораторних занять, виконують 2 модульні контрольні роботи.
Для забезпечення оперативного контролю за успішністю та якістю рівня навчальних досягнень здобувачів вищої освіти дисципліна поділяється на два семестрові модулі.

Кожний модуль оцінюється у максимально можливі 50 балів:
Модульна робота складається з теоретичної частини  та практичної частини - задач. 

Максимальна оцінка за правильне виконання теоретичної частини модульної роботи №1 становить 10 балів, за виконання практичної частини – 20 балів. Максимальна оцінка за правильне виконання теоретичної частини модульної роботи №2 становить 10 балів, за виконання практичної частини – 20 балів.
Кількість питань теоретичної частини модульної роботи №1 – 5. Кожна правильна відповідь оцінюється в 2 бали. Кількість питань теоретичної частини модульної роботи №2 – 5. Кожна правильна відповідь оцінюється в 2 бали.
Кількість задач модульної роботи №1 – 2. Правильне розв’язання кожної задачі оцінюється в 10 балів. Задача вважається розв’язаною, якщо коректно визначені її структури даних, витриманий правильний набір та послідовність операторів для реалізації алгоритму, коректно записано ввід початкових даних та вивід результату. Кількість задач модульної роботи №2– 2. Правильне розв’язання кожної задачі оцінюється в 10 балів. Кожна задача вважається розв’язаною, якщо при її розв’язанні коректно визначено структури даних та алгоритм, що реалізує завдання, відсутні синтаксичні помилки.

Максимальна оцінка, яку може отримати здобувач за всі виконані види робіт – 100 балів. 

Підсумковим контролем з дисципліни є усний екзамен, білет до якого складається з теоретичної частини (2 запитання) та практичної частини (3 задачі). За бездоганну відповідь на кожне теоретичне питання студент отримує 20 балів. За бездоганне виконання кожного завдання практичної частини студент отримує 20 балів. 
Максимальна оцінка за правильні відповіді на всі питання екзаменаційного білету становить 100 балів.

Семестровий модуль № 1

ЛЗ1- ЛЗ3. Оцінка за виконання – 15 балів. Термін виконання – 1-8 тиждень. 
ПР1- ПР4. Оцінка за виконання – 5 балів. Термін виконання – 1-8 тиждень. 
МК1. Модульна контрольна робота – 30 балів (8 тиждень). Перескладання можливе протягом 9–11 тижнів за розкладом консультацій.

Семестровий модуль № 2

ЛЗ4- ЛЗ7. Оцінка за виконання – 16 балів. Термін виконання – 9-15 тиждень. 
ПР5- ПР8. Оцінка за виконання – 4 бали. Термін виконання – 9-15 тиждень. 
МК2. Модульна контрольна робота – 30 балів (14 тиждень).

Підсумковим контролем з дисципліни є накопичувальний залік.
Умови допуску до підсумкового контролю

Залік отримують здобувачі вищої освіти, які виконали всі види навчальних елементів навчальної дисципліни не менш, ніж на 60 %.

Політика освітнього процесу

Здобувач зобов’язаний своєчасно та якісно виконувати всі отримані завдання; за необхідністю з метою з’ясування всіх незрозумілих під час самостійної та індивідуальної роботи питань, відвідувати консультації викладача. Дотримуватись принципів академічної доброчесності.

Виконаний не свій варіант завдання здобувачем не оцінюється.

Робота, яка виконана після встановлених викладачем термінів, не приймається.

Відсутність здобувача на контрольній роботі відповідає оцінці «0». 
Складання/перескладання заліку – за встановленим деканатом розкладом.

Під час лекції здійснювати телефонні дзвінки забороняється.

Заборонено використання будь-яких підручників, посібників, конспектів лекцій, шпаргалок під час проходження модульних контролів з дисципліни.

Документи (файли), що додаються: Робоча програма навчальної дисципліни.

Література
1. Васильєв, О. Програмування мовою Python / О. Васильєв. – Київ: Навчальна книга – Богдан, 2019. – 504 с.
2. Naomi Ceder. The Quick Python Book 3rd Edition / Naomi Ceder. – NY: Manning Publications Co., 2018. – 432 p.
3. Kenneth A. Lambert. Fundamentals of Python: first programs / Kenneth A. Lambert. – NY: Cengage Learning, 2018. – 476 p.
4. Devpractice Team. Python. Визуализация данных. Matplotlib. Seaborn. Mayavi / Devpractice Team, М.И. Абдурахманов. 2020. – 412 с.
5. Мэтиз Эрик. Изучаем Python: программирование игр, визуализация данных, веб-приложения. 3-е изд. – СПб.: Питер, 2020. – 512 с.
6. Златопольский, Д. М. Основы программирования на языке Python. – М.: ДМК Пресс, 2017. – 284 с. 

Електронні ресурси
1.    Python's documentation, tutorials, and guides are constantly evolving. – [Електронний ресурс]. – Режим доступу: https://docs.python.org/3/
2.    Tutorialspoint / Python – [Електронний ресурс]. – Режим доступу: http://www.tutorialspoint.com/python/

Методична література
1.    Комлева, Н.О. Конспект лекцій з дисципліни «Основи програмування» (Частина 2 – Програмування мовою Python) для студентів спеціальності 121 – «Інженерія програмного забезпечення» – Одеса: ОНПУ, 2021. – 94 с.
2.    Комлева, Н.О. Методичні вказівки до лабораторних робіт з дисципліни «Основи програмування» (Частина 2 – Програмування мовою Python) для студентів спеціальності 121 – «Інженерія програмного забезпечення» / Н.О. Комлева. – Одеса: ОНПУ, 2021. – 24 с.  
3.     Комлева, Н.О. Методичні вказівки до практичних занять з дисципліни «Основи програмування» (Частина 2 – Програмування мовою Python) для студентів спеціальності 121 – «Інженерія програмного забезпечення» / Н.О. Комлева. – Одеса: ОНПУ, 2021. – 28 с.

Додаткова література
1.    Плас Дж. Вандер. Python для сложных задач: наука о данных и машинное обучение. – СПб.: Питер, 2018. – 576 с.
2.    Лутц, Марк. Изучаем Python, том 1, 5-е изд.: Пер. с англ. — СПб.: ООО “Диалектика”, 2019. — 832 с.
3.    Лутц, Марк. Изучаем Python, том 2, 5-е изд. : Пер. с англ. — СПб. : ООО “Диалектика”, 2020. — 720 с.
 

2021 рік