University: Technical University of Košice
Faculty: Faculty of Electrical Engineering and Informatics
Department: Department of Computers and Informatics
Course Number: 26000645 Course Name: Metaprogramming
Type, scope and method of learning activities:
Course Type: Lecture, Laboratory exercise
Recommended scope of the course content (in hours):
Full-time study (hours per week): 2,2
Part-time study (hours per semester): ST 26,26
Study Method: Attendance
Number of credits: 6
Recommended semester of study: ST
Recommended semester Study programme Study grade Study Method
1.rok ST Cybersecurity (KB_Ing_D_sk)
Informatics (INF_Ing_D_sk)
Informatics (INF_Ing_D_en)
Level of study:
Course completion requirements:
Assessment and completion of the course: Credit test and examination
Continuous assessment: Student passes the continuous assessment and receives credits when he or she meets the requirement to obtain at least 21% out of 40%.
assignments, tests
Final assessment: Student passes the final assessment and passes the examination when he or she meets the requirement to obtain at least 31% out of 60%.
Overall assessment: Overall assessment is the sum of the assessments obtained by students in the assessment period. The overall result is determined in accordance with the internal regulations of the Technical University in Košice. (Study Regulations, the internal regulation principles of doctoral studies)
Learning outcomes:
Students would become familiar with advanced features of programming languages that allow program to analyze and manipulate with its own structure and code. Students would learn how to employ different forms of metaprogramming, reflection, attribute-oriented programming, aspect-oriented programming and generative programming. The topics would be discussed in the context of scientific research and also practical development of software systems.
Brief course content:
1. Modularity and reusability in software development.
2. Metaprogrammming.
3. Reflection and its applications.
4. Attribute-oriented programming.
5. Definition and processing of annotations in Java.
6. Textual and syntactic macros and their applications.
7. Type systems and generic types
8. Code generation and programming with templates.
9. Concept of aspect-oriented programming.
10. Aspect-oriented programming language AspectJ.
11. Elements of aspects in AspectJ, pointcuts.
12. Application of metaprogramming in software development.
Recommended Reference Sources:
1. Ira R. Forman, Nate Forman: Java Reflection in Action, Manning 2004, ISBN 9781932394184
2. Martin Fowler: Domain Specific Languages, Addison-Wesley Professional 2010, ISBN: 978-0-321-71294-3
3. Ramnivas Laddad. AspectJ in Action, Second Edition, Manning 2009, ISBN 9781933988054
4. Krysztof Czarnecki, Ulrich Eisenecker: Generative Programming: Methods, Tools, and Applications, Addison-Wesley Professional 2000, ISBN 0201309777.
5. Vasian Cepa: Attribute Enabled Software Development: Illustrated with mobile software applications, AV Akademikerverlag 2012, ISBN 3639403819.
Recommended optional program components:
Languages required for the course completion:
Course assessment:
Total number of students assessed: 459
  A B C D E FX  
  24% 15% 18% 19% 10% 14%  
prof. Ing. Jaroslav Porubän, PhD.
Ing. Sergej Chodarev, PhD.
Last modified: 31.08.2023
Approved by: person(s) responsible for the study program