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) | Date | Material | Practical Lecture (usually Monday) | Date | Material |
|---|---|---|---|---|---|
| L1: Computational Thinking | 2/10/2025 | first_lecture.pdf | T1: Visual Studio, Jupiter notebook and Revisiting python Data manipulation | 6/10/2025 | Tutorial 1 |
| L2: Algorithms for Bioinformatics, Complexity of Algorithms, Recursion | 9/10/2025 | second_lecture.pdf Chapter 1 and 2 of jonesBionformatics | T2: Data manipulation Recursion | 13/10/2025 | Tutorial 2 |
| L3: Sorting Problem | 16/10/2025 | third_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/2025 | Tutorial 3 |
| L4: Greedy Algorithms | 23/10/2025 | fourth_lecture.pdf Chapter 5 of jonesBionformatics | T4: Biopython on Google Colab Exercises on Greedy Algorithms | 27/10/2025 | Tutorial 4 |
| L5: Dynamic Programming Algorithms | 30/10/2025 | fifth_lecture.pdf Chapter 6.1, 6.2, 6.3 of jonesBionformatics | S1: Exercises on Recursion, Greedy algorithms and Sorting | 3/11/2025 | S1.pdf notebook |
| L6: Divide and conquer algorithms: Binary search, Merge Sort (again) and Map Reduce | 6/11/2025 | sixth_lecture.pdf Chapter 7.1 of jonesBionformatics | T5: Exercises on Dynamic Programming and Map Reduce | 10/11/2025 | Tutorial 5 |
| L7: Advanced Data Structure | 13/11/2025 | seventh_lecture.pdf | T6: Exercises on Dynamic Programming and Divide-and-Conquer Biopython for sequence alignment | 17/11/2025 | Tutorial 6 Useful resources to solve exercises about DP available on this blog |
| L8: Graph Algorithms Intro to NetworkX | 20/11/2025 | eigth_lecture.pdf graphs.pdf Chapter 8.1 of jonesBionformatics | T7: Graph Algorithms on NetworkX and exercises | 24/11/2025 | Tutorial 7 Solutions |
| L9: Clustering algorithms | 27/11/2025 | ninth_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/2025 | Tutorial 8 |
| T9: Exercises on Graphs | 11/12/2025 | Tutorial 9 Solutions | S2: Exam Simulation | 15/12/2025 | S2.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
| Date | Note | Location |
|---|---|---|
| 12/01/2026 | https://drive.google.com/file/d/1wy5UD-MHYeZgcZmzBeRT36wUY638Y-2I/view?usp=sharing | TBD |
| 09/02/2026 | TBD | |
| 13/04/2026 | Extraordinary session only for students respecting this regulation: Article 40, Paragraph 6, https://www.uniroma1.it/en/content/exams | TBD |
| 08/06/2026 | TBD | |
| 13/07/2026 | TBD | |
| 14/09/2026 | TBD | |
| 13/10/2026 | Extraordinary session only for students respecting this regulation: Article 40, Paragraph 6, https://www.uniroma1.it/en/content/exams | TBD |