Lectures are over - you can contact me anytime for further questions. However, before contacting me, try to see whether the answer to your questions are already in this webpage, in the slides linked by this web page or in the book. Consider also that we share a telegram group with the other collegues, ask there: they might be faster than me answering you.

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 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: Complexity analysis calculation

Sorting exercises in Python

20/10/2025Tutorial 3
L4: Greedy Algorithms23/10/2025fourth_lecture.pdf

Chapter 5 of jonesBionformatics
T4: Biopython on Google Colab

Exercises on Greedy Algorithms
27/10/2025Tutorial 4
L5: Dynamic Programming Algorithms30/10/2025fifth_lecture.pdf

Chapter 6.1, 6.2, 6.3 of jonesBionformatics
S1: Exercises on Recursion, Greedy algorithms and Sorting
3/11/2025S1.pdf

notebook

L6: Divide and conquer algorithms:
Binary search, Merge Sort (again) and Map Reduce
6/11/2025sixth_lecture.pdf

Chapter 7.1 of jonesBionformatics
T5:
Exercises on Dynamic Programming and Map Reduce
10/11/2025Tutorial 5
L7: Advanced Data Structure13/11/2025seventh_lecture.pdfT6: Exercises on Dynamic Programming and Divide-and-Conquer

Biopython for sequence alignment
17/11/2025Tutorial 6

Useful resources to solve exercises about DP available on this blog
L8: Graph Algorithms

Intro to NetworkX
20/11/2025eigth_lecture.pdf

graphs.pdf

Chapter 8.1 of jonesBionformatics
T7: Graph Algorithms on NetworkX and exercises24/11/2025Tutorial 7

Solutions
L9: Clustering algorithms27/11/2025ninth_lecture.pdf

Chapter 10.1, 10.2, 10.3 of jonesBionformatics
T8: Pandas for data manipulation and visualization.

Exploratory Data Analysis and Clustering Algorithms
1/12/2025Tutorial 8

T9: Exercises on Graphs

11/12/2025Tutorial 9

Solutions
S2: Exam Simulation
15/12/2025S2.pdf

Notebook

Solutions

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”

Evaluation

The course will be evaluated based on the performance of a written test. Here some details: slides

Exam dates

DateNoteLocation
12/01/2026https://drive.google.com/file/d/1wy5UD-MHYeZgcZmzBeRT36wUY638Y-2I/view?usp=sharingTBD
09/02/2026TBD
13/04/2026Extraordinary session only for students respecting this regulation: Article 40, Paragraph 6, https://www.uniroma1.it/en/content/examsTBD
08/06/2026TBD
13/07/2026TBD
14/09/2026TBD
13/10/2026Extraordinary session only for students respecting this regulation: Article 40, Paragraph 6, https://www.uniroma1.it/en/content/examsTBD