Both Artificial Intelligence (AI) and Software Engineering (SE) are increasingly important areas in Computer Science, but they are rarely taught together. This module covers the unique synergy between AI and SE, which, combined in automated AI software engineering research and practice, have had a considerable and continuing impact. The topic consists of two major pillars: \"AI for SE\", where AI algorithms have been tailored to automatically solve various tasks in software engineering (e.g., code defect prediction, bug report analysis, and configuration performance tuning etc); and \"SE for AI\", in which software engineering methodologies have been applied to build better AI-powered software systems. The module discusses specific concepts, methodologies and their algorithmic features and implementations for solving particular automated SE tasks and for engineering AI software systems.
Learning Outcomes
By the end of the module students should be able to:
20.1
Describe the various formalisations of automated SE tasks and their characteristics.
20.2
Describe the AI methods that can be applied to solve those SE tasks.
20.3
Describe SE concepts and methodologies that can be used to build AI software systems.
20.4
Understand and compare the potential resolutions for both AI for SE and SE for AI.