Метапрограмування
Освітня програма: Програмна інженерія
Структурний підрозділ: Факультет комп'ютерних наук та кібернетики
Назва дисципліни
Метапрограмування
Код дисципліни
ДВС.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 балів.
Підсумкове оцінювання (у формі іспиту).
Мова викладання
Українська
Викладачі
Ця дисципліна викладаеться наступними викладачами
Ярослав
Миколайович
Ліндер
Інтелектуальних програмних систем
Факультет комп'ютерних наук та кібернетики
Факультет комп'ютерних наук та кібернетики
Кафедри
Наступні кафедри задіяні у викладанні наведеної дисципліни
Інтелектуальних програмних систем
Факультет комп'ютерних наук та кібернетики