Our teaching is closely related to our research and both are based on our vision on Computational Intelligence. The link between research and teaching is represented by the motivational scenarios for our main research threads concerning parameter setting in evolutionary algorithms, embodied evolution in robot swarms, and collective adaptation in populations of humans, smart devices, and robots. These scenarios provide inspiration for examples discussed during our classes and are used to define Master projects.

The CI staff is responsible for seven courses described below.

Bachelor courses

  • Machine learning is the study of how to build computer systems that learn from experience. It is a very active subfield of Artificial Intelligence that intersects with statistics, cognitive science, information theory, and probability theory, among others. Over the last fifteen years, Machine Learning has gained immense importance for the design of search engines, robots, and sensor systems, and for the processing of large scientific data sets. This course presents the dominant concepts of machine learning methods including some theoretical background. We’ll cover established machine learning techniques such as Decision Trees, Neural Networks, Bayesian Learning, Instance-based Learning and Support Vector Machines as well as some statistical techniques to assess and validate machine learning results.
  • Computational Intelligence can be positioned as the research area that follows a bottom-up approach to developing systems that exhibit intelligent behaviour in complex environments. Typically, sub-symbolic and nature-inspired methods are adopted that tolerate incomplete, imprecise and uncertain knowledge. This course covers nature-inspired techniques such as neural networks, evolutionary algorithms, and swarm intelligence as well as fuzzy systems. Special attention is paid to using such techniques for making autonomous and adaptive machines.

Master courses

  • Evolutionary Computing concerns computational methods based on Darwinian principles of evolution. It illustrates the usage of such methods as problem solvers and as simulation, respectively modeling tools. Students gain hands-on experience in performing experiments through a compulsory programming assignment.
  • Data Mining Techniques. The term “Big Data” is omnipresent nowadays. Data Mining Techniques are essential to make sense out of large datasets. The aim of the course is that students acquire data mining knowledge and skills that they can apply in a business environment. How the aims are to be achieved: Students will acquire knowledge and skills mainly through the following: an overview of the most common data mining algorithms and techniques (in lectures), a survey of typical and interesting data mining applications, and practical assignments to gain “hands-on” experience. The application of skills in a business environment will be simulated through various assignments of the course.
  • Machine Learning for the Quantified Self. The quantified-self refers to large-scale data collection of a user’s behavior and context via a range of sensory devices, including smartphones, smartwatches, ambient sensors, etc. These measurements contain a wealth of information that can be extracted by means of machine learning techniques, for instance for the purpose of predictive modeling. In addition, machine learning techniques can be a driver for adaptive systems to support users in a personalized way based on the aforementioned measurements. The type of data does, however, require specialized machine learning techniques to fully exploit the information contained in the data. Examples of challenges include the temporal nature of the data, the variety in the type of data, the different granularity of various sensors, noise, etcetera.
  • Learning Machines. This course concerns robots that can adjust and improve their behaviour over time. Objectives: 1) To understand the difference between machine learning and learning machines. 2) To equip a given robot with learning abilities and experimentally test the resulting performance. 3) To experience the difference between simulated and real robots. To this end, we use Robobo robots. For the simulations we use our own software that allows easy portability of code between simulated and real Robobo.