30MU03BI - Orientation en informatique (9 ECTS)
Responsables : Padovani V., Zielonka W.
30ME11BI - Outils en Bioinformatique (3 ECTS)
Enseignant : Fuchs P.
Responsable pédagogique : Fuchs P.
Objectif :
L'objectif de ce cours est d'introduire le système d'exploitation Unix et les concepts de programmation, d'un point de vue
pragmatique, applicable immédiatement pour un problème de biologie. Les cours se basent sur des exemples en bioinformatique
ou en modélisation en biologie, et les notions d'informatiques seront introduites au fur et à mesure des besoins
(travail sur des séquences nucléiques, fichiers PDB, automatisation de calculs sur des génomes, etc).
La deuxième partie de ce cours décrit des algorithmes et l'utilisation de bibliothèques de programmation à
travers des illustrations à des problèmes de compréhension de dynamiques de processus biologiques.
Programme :
Le cours sera donné sur deux semaines au début du mois de septembre.
Il est destiné aux étudiants des deux années M1 et M2.
Introduction à Unix. Notions de base (gestion de compte, gestion des répertoires et des fichiers), notion de droits,
notion de "process" et gestion des processus.
Bases d'Unix Avancé: commandes et processus, redirection des flux, parsing et expressions régulières,
programmation shell. Programmation (langages: C et python).
Bibliographie
- Loukides Mike and Andy Oram, "Programmer avec les outils GNU" Editions O'Reilly 1997
- Lutz, "Introduction à Python" Editions O'Reilly, 2000
30ME10BI - Algorithmique niveau II (3 ECTS)
Enseignant : Ravelomanana V.
Responsable pédagogique : Ravelomanana V.
Pré-requis : Avoir suivi l'UE d'informatique de licence de Biologie-informatique ou une
formation équivalente en informatique
Objectif :
Acquérir des notions solides en algorithmique discrète. Ainsi nous étudierons les principaux paradigmes
algorithmiques. Les exemples étant choisis tant que possible en bioinformatique. Les objets manipulés dans ce cours
seront des caractères, des chaines de caractères (ou séquences), des graphes, des matrices (de distance).
Programme :
Rappels de complexité algorithmique (i.e. comment évaluer la complexité d'un algorithme).
Nous mettrons en oeuvre ces idées sur des algorithmes sur des tableaux: algorithmes de tri d'entiers, tri par inversion
(applications aux séquences génomiques).
Récursivité et équations de récurrence de complexité, exemples: tri par fusion, recherche d'un
élément médian d'un tableau.
Algorithmes de graphes:
Arbres, arbres recouvrant de poids minimum (algorithmes gloutons, notions d'échanges) d'un graphe non orienté
valué.
Principaux algorithmes de calcul de plus courts chemins dans un graphe orienté valué.
Algorithmes pour les calculs de fermeture et réduction transitive d'un graphe orienté sans circuit.
Programmation dynamique :
Etude sur des exemples de ce paradigme algorithmique
Algorithmes d'énumération :
Enumération de toutes les permutations sur n éléments.
Algorithme pour l'énumération de toutes les cliques maximales d'un graphe.
Notion de backtrack.
Introduction à la cryptographie
Notions de codes à clef publique (RSA).
Applications en bioinformatique :
Recherche de motifs communs à deux séquences
Isomorphismes d'arbres
Arbres et matrices de distance. Approximation.
Phylogénie. Calculs de distances d'édition.
Bibliographie
- Introduction to Computational Molecular Biology par Setubal et Meidanis, PWS Publishing Company, 1997.
- Introduction to Algorithms, par T. Cormen, C.E. Leiserson et R. Rivest, The MIT Press, 1992.
30ME12BI - Programmation niveau II (3 ECTS)
Enseignants : Jurski Y., Pagani M.
Responsable pédagogique : Pagani M.
Pré-requis : Avoir suivi l'UE d'informatique de licence de Biologie-informatique ou une
formation équivalente en informatique
Programme :
Rappel rapide de bases communes de C et Java : types élémentaires, expressions et opérateurs,
instructions: if, switch, while, do while, for, break, continue.
Les tableaux en Java.
Introduction à la programmation orienté objet en Java :
- Les classes et les objets.
- Méthodes et champs d'instance et de classe.
- Les constructeurs.
- Sous-classes et héritage, hiérarchie de classes.
- Interfaces, leur utilisation et implémentation.
- Classes abstraites.
- Les exceptions.