École Privée d’Ingénierie du Niger — L’école du nouveau monde

✉ elearning@epiniger.edu.ne    🌐 epiniger.edu.ne

Unité d’enseignement : GELO · S2 · UE3 — Programmation & Structures de Données

  • Modélisation BDD & Merise Avancée

    Ce cours approfondit la conception des bases de données relationnelles entamée au S1 (BDM1143). Il couvre les situations de modélisation que l’on rencontre dans les systèmes d’information réels — hôpitaux, établissements scolaires, microfinances, opérateurs de Mobile Money — : entités faibles, associations ternaires, héritage. Il formalise ensuite le passage au modèle logique et la qualité d’un schéma par la théorie des dépendances fonctionnelles et la normalisation. La seconde moitié est consacrée à la mise en œuvre dans un SGBD relationnel (MySQL, PostgreSQL) : SQL avancé (jointures, sous-requêtes, agrégats, fonctions de fenêtrage), transactions, niveaux d’isolation et vues. Les requêtes du cours ont été exécutées sous PostgreSQL 16 ; les différences avec MySQL 8 sont signalées.

    Objectifs d’apprentissage

    • Maîtriser les techniques avancées de modélisation avec Merise : entités faibles, héritage, associations ternaires.
    • Concevoir et normaliser un schéma relationnel jusqu’à la 3NF à partir d’un cahier des charges.
    • Rédiger des requêtes SQL avancées : jointures, sous-requêtes, fonctions d’agrégation.
    • Gérer les transactions, la concurrence et les vues dans un SGBD relationnel (MySQL/PostgreSQL).

    Prérequis

    Introduction aux BDD & Modélisation Merise (BDM1143) — GELO S1 : MCD simple (entités, associations binaires, cardinalités), règles de base du passage au MLD, requêtes SQL SELECT / INSERT / UPDATE / DELETE élémentaires.

    Plan du cours

    1. Leçon 1 — Merise Avancée
    2. Leçon 2 — Modèle Logique et Normalisation
    3. Leçon 3 — SQL Avancé
    4. Leçon 4 — Transactions et Sécurité

    Travaux pratiques

    • TD de modélisation : MCD d’un système d’information hospitalier et de gestion scolaire ; normalisation pas à pas.
    • TP SQL sur une base de microfinance (jointures, sous-requêtes, agrégats, fenêtrage).
    • TP (leçon 4) : conception et implémentation d’une BDD de gestion scolaire sous MySQL (script également compatible PostgreSQL).

    Modalités d’évaluation

    Volume horaire : CM 14 h, TD 6 h, TP 10 h, TPE 30 h, soit 60 h (3 crédits). Évaluation CC + ET : contrôle continu 40 % (TD, TP gestion scolaire, quiz), examen terminal 60 %. Nature : mixte (écrit de modélisation et épreuve SQL).

    Bibliographie

    • Nanci D. & Espinasse B., Ingénierie des systèmes d’information — Merise, Vuibert.
    • Ramakrishnan R. & Gehrke J., Database Management Systems, McGraw-Hill.
    • Elmasri R. & Navathe S., Fundamentals of Database Systems, Pearson (complément).
  • Langage C — Structures & Fichiers

    Ce cours prolonge l’algorithmique du S1 en langage C, le langage des systèmes d’exploitation, des logiciels embarqués, des pilotes et de nombreux outils réseau. L’étudiant y apprend à maîtriser la mémoire (pointeurs, allocation dynamique), à regrouper des données dans des types structurés, à implémenter en C les structures de données classiques (listes chaînées, piles, files, arbres, tables de hachage) et à rendre les données persistantes dans des fichiers texte et binaires. Le cours se termine par l’organisation d’un programme en modules compilés séparément avec un Makefile, à travers un projet de gestion de contacts en ligne de commande, adapté aux contextes à faible connectivité (données stockées localement, sans serveur).

    Objectifs d’apprentissage

    • Programmer en C avec maîtrise de la gestion de la mémoire : pointeurs, allocation dynamique.
    • Implémenter les structures de données classiques en C : listes chaînées, arbres, tables de hachage.
    • Réaliser des entrées/sorties sur fichiers en C : fichiers texte et binaires, accès aléatoire.
    • Développer des programmes C modulaires et robustes avec gestion des erreurs.

    Prérequis

    Algorithmique & Structures de Données (ALG1141) — GELO S1 ; Introduction aux BDD & Modélisation Merise (BDM1143) — GELO S1. Il est recommandé de savoir écrire en C un programme simple (variables, boucles, fonctions, tableaux).

    Plan du cours

    1. Leçon 1 — Pointeurs et Gestion de la Mémoire
    2. Leçon 2 — Structures et Types Définis
    3. Leçon 3 — Structures de Données en C
    4. Leçon 4 — Fichiers et Programmation Modulaire

    Travaux pratiques

    • Exercices de programmation compilés avec gcc -Wall -Wextra -std=c11 et contrôlés avec valgrind (fuites mémoire).
    • TP projet (leçon 4) : mini-système de gestion de contacts en fichiers binaires (CLI), découpé en modules .h/.c et compilé avec un Makefile.

    Modalités d’évaluation

    Volume horaire : CM 14 h, TD 6 h, TP 10 h, TPE 30 h, soit 60 h de charge totale (3 crédits). Évaluation CC + ET : contrôle continu 40 % (TP, projet contacts, quiz), examen terminal 60 %. Nature : mixte (écrit et pratique sur machine).

    Bibliographie

    • Kernighan B. & Ritchie D., Le Langage C, Masson (Dunod).
    • King K. N., C Programming: A Modern Approach, W. W. Norton.
    • Delannoy C., Programmer en langage C, Eyrolles (complément).
  • Algorithmique Avancée & Complexité

    Ce cours approfondit l’algorithmique du S1 : il apprend à analyser rigoureusement le coût d’un algorithme, à concevoir des solutions efficaces à l’aide des grands paradigmes (diviser pour régner, programmation dynamique, glouton, backtracking), à choisir les structures de données adaptées (arbres équilibrés, tables de hachage, tas, graphes) et à reconnaître les problèmes difficiles pour lesquels on se contente d’heuristiques. Ces compétences sont décisives pour un développeur au Niger comme ailleurs : une application de Mobile Money qui traite des millions de transactions, un moteur de recherche de produits d’un site e-commerce ou l’optimisation des tournées de livraison d’une entreprise de Niamey exigent des algorithmes qui passent à l’échelle, sur des serveurs aux ressources souvent limitées. Tous les programmes sont écrits en Python 3 et ont été exécutés ; les résultats affichés sont reproductibles.

    Objectifs d’apprentissage

    • Maîtriser les paradigmes de conception algorithmique avancés : diviser pour régner, programmation dynamique.
    • Analyser la complexité temporelle et spatiale des algorithmes avec rigueur mathématique.
    • Concevoir des algorithmes efficaces sur les structures de données avancées : arbres, graphes.
    • Résoudre des problèmes algorithmiques classiques de niveau intermédiaire (NP-complétude, heuristiques).

    Prérequis

    Algorithmique & Structures de Données (ALG1141) — GELO S1 ; Mathématiques Discrètes & Logique (MDS2121) — GELO S2 (récurrences, graphes, dénombrement).

    Plan du cours

    1. Leçon 1 — Analyse de la Complexité
    2. Leçon 2 — Paradigmes Algorithmiques Avancés
    3. Leçon 3 — Structures de Données Avancées
    4. Leçon 4 — Problèmes Difficiles et Heuristiques

    Travaux pratiques

    • Le syllabus ne prévoit pas de TP encadrés (0 h de TP) ; les 8 h de TD alternent exercices sur papier et programmes Python à exécuter.
    • Deux activités guidées proposées en travail personnel (TPE, 36 h) : tests empiriques de complexité sur des instances croissantes (Leçon 1) ; implémentation et comparaison d’algorithmes de tri et de recherche de chemin (Leçon 4).

    Modalités d’évaluation

    Volume horaire : CM 16 h, TD 8 h, TP 0 h, TPE 36 h, soit 60 h (CTT) — 3 crédits. Évaluation : contrôle continu (CC) 30 % + examen terminal (ET) 70 % ; nature mixte (M) : épreuves écrites et programmes.

    Bibliographie

    • T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Introduction à l’algorithmique, Dunod.
    • S. S. Skiena, The Algorithm Design Manual, Springer.
    • Complément : J. Kleinberg & É. Tardos, Algorithm Design, Pearson.