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) | 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: Data Visualization Complexity analysis calculation Sorting exercises in Python | ||
L4: Greedy Algorithms | Chapter 5 of jonesBionformatics | T4: Biopython Exercises on Greedy Algorithms | |||
L5: Introduction to Dynamic Programming | Chapter 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 Structure | T7: Advanced data Structure | ||||
L8: Graph Algorithms Intro to NetworkX | Chapter 8.1 of jonesBionformatics | T8: Graph Algorithms on NetworkX | graphs.pdf | ||
L9: Clustering algorithms | Chapter 10.1, 10.2, 10.3 of jonesBionformatics | T9: 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.