Syllabus des cursus de Centrale Lille

Algorithmique avancée et programmation

Libellé du cours : Algorithmique avancée et programmation
Département d'enseignement : MIN / Mathématiques - Informatique
Responsable d'enseignement : Monsieur THOMAS BOURDEAUD HUY
Langue d'enseignement : Français
Ects potentiels : 2
Grille des résultats : Grade de A+ à R
Code et libellé (hp) : G1_S5_SC_MIN_AAP - Algo. avancée et programmation

Equipe pédagogique

Enseignants : Monsieur THOMAS BOURDEAUD HUY / Madame RADHIA ARRAMI / Monsieur ANIS GARGOURI / Monsieur FREDERIC SEMET / Monsieur KHALED MESGHOUNI / Monsieur MAXIME FOLSCHETTE / Monsieur SLIM HAMMADI
Intervenants extérieurs (entreprise, recherche, enseignement secondaire) : divers enseignants vacataires

Résumé

Cet enseignement aborde la conception de structure de données, l’étude de la complexité d’algorithmes, présente et analyse plusieurs techniques algorithmiques (diviser pour régner, stratégie gloutonne…), permettant de traiter divers problèmes de recherche de données, de tri d’informations, de compression de données et d’optimisation. Les enseignements sont mis en oeuvre en langage C, sous Linux, en utilisant directement la ligne de commande. Les applications réalisées font appel à des structures de données à implémenter (listes, arbres binaires de recherche, arbres équilibrés, arbres partiellement ordonnés, graphes).

Objectifs pédagogiques

À l’issue du cours, l’élève sera capable de : - Représenter le comportement interne d'un programme en termes d'allocation de mémoire et d'appels de fonctions ; - Estimer l’efficacité d’un algorithme avant de le programmer ; - Analyser l’efficacité (temporelle et spatiale) d’un traitement (programme) réalisé et, le cas échéant, l’améliorer ; - Choisir les structures de données à réaliser ou à utiliser ainsi que le mode de programmation (itératif ou récursif) adaptés au problème à traiter et aux contraintes d’efficacité à respecter ; - Utiliser la ligne de commandes Linux, produire un projet sous la forme d'un fichier makefile - Travailler en équipe dans le cadre de la réalisation d'un projet informatique Contribution du cours au référentiel de compétences ; à l’issue du cours, l’étudiant aura progressé dans : - La capacité à organiser la résolution d’un problème (2.3, 2.4, 2.5) ; - La capacité à suivre la résolution (2.7) ; La capacité à développer des méthodes de travail, à organiser (3.5).

Objectifs de développement durable

Modalités de contrôle de connaissance

Contrôle Continu / Dernier Contrôle Bloqué du cours
Commentaires: Coef 1 - 4 tests en séance (moyenne des 4 tests) Coef 1 - TEA en groupe Coef 2 - Fil rouge en groupe Coef 4 - examen pratique terminal

Ressources en ligne

Supports de cours, énoncés de travaux pratiques, exemples de projets à compléter en ligne sur la plateforme Moodle. Capsules d'auto-formation : https://docs.google.com/document/d/1mPd2wSH3mwT8BqzeVVe_FONLHX1U1ca206x9QiP854M/edit Si vous souhaitez vous former en autonomie à Linux, vous pouvez suivre la formation suivante : https://www.netacad.com/fr/courses/os-it/ndg-linux-essentials Si vous souhaitez vous former en autonomie au C, vous pouvez consulter les archives des MOOC produits par l’institut Mines-Télécom : • ABC du langage C : https://www.fun-mooc.fr/courses/course-v1:MinesTelecom+04019+session03/about • Programmer en C : https://www.fun-mooc.fr/courses/course-v1:MinesTelecom+04020+session03/about

Pédagogie

Séances encadrées, effectuées en groupe de TD et en salle d’ordinateurs permettant la présentation vidéo-projetée d’éléments de cours, de démonstration de solution, d’exemples de réalisation et des réponses aux exercices. Les exercices proposés aux élèves - généralement des éléments de programme C - sont directement traités sur ordinateurs. L’enseignant guide - le cas échéant - les élèves dans la réalisation de ces exercices, les aide dans la recherche et la correction des erreurs détectées et s’assure des bonnes pratiques de réalisation (justesse des résultats, qualité du code réalisé …) Chaque séance encadrée peut contenir un QCM en ligne ou un test papier portant sur la séance en cours ou sur le travail effectué en autonomie.

Séquencement / modalités d'apprentissage

Nombre d'heures en CM (Cours Magistraux) : 1
Nombre d'heures en TD (Travaux Dirigés) : 0
Nombre d'heures en TP (Travaux Pratiques) : 22
Nombre d'heures en Séminaire : 0
Nombre d'heures en Demi-séminaire : 0
Nombre d'heures élèves en TEA (Travail En Autonomie) : 8
Nombre d'heures élèves en TNE (Travail Non Encadré) : 0
Nombre d'heures en CB (Contrôle Bloqué) : 0
Nombre d'heures élèves en PER (Travail PERsonnel) : 0
Nombre d'heures en Heures Projets : 0

Pré-requis

Notions de base d’algorithmique et pratique d’un langage de programmation, normalement acquises en classes préparatoires. Maîtrise de la syntaxe élémentaire du langage en suivant une formation préparatoire sous forme de capsules vidéo avant les TPs.

Nombre maximum d'inscrits

Remarques