Machine Learning for Software Engineering
Machine Learning for Software Engineering is about learning and optimizing complex tasks that are computationally intractable for exact methods. The goal of this course is to understand the principles of meta-heuristics in optimization as well as key concepts of learning based on neural nets.
Students should understand the following techniques and theories:
- Problem space exploration and search-based optimization
- Meta-heuristics for optimization
- Relationship between biological learning and optimization with algorithms
- Neural nets and deep learning
Students should be able to apply the above theories for solving concrete learning and optimization problems. Furthermore, they should appreciate the limits and constraints of the individual methods above.
Students should be able formalize and generalize their own solutions using the above concepts and implement them in a specified language (preferable in Python).
Students should master concepts and approaches such as
- Simulated annealing
- Swarm optimization
- Ant colonization
- Evolutionary algorithms
- Sampling and Experimental Designs
- Dimensionality Reduction
- Neural nets
- Deep learning
in order to tackle problems learning and optimizing huge problems, which are inherent to Digital Media. They should also be able to implement the algorithms and techniques in Python and be able to understand a proposed problem, to compare different approaches and techniques regarding applicability and accuracy, to make well-informed decisions about the preferred solution and, if necessary, to find their own solutions.
Students should develop an understanding of the current state of research in optimization and learning. With appropriate supervision, students should be able to tackle new research problems, especially in the area of search-based software engineering.