This module covers various perspectives of Software Engineering theory and practices. It provides an overview both of the challenges in contemporary software engineering (such as scale, complexity and urgency) and of the recommended practices for overcoming these challenges. It will familiarise students with both the historical and current theories about activities for the design, development, deployment and ongoing operation of software. It will show how these activities aim to be predictable, repeatable, robust, value-producing, and how they aim to meet the specified requirements for the intended system users. It will also emphasise that standardisation and reuse can be important factors in successfully engineering software. The module assumes prior knowledge about Software Engineering at the level of an introductory/undergraduate module.
This module introduces the concepts of generic programming in order to generate code at compile-time.