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

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

Unité d’enseignement : CYB · S4 · UE3 — Programmation / Base de données

  • Atelier génie logiciel – Langage Java 2

    Suite de l’atelier du semestre 3 (AGL2335 : environnement Java, types, conditions et boucles), ce cours du semestre 4 fait passer l’étudiant de petits programmes linéaires à de véritables applications structurées. Il étudie les tableaux (une et deux dimensions, recherche, tri), les tableaux dynamiques (ArrayList) et la manipulation des chaînes de caractères, puis la décomposition d’un programme en méthodes (paramètres, valeur de retour, surcharge, récursivité). Une étude de cas finale réunit ces notions dans une petite application orientée objet de gestion des notes d’une école de Niamey, dotée d’un module d’authentification qui stocke les mots de passe de façon sûre. Ces acquis préparent aux interfaces graphiques, au développement mobile Android et au développement sécurisé.

    Objectifs d’apprentissage

    • Déclarer, parcourir, rechercher et trier des tableaux à une et deux dimensions ; utiliser la classe Arrays.
    • Gérer des collections de taille variable avec ArrayList et les parcourir en sécurité.
    • Manipuler les chaînes (String, StringBuilder) : découpage, recherche, extraction, masquage de données sensibles.
    • Écrire des méthodes réutilisables, surchargées ou récursives, avec validation de leurs paramètres.
    • Concevoir une petite application orientée objet (classes, encapsulation, constructeurs) et la tester.
    • Appliquer les bonnes pratiques de sécurité : validation des entrées, copies défensives, hachage des mots de passe.

    Prérequis

    AGL2335 (S3) : syntaxe Java, types, opérateurs, Scanner, if/switch, boucles. Algorithmique S1-S2.

    Plan du cours

    1. Leçon 1 — Tableaux : déclaration, parcours, recherche et tri
    2. Leçon 2 — Tableaux dynamiques et chaînes de caractères
    3. Leçon 3 — Fonctions et méthodes
    4. Leçon 4 — Étude de cas : application de gestion des notes et authentification

    Modalités d’évaluation

    Volume horaire : 10 h de CM, 10 h de TD, 10 h de TP et 30 h de TPE ; 3 crédits. Évaluation : contrôle continu (TD, TP rendus et testés, projet de l’étude de cas, quiz, 40 %) et examen terminal (60 %).

    Bibliographie

    • Claude Delannoy, Programmer en Java, Eyrolles.
    • Joshua Bloch, Effective Java, Addison-Wesley.
    • Robert C. Martin, Clean Code, Prentice Hall.
    • Oracle, The Java Tutorials et documentation de l’API Java SE (java.util, java.lang.String).
    • OWASP, Password Storage Cheat Sheet et Input Validation Cheat Sheet (owasp.org).
  • Application client-serveur et Web 2

    Suite directe du cours de semestre 3 (système UNIX, processus, services et scripts), ce cours du semestre 4 étudie la conception, le déploiement et la configuration d’applications client-serveur et Web. L’étudiant apprend comment un client et un serveur dialoguent sur le réseau (sockets TCP/UDP), comment fonctionne le protocole HTTP qui porte le Web et les API, comment installer et configurer des serveurs Web (Nginx, Apache) avec HTTPS, puis comment relier une application dynamique à une base de données en appliquant les bonnes pratiques de développement sécurisé (OWASP). Les exemples s’appuient sur des situations locales : portail de résultats d’une école de Niamey, API de paiement mobile d’une PME, intranet d’une administration.

    Objectifs d’apprentissage

    • Distinguer les architectures 2-tiers, 3-tiers et n-tiers et identifier le rôle de chaque composant.
    • Expliquer et programmer un échange client-serveur par sockets TCP en Python.
    • Analyser une requête et une réponse HTTP (méthodes, codes d’état, en-têtes, cookies) et le rôle de TLS.
    • Installer et configurer un serveur Web Nginx/Apache : hôtes virtuels, HTTPS, reverse proxy, en-têtes de sécurité, journaux.
    • Développer une application Web reliée à une base de données avec requêtes paramétrées, validation des entrées et hachage des mots de passe.
    • Dimensionner simplement un serveur (débit, requêtes par seconde).

    Prérequis

    ACS2334 (S3) : ligne de commande UNIX, services systemd, scripts Bash ; bases de réseaux TCP/IP (CCNA 1-2) ; notions de base de données SQL et de programmation (Python ou PHP).

    Plan du cours

    1. Leçon 1 — Architectures client-serveur et programmation par sockets
    2. Leçon 2 — Le Web et le protocole HTTP/HTTPS
    3. Leçon 3 — Serveurs Web : installation et configuration sécurisée
    4. Leçon 4 — Applications Web dynamiques, bases de données et sécurité

    Modalités d’évaluation

    Volume horaire : 10 h de CM, 0 h de TD, 10 h de TP et 20 h de TPE ; 2 crédits. Évaluation : contrôle continu (TP notés sur la configuration d’un serveur, quiz, mini-projet d’application Web sécurisée, 40 %) et examen terminal (60 %).

    Bibliographie

    • Andrew S. Tanenbaum et David J. Wetherall, Réseaux, Pearson.
    • James F. Kurose et Keith W. Ross, Computer Networking: A Top-Down Approach, Pearson.
    • David Gourley et Brian Totty, HTTP: The Definitive Guide, O’Reilly.
    • OWASP Foundation, OWASP Top 10 et OWASP Cheat Sheet Series (owasp.org).
    • ANSSI, Recommandations pour la mise en œuvre d’un site Web : maîtriser les standards de sécurité côté navigateur et Recommandations de sécurité relatives à TLS (ssi.gouv.fr).
  • UML et ITIL 2

    Ce cours du semestre 4 est la suite du cours « UML et ITIL » du semestre 3, qui a présenté les systèmes d’information, les cadres d’architecture d’entreprise, le langage UML et le référentiel ITIL 4. Il déroule maintenant les étapes centrales de la démarche de modélisation d’un SI : la modélisation opérationnelle (environnement du système, besoins, contextes opérationnels, usages et scénarios d’usage) puis la modélisation fonctionnelle (fonctionnalités, fonctionnements et modes de fonctionnement). Chaque vue est représentée avec les diagrammes UML adaptés — cas d’utilisation, séquence, activités, états-transitions — et reliée aux pratiques ITIL qui assureront l’exploitation du futur service (niveaux de service, incidents, continuité, sécurité). Un fil rouge nigérien accompagne le cours : le SI de scolarité et de paiement des frais d’une école d’ingénieurs à deux campus (Niamey et Maradi).

    Objectifs d’apprentissage

    • Décrire l’environnement d’un SI et recueillir, formuler et prioriser des exigences fonctionnelles, non fonctionnelles et de sécurité.
    • Identifier les contextes opérationnels et les usages d’un SI, et les modéliser par des cas d’utilisation et des scénarios.
    • Rédiger une description textuelle de cas d’utilisation et un diagramme de séquence système, y compris des cas d’abus pour les besoins de sécurité.
    • Décomposer les fonctionnalités d’un SI et modéliser les processus avec des diagrammes d’activités.
    • Modéliser les fonctionnements et modes de fonctionnement (nominal, dégradé, maintenance, secours) avec des diagrammes d’états-transitions et les relier à la continuité de service.

    Prérequis

    Cours UML et ITIL du semestre 3 (UIT2333) : notions de SI, vues d’architecture, éléments communs d’UML, bases d’ITIL 4.

    Plan du cours

    1. Leçon 1 — Modélisation opérationnelle : environnement du SI et modélisation des besoins
    2. Leçon 2 — Usages du SI : cas d’utilisation et scénarios d’usage
    3. Leçon 3 — Modélisation fonctionnelle : fonctionnalités et diagrammes d’activités
    4. Leçon 4 — Fonctionnements et modes de fonctionnement : états-transitions et continuité de service

    Modalités d’évaluation

    Volume horaire : 13 h de CM, 7 h de TD, 0 h de TP, 20 h de TPE ; 2 crédits. Contrôle continu (40 % : dossier de modélisation opérationnelle et fonctionnelle réalisé en binôme, avec soutenance courte) et examen terminal écrit de 2 heures (60 %).

    Bibliographie

    • P. Roques, UML 2 par la pratique : études de cas et exercices corrigés, Eyrolles.
    • J. Gabay, D. Gabay, UML 2 Analyse et conception, Dunod, 2008.
    • A. Cockburn, Writing Effective Use Cases, Addison-Wesley, 2000.
    • Object Management Group, Unified Modeling Language Specification, version 2.5.1 (www.omg.org).
    • AXELOS, ITIL Foundation, ITIL 4 Edition, TSO, 2019.
  • Bases de données MySQL / Oracle

    Ce cours constitue la seconde partie de l’enseignement de bases de données de la deuxième année (suite du cours du semestre 3 consacré à l’intégrité et aux transactions). Il traite de l’optimisation, de la performance et de la distribution des bases relationnelles sous MySQL et Oracle : évaluation des requêtes, structures de stockage, optimisation physique et logique, développement JDBC, architectures parallèles, bases réparties et fédérées, réplication, puis introduit les systèmes NoSQL avec des travaux pratiques sous MongoDB.

    Objectifs d’apprentissage

    • Analyser et restructurer une requête, estimer les volumes manipulés.
    • Choisir les structures de stockage, index et partitions adaptés, et justifier une dénormalisation.
    • Développer une application JDBC sûre et transactionnelle.
    • Décrire les architectures parallèles, réparties et fédérées et les modes de réplication.
    • Expliquer les fondements du NoSQL et manipuler MongoDB de façon sécurisée.

    Prérequis

    Cours de base en bases de données : modèle relationnel, SQL, notions de transactions (semestre 3), programmation Java.

    Plan du cours

    1. Leçon 1 — Évaluation des requêtes : arbres algébriques et estimation des volumes
    2. Leçon 2 — Structures de stockage, optimisation physique et dénormalisation
    3. Leçon 3 — JDBC, architectures parallèles, bases réparties et réplication
    4. Leçon 4 — Introduction au NoSQL et travaux pratiques MongoDB

    Modalités d’évaluation

    Volume horaire : 0 h de CM, 10 h de TD, 10 h de TP (JDBC, MongoDB) et 20 h de TPE ; 2 crédits. Évaluation : contrôle continu (comptes rendus de TP, exercices de TD, quiz) et examen terminal.

    Bibliographie

    • G. Gardarin, Bases de données objet et relationnel, Eyrolles, 1999.
    • R. Elmasri, S. Navathe, Fundamentals of Database Systems, Pearson.
    • H. Garcia-Molina, J. Ullman, J. Widom, Database Systems: The Complete Book, Pearson.
    • M. T. Özsu, P. Valduriez, Principles of Distributed Database Systems, Springer.
    • Documentation officielle MySQL 8 (dev.mysql.com), Oracle Database et MongoDB (mongodb.com/docs).
  • Algorithmique et programmation 4

    Ce cours d’Algorithmique et programmation (L2, semestre 4) fait suite au cours de programmation C du semestre 3 et approfondit, en langage C, les structures de données introduites en L1 : listes, piles, files et arbres. Là où le cours de L1 présentait les principes en pseudo-code, celui-ci vise des implémentations complètes, modulaires et sûres : tableau dynamique à redimensionnement (realloc), listes doublement chaînées et circulaires avec sentinelle, piles et files génériques, file de priorité par tas binaire, arbres n-aires en représentation premier fils – frère droit, arbres binaires de recherche avec suppression, et arbres équilibrés AVL. Chaque structure est analysée en complexité et testée avec les outils du développeur sécurisé (options d’avertissement, AddressSanitizer, valgrind). Ces structures sont au cœur des outils de sécurité : tri des alertes d’un SOC par criticité, parcours d’arborescences lors d’un contrôle d’intégrité de fichiers, index d’adresses IP d’un pare-feu, tables de sessions d’un IDS.

    Objectifs d’apprentissage

    • Implanter un tableau dynamique et analyser le coût amorti de son redimensionnement.
    • Programmer des listes doublement chaînées et circulaires, avec gestion rigoureuse de la mémoire.
    • Réaliser des piles et des files modulaires (fichiers .h/.c) et une file de priorité par tas binaire.
    • Représenter un arbre n-aire en C et programmer ses parcours récursifs et itératifs.
    • Programmer un ABR complet (recherche, insertion, suppression) et l’équilibrer par rotations AVL.

    Prérequis

    Algorithmique et programmation S1-S2 (structures de données en pseudo-code) et S3 (langage C : fonctions, tableaux, struct, pointeurs).

    Plan du cours

    1. Leçon 1 — Listes séquentielles dynamiques et listes chaînées avancées en C
    2. Leçon 2 — Piles, files et files de priorité en C
    3. Leçon 3 — Arbres généraux n-aires en C : représentation et parcours
    4. Leçon 4 — Arbres binaires de recherche et arbres équilibrés AVL en C

    Modalités d’évaluation

    Volume horaire : 10 h de CM, 10 h de TD, 10 h de TP et 30 h de TPE ; 3 crédits. Évaluation : contrôle continu (TP guidés rendus avec code source et rapport valgrind, quiz en ligne) pour 40 % et examen terminal (écrit : traces d’exécution, écriture de fonctions C sur les structures) pour 60 %.

    Bibliographie

    • T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Algorithmique, Dunod.
    • R. Sedgewick, Algorithms in C, parts 1-4, Addison-Wesley.
    • D. E. Knuth, The Art of Computer Programming, vol. 1 et 3, Addison-Wesley.
    • B. W. Kernighan, D. M. Ritchie, Le langage C : norme ANSI, Dunod.
    • R. C. Seacord, Secure Coding in C and C++, Addison-Wesley.