A key component of cyber-physical systems is the software used to operate the system. From a systems engineering perspective an engineer needs to understand software engineering processes and the development lifecycle. In this module students will develop an understanding of software engineering and gain experience of reading and writing programs in multiple programming languages. They will learn how to design and analyse algorithms, select appropriate paradigms, and utilize modern development and testing tools.
This module brings together those fundamental concepts and skills related to the software engineering process, including: the design and simple analysis of algorithms, fundamental programming concepts, data structures, and basic software development methods and tools.
This module also covers looking after software after it has become operational (full-lifecycle rather than just up to the point where it is deployed), which would be a big differentiator and an important aspect of software engineering for cyber-physical engineered systems.
A significant feature of the module is the use of development projects. A single programming language and development environment will be used to exemplify the abstract concepts being developed. There will necessarily be some significant proportion of the module's independent study time being spent gaining familiarity with the language and its associated environment.