Метапрограмування (Осінь 2018)

Галузь знань: 12 Інформаційні технології
Спеціальність: 121 Інженерія програмного забезпечення
Освітня програма: Програмна інженерія

Викладач: асистент Терлецький Дмитро Олександрович (лекції, лабораторні заняття)
Викладається: у 7-му семсетрі бакалаврату.
Загальний обсяг: 120 год, з яких:
  • Лекції – 28 год.
  • Лабораторні заняття – 26 год.
  • Консультації – 2 год.
  • Самостійна робота – 64 год.

Програма курсу

Змістовний модуль 1. Програмування мовою Python
Тема
Слайди лекцій Домашнє завдання
1 Вступ до курсу. Загальні особливості синтаксису мови Python. Базові оператори. Умовні оператори. Циклічні оператори. Тема-1 ДЗ-1
2 Базові типи даних у мові Python. Числа. Рядки. Списки. Словники. Кортежі. Файли. Множини. Тема-2 ДЗ-2
3 Функції. Області видимості та простори імен. Аргументи функцій. Розширені можливості функцій. Тема-3 ДЗ-3
4 Ітератори. Генератори. Функції-генератори. Вирази-генератори. Документування. Модулі. Тема-4 ДЗ-4
5 Класи. Інкапсуляція. Поліморфізм. Успадкування. Класові ієрархії. TBPL ДЗ-5
Модульна контрольна робота 1

Змістовний модуль 2. Метапрограмування мовою Python
Тема
Слайди лекцій Домашнє завдання
6 Основні поняття та різновиди метапрограмування. Ієрархія метарівнів. Метадані та метазнання. Тема-6 ДЗ-6
7 Керованi атрибути. Властивостi. Дескриптори. Спецiальнi методи. Тема-7 ДЗ-7
8 Декоратори функцій та класів. Тема-8 ДЗ-8
9 Метакласи. Метакласи на основi класiв. Метакласи на основi функцiй. Тема-9 ДЗ-9
Модульна контрольна робота 2

Умови лабораторних робіт


Підготовка до екзамену


Перелік рекомендованих джерел

Основний:

  1. V. Stuikys, R. Damasevicius, Meta-Programming and Model-Driven Meta-Program Development: Principles, Processes and Techniques // Springer, 2013.
  2. D. C. Hay, Data Model Patterns: A Metadata Map // Morgan Kaufmann Publishers, 2006.
  3. J. Pomerantz, Metadata // The MIT Press, 2015.
  4. R. Gartner, Metadata: Shaping Knowledge from Antiquity to the Semantic Web // Springer, 2016.
  5. R. L. Lubas, A. S. Jackson, I. Schneider, The Metadata Manual: A Practical Workbook // Chandos Publishing, 2013.
  6. python.org
  7. M. Lutz, Learning Python: Powerful Object-Oriented Programming, 5th ed. // O'Reilly Media, Inc., 2013.
  8. D. Beazley, B. K. Jones, Python Cookbook: Recipes for Mastering Python 3, 3rd ed. // O'Reilly Media, Inc., 2013.
  9. L. Ramalho, Fluent Python: Clear, Concise, and Effective Programming // O'Reilly Media, Inc., 2015.
  10. M. Voelter, DSL Engineering: Designing, Implementing and Using Domain-Specific Languages // CreateSpace Independent Publishing Platform, 2013.

Додатковий:

  1. R. Lammel, Software Languages: Syntax, Semantics and Metaprogramming // Springer, 2018.
  2. P. Caplan, Metadata Fundamentals for All Librarians // American Library Association, 2003.
  3. M. Lutz, Python Pocket Reference: Python in Your Pocket, 5th ed. // O'Reilly Media, Inc., 2014.
  4. B. Lubanovic, Introducing Python: Modern Computing in Simple Packages // O'Reilly Media, Inc., 2015.
  5. A. Martelli, A. Ravenscro, S. Holden, Python in a Nutshell: The Definitive Reference, 3rd ed. // O'Reilly Media, Inc., 2017.
  6. M. Summerfield, Python in Practice: Create Better Programs Using Concurrency, Libraries, and Patterns // Addison-Wesley, 2014.
  7. P. Riti, Practical Scala DSLs: Real-World Applications Using Domain Specific Languages // Apress, 2018.
  8. R. D. Kelker, Clojure for Domain-Specific Languages: Learn How to Use Clojure Language with Examples and Develop Domain-Specific Languages on the Go // Packt Publishing, 2013.