|
Responsible Instructor |
|
|
Contact Hours / Week x/x/x/x |
2/0/0/0
|
|
Education Period |
|
|
Start Education |
|
|
Exam Period |
|
|
Course Language |
|
|
Expected prior knowledge |
- Compiler Construction - Model-Driven Software Development
|
|
Course Contents |
Meta-programming is the discipline of software engineering that considers programs as data. That is, programs are data objects that are subject to manipulation by other programs. This allows the automation of tasks traditionally performed 'manually' by programmers. Applications are everywhere in software engineering.
Traditional and successful applications include compilers that translate high-level programs to implementations in machine code, and parser generators that generate a parser from a context-free grammar. (We assume students to have basic knowledge about these topics from a previous course on compiler construction.) Recently, a number of other applications are becoming increasingly important in software engineering. Generation of software from domain-specific languages provides an increase in productivity through language constructs that concisely express notions in the application domain. Refactoring tools automatically perform design improvements that are specified by the developer ensuring safety and completeness of the change. Code instrumentation and aspect weaving allow crosscutting concerns (e.g., logging, tracing, synchronization) to be expressed separately and implemented by insertion into the source code. Bug detection tools such as FindBugs analyse the source code to detect patterns that are indicative of tyical bugs made by developers. Software metrics tools express quality properties of a code base in numbers that are computed by inspecting the source code.
This course studies the principles, techniques and limitations of meta-programming. You will study an aspect of the meta-programming field by means of a systematic literature review using researchr.org. You are expected to give several seminar presentations.
|
|
Study Goals |
- understanding principles, techniques, and limitations of meta-programming
- performing a systematic literature study
|
|
Education Method |
Seminar (presentations by students), literature study
|
|
Literature and Study Materials |
Papers from the scientific and technical literature.
|
|
Assessment |
Paper with literature survey + presentations
|