Objective

The course aim to introduce 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. Well established algorithmic techniques will be studied as well as ways to encode them in a computer program using python.

Program

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
  • Greedy Algorithms
  • Dynamic programming algorithms
  • Graph-based algorithms
  • Divide-and-Conquer algorithms
  • Clustering and Tree-based 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.

Reference book and material

  • @jonasBionformatics: NEIL C. JONES AND PAVEL A. PEVZNER: An Introduction to Bioinformatics Algorithms, A Bradford Book, The MIT Press, Cambridge, Massachusetts, London, England, 2004.

Contact and discussion

All announcements and discussions will be carried out through Google Classroom qdeh2zwh. In Google Classroom, you are going to find a link to a Telegram that we share to discuss and talk.

Tentative detailed program

Theoretical lecture (usually Thursday)DateMaterialPractical Lecture
(usually Monday)
DateMaterial
L1: Computational Thinking2/10/2025first_lecture.pdfT1: Visual Studio, Jupiter notebook and Revisiting python

Data manipulation
6/10/2025Tutorial 1
L2: Algorithms for Bioinformatics, Complexity of Algorithms, Recursion9/10/2025second_lecture.pdf

Chapter 1 and 2 of jonesBionformatics
T2: Data manipulation

Recursion
13/10/2025Tutorial 2
L3: Sorting Problem16/10/2025third_lecture.pdf

Selection Sort Chapter 2.6 of jonesBionformatics

Merge Sort Chapter 7.1 of jonesBionformatics

QuickSort Chapter 12.1 of jonesBionformatics
T3: Data Visualization

Complexity analysis calculation

Sorting exercises in Python

L4: Greedy AlgorithmsChapter 5 of jonesBionformaticsT4: Biopython

Exercises on Greedy Algorithms
L5: Introduction to Dynamic ProgrammingChapter 6.1, 6.2, 6.3 of jonesBionformatics
T5: Exercises on Dynamic Programming
L5 (cont.): Sequence Similarity Problems

Edit Distance in Python
Chapter 6.4, 6.5, 6.6 of jonesBionformatics
T5 (cont.): Biopython for sequence alignment
L6: Divide and conquer algorithms:
Binary search, Merge Sort (again) and Map Reduce
Chapter 7.1 of jonesBionformatics
T6: Exercises on Dynamic Programming and Divide-and-Conquer

L7: Advanced Data StructureT7: Advanced data Structure
L8: Graph Algorithms

Intro to NetworkX
Chapter 8.1 of jonesBionformatics
T8: Graph Algorithms on NetworkXgraphs.pdf

L9: Clustering algorithms

Chapter 10.1, 10.2, 10.3 of jonesBionformaticsT9:
Recall of Pandas for data manipulation and visualization.
Exploratory Data Analysis and Clustering Algorithms

Exploratory Data Analysis and Clustering Algorithms (cont.)
L10: ---

T10: Git and Github

Cloud computing

Evaluation

The course will be evaluated based on the performance of a written test.

We will discuss during the lectures how the evaluation works in more details.