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.

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 a2xnabfa.

Tentative detailed program

Theoretical lecture (usually Thursday)DateMaterialPractical Lecture
(usually Monday)
DateMaterial
L1: Computational Thinking1/10/2026talk1.pdfT1: Google Colab, Jupiter notebook and Revisiting python
5/10/2026tutorial1.pdf

Tutorial 1
L2: Algorithms for Bioinformatics, Complexity of Algorithms, Recursion8/10/2026second_lecture.pdf

Chapter 1 and 2 of jonesBionformatics
T2: Other Exercises on Python

Recursion
12/10/2026tutorial2.pdf

Tutorial 2
L3: Sorting Problem15/10/2026Selection Sort Chapter 2.6 of jonesBionformatics

Merge Sort Chapter 7.1 of jonesBionformatics

QuickSort Chapter 12.1 of jonesBionformatics
T3: Complexity analysis calculation

Sorting exercises in Python

19/10/2026
L4: Greedy Algorithms22/10/2026Chapter 5 of jonesBionformaticsT4: Biopython on Google Colab

Exercises on Greedy Algorithms
26/10/2026
L5: Dynamic Programming Algorithms29/10/2026Chapter 6.1, 6.2, 6.3 of jonesBionformatics
S1: Exercises on Recursion, Greedy algorithms and Sorting
2/11/2026
L6: Divide and conquer algorithms:
Binary search, Merge Sort (again) and Map Reduce
5/11/2026Chapter 7.1 of jonesBionformatics
T5:
Exercises on Dynamic Programming and Map Reduce
9/11/2026
L7: Advanced Data Structure12/11/2026T6: Exercises on Dynamic Programming and Divide-and-Conquer

Biopython for sequence alignment
16/11/2026Useful resources to solve exercises about DP available on this blog
L8: Graph Algorithms

Intro to NetworkX
19/11/2026graphs.pdf

Chapter 8.1 of jonesBionformatics
T7: Graph Algorithms on NetworkX and exercises23/11/2026
L9: Clustering algorithms26/11/2026Chapter 10.1, 10.2, 10.3 of jonesBionformaticsT8: Pandas for data manipulation and visualization.

Exploratory Data Analysis and Clustering Algorithms
30/11/2026

T9: Exercises on Graphs10/12/2026S2: Exam Simulation14/12/2026

Exercises

At this page, there is a list of exercises we have seen during the semester or that has been left as homework.

If you want to further train yourself with other exercises you can use Rosalind “Algorithmic Heights”, Rosalind “Bioinformatics Stronghold” and Hackerrank.

To train on python other exercises are available at Rosalind “Python Village”

Exam dates

DateNoteLocation
XX/01/2027TBD
XX/02/2027TBD
XX/04/2027TBD
XX/06/2027TBD
XX/07/2027TBD
XX/09/2027TBD
XX/10/2027TBD

Past editions

More information on the past editions of the course are available at this page: (2025-2026) PCSII