Modern biology routinely generates huge amounts of data: sequences, from NGS experiments; quantitative data, from -omics experiments; and graphs, representing molecular interactions. At the heart of many bioinformatics applications are algorithms that handle such types of data in time- and memory-efficient ways. Almost invariably these algorithms optimize some criterion – e.g. alignment quality, energy function or probability measure – using the data available.
In this course, the main types of algorithms will be discussed and implemented, aiming to gain a deeper understanding of the computational strategies underlying these algorithms. This will allow students to recognize which type of algorithm will be applicable in the development of new bioinformatics tools to help answer new questions in (computational) biology.