-
Partager cette page
INFO-H304
Compléments de programmation et d'algorithmique
Titulaire(s) du cours
Jérémie ROLAND (Coordonnateur)Crédits ECTS
5
Langue(s) d'enseignement
français
Contenu du cours
Langage C:
- Syntaxe et sémantique
- Allocation et désallocation manuelle de mémoire; pointeurs
Notions de C++
- Syntaxe et sémantique, aspects de programmation orientée objet
- Templates et bibliothèque standard C++ (STL)
- Les notations Grand O, Omega et Theta
- Notion d'algorithme et de complexité
- Classes de complexité standards
- Principes généraux
- Listes chaînées
- Queues de priorité, tas (heaps)
- Arbres binaires de recherche
- Tables de hachage
- Tri par insertion
- Tri par fusion (mergesort)
- Tri par tas (heapsort)- Tri rapide (quicksort)
- Tri linéaire: tri par comptage (counting sort) et tri Radix
Stratégies algorithmiques
- Divide-and-conquer
- Backtracking
- Programmation dynamique
- Algorithmes gloutons
Objectifs (et/ou acquis d'apprentissages spécifiques)
Programmation en C et C++:
- Pouvoir écrire des programmes simples en C/C++
- Comprendre et utiliser les concepts de base de la gestion dynamique de la mémoire
Algorithmique et structures de données:
- Pouvoir concevoir des algorithmes pour des problèmes simples en utilisant les techniques de base de l'algorithmique (divide-and-conquer, backtracking, programmation dynamique, etc.)
- Pouvoir concevoir et utiliser une structure de données élémentaire adaptée au problème (tableaux, listes chaînées, tables de hachage, arbres binaires de recherche, etc.)
- Pouvoir analyser la complexité de ces algorithmes
Pré-requis et Co-requis
Cours pré-requis
Cours ayant celui-ci comme co-requis
Méthodes d'enseignement et activités d'apprentissages
- Cours magistraux avec slides et démonstration sur ordinateur. Mise-en pratique directe sur ordinateur via une machine virtuelle. Enseignement en présentiel, retransmis en direct via Teams, et enregistré.
- Travaux pratiques en salle informatique: programmation sur ordinateur, mais aussi certains exercices théoriques sur papier. Travaux pratiques organisés en présentiel et séances de questions-réponses via Teams
- Projet de programmation sur un sujet imposé
Contribution au profil d'enseignement
Cette unité d'enseignement contribue aux compétences suivantes :
- Abstraire, modéliser et simuler des systèmes physiques complexes rencontrés dans les applications biomédicales (bioélectricité, biomécanique, écoulements, etc.)
- Se représenter les mécanismes biologiques fondamentaux depuis la biochimie de la cellule jusqu’au fonctionnement des principaux systèmes de la physiologie humaine
- Gérer, explorer et analyser les données médicales (dossier médical, imagerie, génomique, statistiques)
Références, bibliographie et lectures recommandées
- The C Programming Language (Second Edition), B.M. Kernighan and D.M. Ritchie, Prentice Hall (1988)
- The C++ Programming Language (Fourth Edition), B. Soustrup (2013)
- C++ for Java Programmers, M.A. Weiss (2003)
- Introduction to Algorithms (Third Edition), T.H. Cormen et al. (2009)
Support(s) de cours
- Podcast
- Université virtuelle
Autres renseignements
Contacts
Jérémie Roland (Jeremie.Roland@ulb.be)
Campus
Solbosch
Evaluation
Méthode(s) d'évaluation
- Projet
- Examen oral
Projet
Examen oral
- Evaluation continue: projet de programmation (5 points)
- Projet en groupe sur un sujet imposé
- Cahier des charges fourni en octobre, reprenant les critères d'évaluation
- Echéance intermédiaire en novembre: code avec fonctionnalités de base
- Echéance finale en décembre: code avec toutes les fonctionnalités + rapport
- Usage de l'intelligence artificielle autorisée mais strictement encadré: tout usage de l'IA doit être documenté et justifié, et ne peut concerner que du débuggage ou la réalisation de tâches génériques non directement liées au sujet du projet. Le code généré par IA sera considéré comme du code généré par autrui et pourra donc être sanctionné comme du plagiat si cet usage n'est pas documenté.
- Attention: le projet est organisé en première session uniquement
- Evaluation finale: examen oral (15 points)
- 1 question d'algorithmique (10 points)
- 1 question de programmation (5 points)
- 45 minutes de préparation des réponses : sans accès au matériel du cours, écriture des réponses sur le tableau (pas d'ordinateur pour la partie programmation)
- 45 minutes de présentation des réponses
- Organisé en première et seconde session suivant les mêmes modalités
Construction de la note (en ce compris, la pondération des notes partielles)
Le projet est noté sur 5 et l'examen oral sur 15.
- Si les deux notes sont supérieures à la moitié, la note globale est la somme de ces deux notes.
- Si le projet ou l'examen oral est en échec, les notes sont ramenées sur 20 et la note globale est le minimum des deux notes.
En conclusion, pour valider le cours il faut réussir le projet et l'examen oral.
Le report d'une note partielle (projet ou examen oral) d'une session à l'autre se fait uniquement pour les notes supérieures à la moitié ; ce report est alors automatique. Le projet est organisé en première session uniquement: en cas d'échec du projet en première session, celui-ci ne pourra donc être représenté que l'année académique suivante.
Langue(s) d'évaluation
- français