Metaprogramming

Course: Software Engineering

Structural unit: Faculty of Computer Science and Cybernetics

Title
Metaprogramming
Code
ДВС.1.05
Module type
Вибіркова дисципліна для ОП
Educational cycle
Second
Year of study when the component is delivered
2021/2022
Semester/trimester when the component is delivered
7 Semester
Number of ECTS credits allocated
3
Learning outcomes
LO01. Analyze, purposefully search for and select the necessary information and reference resources and knowledge to solve professional problems, taking into account modern advances in science and technology. LO05. Know and apply relevant mathematical concepts, methods of domain, system and object-oriented analysis and mathematical modeling for software development. LO07. Know and apply in practice the fundamental concepts, paradigms and basic principles of operation of languages, tools and computing facilities of software engineering. LO10. Conduct a pre-project survey of the subject area, systematic analysis of the design object. LO12. Apply in practice effective approaches to software design. LO13. Know and apply methods of algorithm development, software design and data and knowledge structures design.
Form of study
Full-time form
Prerequisites and co-requisites
Know: basic concepts of procedural and object-oriented programming; basics of WEB-programming; basics of programming in C ++, JavaScript and Java; basics of relational database design; basics of SQL structural query language; basic software design templates; basic concepts of compiler theory; subject-oriented languages SQL / HTML / XHTML / DHTML / XML / LaTeX. Be able: to program in procedural and object-oriented styles; to program in C ++ / JavaScript / Java languages; to generate queries to relational databases in SQL language; to design class hierarchies in C ++ / JavaScript / Java; to implement and adapt to your own needs basic software design templates in C ++ / Java; using C ++ / Java languages, develop software for lexical, primitive parsing and structural analysis of program codes.
Course content
The purpose of the discipline is to study the basic concepts, mechanisms and techniques of metaprogramming, to acquire basic skills of designing and developing software for analysis, modification and generation of program codes, mastering the techniques of dynamic metaprogramming within the Python programming language. As a result of studying the discipline the student must: Know the basic concepts and techniques of metaprogramming; basic concepts of subject-oriented languages; basics of procedural and object-oriented Python programming; basic mechanisms of dynamic metaprogramming within the Python language; basic approaches and techniques of analysis and translation of subject-oriented languages.
Recommended or required reading and other learning resources/tools
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.
Planned learning activities and teaching methods
Lectures, laboratory classes, elaboration of recommended literature, independent work, defense of laboratory works, exam.
Assessment methods and criteria
Semester assessment. The maximum / minimum number of points that can be obtained by students during the semester is 60/36 points, which are distributed as follows: 1. Test work № 1: LO1.1 - LO1.4, LO2.1 - LO2.3 - 10/6 points. 2. Test work № 2: LO1.5 - LO1.10, LO2.4 - LO2.7 - 12/7 points. 3. Laboratory work № 1: LO2.1 - LO2.7, LO3.1, LO3.2, LO4.1, LO4.2 - 10/6 points. 4. Laboratory work № 2: LO2.1 - LO2.7, LO3.1, LO3.2, LO4.1, LO4.2 - 12/7 points. 5. Laboratory work № 3: LO2.1 - LO2.7, LO3.1, LO3.2, LO4.1, LO4.2 - 16/10 points. Final assessment (in the form of an exam).
Language of instruction
Ukrainian

Lecturers

This discipline is taught by the following teachers

Yaroslav M. Linder
Department of Intelligent Software Systems
Faculty of Computer Science and Cybernetics

Departments

The following departments are involved in teaching the above discipline

Department of Intelligent Software Systems
Faculty of Computer Science and Cybernetics