Programma
The course aim to introduce computational thinking and the algorithmic approach to solving problems correctly and efficiently. Algorithms are ubiquitous in bioinformatics and are often at the interface of computer science and biology. We will introduce the algorithmic approach and the theory of algorithms for studying correctness and efficiency, understanding what makes a good algorithm and how to classify them.
We will study characteristic algorithmic techniques and the related computational ideas that are relevant to the field of biology and how to select the most suitable to solve a given task. Topics covered include
- Searching algorithms
- Dynamic programming algorithms
- Graph-based algorithms
- Divide-and-Conquer algorithms
- Clustering and Tree-based algorithms
- Randomized Algorithms
We will work with Python and how to write a computer program encoding a given algorithm. We will work with Amazon's AWS and how to use cloud resources to efficiently execute our python programs on large datasets.
The detailed program of the course and the corresponding material is available on the Google Classroom system and also through the web page of the instructor.
Prerequisiti
PRINCIPLES OF COMPUTER SCIENCE I
Principles of Mathematics
Testi di riferimento
NEIL C. JONES AND PAVEL A. PEVZNER: An Introduction to Bioinformatics Algorithms, The MIT Press, Cambridge, Massachusetts, London, England, 2004.
Frequenza
Classes are carried out twice a week: Monday 16:00 - 19:00 Thursday 14:00 - 16:00
Modalità di esame
The exam consists of a written exam. More details will be given during the lectures.
Bibliografia
NEIL C. JONES AND PAVEL A. PEVZNER: An Introduction to Bioinformatics Algorithms, The MIT Press, Cambridge, Massachusetts, London, England, 2004.
Modalità di erogazione
Generally, on Thursday we introduce new theoretical concepts while on Monday we deepen these concepts and make exercise on them