Метапрограмування

Освітня програма: Програмна інженерія

Структурний підрозділ: Факультет комп'ютерних наук та кібернетики

Назва дисципліни
Метапрограмування
Код дисципліни
ДВС.1.05
Тип модуля
Вибіркова дисципліна для ОП
Цикл вищої освіти
Другий
Рік навчання
2021/2022
Семестр / Триместр
7 Семестр
Кількість кредитів ЕСТS
3
Результати навчання
ПРН01. Аналізувати, цілеспрямовано шукати і вибирати необхідні для вирішення професійних завдань інформаційно-довідникові ресурси і знання з урахуванням сучасних досягнень науки і техніки. ПРН05. Знати і застосовувати відповідні математичні поняття, методи доменного, системного і об’єктно-орієнтованого аналізу та математичного моделювання для розробки програмного забезпечення. ПРН07. Знати і застосовувати на практиці фундаментальні концепції, парадигми і основні принципи функціонування мовних, інструментальних і обчислювальних засобів інженерії програмного забезпечення. ПРН10. Проводити передпроектне обстеження предметної області, системний аналіз об’єкта проектування. ПРН12. Застосовувати на практиці ефективні підходи щодо проектування програмного забезпечення. ПРН13. Знати і застосовувати методи розробки алгоритмів, конструювання програмного забезпечення та структур даних і знань.
Форма навчання
Очна форма
Попередні умови та додаткові вимоги
Знати: основні концепції процедурного та об’єктно-орієнтованого програмування; основи WEB-програмування; основи програмування мовами C++, JavaScript та Java; основи проектування реляційних баз даних; основи мови структурних запитів SQL; базові шаблони проектування програмного забезпечення; основні поняття теорії компіляторів; предметно-орієнтовані мови SQL/ HTML/ XHTML/ DHTML/ XML/ LaTeX. Вміти: програмувати у процедурному та об’єктно-орієнтованому стилях; програмувати мовами C++/ JavaScript/ Java; формувати запити до реляційних баз даних на мові SQL; проектувати класові ієрархії мовами C++/ JavaScript/ Java; реалізовувати та адаптувати під власні потреби базові шаблони проектування програмного забезпечення мовами C++/ Java; використовуючи мови C++/ Java, розробляти програмне забезпечення для лексичного, примітивного синтаксичного та структурного аналізу програмних кодів.
Зміст навчальної дисципліни
Мета дисципліни – вивчення базових концепцій, механізмів та технік метапрограмування, здобуття базових навичок проектування та розробки програмного забезпечення для аналізу, модифікації та генерації програмних кодів, оволодіння техніками динамічного метапрограмування в рамках мови програмування Python. В результаті вивчення навчальної дисципліни студент повинен: Знати основні поняття, концепції та техніки метапрограмування; основні поняття, концепції та різновиди предметно-орієнтованих мов; основи процедурного та об’єктно-орієнтованого програмування мовою Python; базові механізми динамічного метапрограмування в рамках мови Python; базові підходи та техніки аналізу та трансляції предметно-орієнтованих мов.
Рекомендована та необхідна література
1. M. Lutz: Learning Python: Powerful Object-Oriented Programming, 5th ed., O’Reilly Media, Inc., 2013. 2. D. Beazley, B.K. Jones: Python Cookbook: Recipes for Mastering Python 3, 3rd ed., O’Reilly Media, Inc., 2013. 3. L. Ramalho: Fluent Python: Clear, Concise, and Effective Programming, 2nd ed., O’Reilly Media, Inc., 2020. 4. Martelli, A. Ravenscro, S. Holden: Python in a Nutshell: The Definitive Reference, 3rd ed., O’Reilly Media, Inc., 2017. 5. J. Hunt: A Beginners Guide to Python 3 Programming, Springer, 2019. 6. B. Slatkin: Effective Python: 90 Spesific Ways to Write Better Python, 2nd ed., Pearson Education, Inc., 2019. 7. J. Zimmerman: Python Descriptors: Understanding and Using the Descriptor Protocol, 2nd ed., Apress, 2018. 8. V. Stuikys, R. Damasevicius: Meta-Programming and Model-Driven Meta-Program Development: Principles, Processes and Techniques, Springer, 2013.
Заплановані освітні заходи та методи викладання
Лекції, лабораторні заняття, опрацювання рекомендованої літератури, самостійна робота, захист лабораторних робіт, іспит.
Методи та критерії оцінювання
Семестрове оцінювання. Максимальна/мінімальна кількість балів, які можуть бути отримані студентами протягом семестру, становить 60/36 балів, які розподіляються наступним чином: 1. Контрольна робота № 1: РН1.1 – РН1.4, РН2.1 – РН2.3 – 10/6 балів. 2. Контрольна робота № 2: РН1.5 – РН1.10, РН2.4 – РН2.7 – 12/7 балів. 3. Лабораторна робота № 1: РН2.1 – РН2.7, РН3.1, РН3.2, РН4.1, РН4.2 – 10/6 балів. 4. Лабораторна робота № 2: РН2.1 – РН2.7, РН3.1, РН3.2, РН4.1, РН4.2 – 12/7 балів. 5. Лабораторна робота № 3: РН2.1 – РН2.7, РН3.1, РН3.2, РН4.1, РН4.2 – 16/10 балів. Підсумкове оцінювання (у формі іспиту).
Мова викладання
Українська

Кафедри

Наступні кафедри задіяні у викладанні наведеної дисципліни

Інтелектуальних програмних систем
Факультет комп'ютерних наук та кібернетики