The main goals of this course are to introduce students to various algorithms in Natural Computing and show how they can be applied to various kinds of problems, notably in data science. Most importantly, students will develop the skills needed to apply such algorithms successfully in practice.
On completion of the course students should be able to:
- Explain how the various algorithms work and why one would use them.
- Develop, implement and assess methods based on natural computing.
- Design an experiment using natural computing algorithms.
- Perform simple simpulations of biological systems.
- Visualize and present the outcome of such an experiment after applying natural computing techniques to a specific question and/or dataset.
- Report on project progress and communicate choices and results.
- Write a research report.
Many processes in the natural world somehow store, process, and/or transfer information – which makes nature a terrific source of inspiration for computing scientists. An obvious example is the brain, which was the main source of inspiration for the neural network models that have proven widely successful in the machine learning field. But in this course, we will see that there are many more processes that can be used as inspiration for “Natural Computing”, such as processes of evolution and natural phenomena of social interaction among organisms.
The aim of natural computing is to develop tools either for solving complex (optimization) problems, or for studying emerging properties of complex systems through simulations. Natural computing can be divided into three main branches:
Computing inspired by nature: how can we use nature as source of inspiration to design new algorithms?
Simulation of nature: a synthetic process aimed at creating emerging patterns, forms, behaviours, and organisms through evolution. In other words: if we can translate a natural process into an algorithm, can we then use that algorithm to learn about the natural process itself?
Computing with natural materials: the use of natural materials to perform computation as substitute or supplement to classical computers.
This course deals with selected topics from the first two branches: computing inspired by nature, and simulation of nature.This course covers core Natural Computing and simulation approaches, like evolutionary algorithms, immunocomputing, swarm intelligence, and cellular automata. The students will learn to apply these methods to either learn about the dynamics of complex natural systems, or as general-purpose algorithms to tackle real-world problems.
The first half of the course will cover the basics of several algorithms (in lectures, tutorials, and homework assignments). In the second half of the course, students will design their own projects to study a method of their choice in more depth, tackling a real-world problem and/or answering a research question of interest.
- Self-study and homework assignments
- Project-based learning
Students will need some familiarity with programming in order to implement and work with the covered algorithms. An example course where this covered is Imperative Programming, but other, similar courses would suffice as well.
Students should also be familiar with the basics of data visualization and analysis (for example as covered in the BSc course Data Analysis or an equivalent course).
Home assignments, flash talk presentations and project report in groups.