Teaching -- Computational Intelligence and Software Engineering
I have previously taught a module on Computational Intelligence and Software Engineering.
Computational intelligence is a field of articial intelligence concerned with nature-inspired and heuristic algorithms, which aim to produce good solutions to problems in a reasonable amount of time. These algorithms are widely used for several real world applications, e.g., routing problems; assignment and scheduling problems; medical, biomedical and bioinformatics problems; forecasting problems; etc. More recently, they have also started to be used to help solving software engineering problems. In particular, due to the increased size and complexity of software systems, software engineering tasks such as software project planning, software testing and maintenance have become increasingly time consuming and error prone. Computational intelligence techniques can be used as decision support tools in order to produce higher quality software faster, helping to overcome the challenges posed by large and complex software systems. This module explains computational intelligence approaches that can be used for solving problems from several dierent domains. It also explores the synergies between computational intelligence and software engineering, explaining how computational intelligence approaches can be used to help solving software engineering problems.
Lecture Notes
- Module Introduction
- Hill Climbing
- Simulated Annealing
- Evolutionary Algorithms - Part I
- Evolutionary Algorithms - Part II
- Constraint Handling
- Evaluating and Comparing Algorithms - Part I
- Evaluating and Comparing Algorithms - Part II
- Requirements Selection
- Software Project Scheduling Problem - Part I
- Software Project Scheduling Problem - Part II
- Multi-Objective Evolutionary Algorithms
- Software Energy Consumption Optimisation
- Evolutionary Software Testing
- Ant Colony Optimisation
- Introduction to Machine Learning and k-Nearest Neighbours
- Evaluation Procedures for Machine Learning Algorithms
- Naive Bayes - Part I
- Naive Bayes - Part II
- Software Defect Prediction and Class Imbalance Learning
- Decision Trees - Part I
- Decision Trees - Part II
- Decision Trees - Part III
- Ensembles of Learning Machines
- Principles of Continuous Learning
- Feature Selection and Revision
- Revision - Optimisation
- Revision - Machine Learning