Module overview
This module aims to cover the topic of production of code via automated means. This topic incorporates the different approaches to metaprogramming that are available in mainstream languages and also touches on issues such as automated generation of testing code and software product lines. The course is practical in nature and reasonable programming skills in Java and possibly also C++ are required. The module is optional but at least one out of this module and Automated Software Verification must be taken by MSc Software Engineering students.
Aims and Objectives
Learning Outcomes
Knowledge and Understanding
Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:
- Basic aspect-oriented programming concepts
- High-level concepts in code generation
- Software Engineering practices for Software Product Lines
Subject Specific Practical Skills
Having successfully completed this module you will be able to:
- Use a range of generative programming techniques in your software development
- Use code generation techniques to facilitate automated testing
Subject Specific Intellectual and Research Skills
Having successfully completed this module you will be able to:
- Apply aspect-oriented programming techniques to your code base
Syllabus
- Automated code generation concepts
- Software product Lines
- Programs as data structures
- Template based metaprogramming
- Quote based metaprogramming
- Rewrite based code generation
- Aspect oriented programming
- Automated generation of testing code
Learning and Teaching
Type | Hours |
---|---|
Lecture | 36 |
Tutorial | 12 |
Preparation for scheduled sessions | 18 |
Revision | 10 |
Wider reading or practice | 39.5 |
Follow-up work | 18 |
Completion of assessment task | 16.5 |
Total study time | 150 |
Assessment
Summative
This is how we’ll formally assess what you have learned in this module.
Method | Percentage contribution |
---|---|
Continuous Assessment | 40% |
Final Assessment | 60% |
Referral
This is how we’ll assess you if you don’t meet the criteria to pass this module.
Method | Percentage contribution |
---|---|
Set Task | 100% |
Repeat
An internal repeat is where you take all of your modules again, including any you passed. An external repeat is where you only re-take the modules you failed.
Method | Percentage contribution |
---|---|
Set Task | 100% |
Repeat Information
Repeat type: Internal & External