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 MAXIME FOLSCHETTE
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 MAXIME FOLSCHETTE / Madame LYNDA SELLAMI / Monsieur ANIS GARGOURI / Monsieur FREDERIC SEMET / Monsieur HERVE CAMUS / Monsieur KHALED MESGHOUNI / Monsieur THOMAS BOURDEAUD HUY
Intervenants extérieurs (entreprise, recherche, enseignement secondaire) : divers enseignants vacataires

Résumé

Cet enseignement aborde des éléments liés à l'algorithmique (tri, parcours de liste…), aux structures de données (piles, files, listes chaînées…) et à la gestion de la mémoire (pointeurs, allocation dynamique), et leur application en langage C. Ces notions permettent de traiter divers problèmes de recherche de données, de tri d’informations, de compression de données et d’optimisation. Quant au langage C, très répandu dans l'industrie, il est qualifié de « bas niveau » : il permet de comprendre les mécanismes à l'œuvre dans la gestion de la mémoire et qui peuvent être masqués dans d'autres langages. Les enseignements sont mis en œuvre sous Linux, de façon à proposer une initiation basique au processus de compilation et à la ligne de commande. Chaque année, un sujet particulier est approfondi et fait l'objet d'un mini-projet comprenant 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 : - Écrire un programme simple en langage C comprenant des variables, fonctions, structures de contrôle, définitions de types et allocation dynamique ; - Représenter le comportement interne d'un programme en termes d'allocation de mémoire et d'appels de fonctions ; - Choisir les structures de données à réaliser ou à utiliser adaptées au problème à traiter ; - Utiliser la ligne de commandes Linux pour compiler un programme en C ; - Avoir des notions de complexité algorithmique ; - 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 - QCM en séance (moyenne de tous les QCM) Coef 1 - TEA/TP notés Coef 2 - Fil rouge en groupe Coef 4 - Examen terminal sur feuille

Ressources en ligne

Supports de cours, énoncés de travaux pratiques, exemples de projets à compléter en ligne sur la plateforme Moodle. Pour vous mettre à niveau en algorithmique, vous pouvez suivre la formation suivante : https://www.france-ioi.org/algo/chapters.php en choisissant le parcours général et le langage C. 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

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, et des réponses aux exercices. Les exercices proposés aux élèves - généralement des éléments de programme C - sont résolus sur papier (en TD) ou directement sur ordinateurs (en TP). 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 portant sur la séance en cours ou sur le travail effectué en autonomie. Certaines séances de TP seront aussi évaluées sur la base du compte-rendu de l'élève.

Séquencement / modalités d'apprentissage

Nombre d'heures en CM (Cours Magistraux) : 1
Nombre d'heures en TD (Travaux Dirigés) : 8
Nombre d'heures en TP (Travaux Pratiques) : 14
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) : 16
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.

Nombre maximum d'inscrits

Remarques