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

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

Filière : Licence Professionnelle en Cyber et Cybercriminalité (CYB)

  • Anglais technique 3

    Ce cours d’anglais technique de deuxième année (semestre 3) approfondit la terminologie de l’environnement informatique vue en première année. Il vise à rendre l’étudiant capable de tenir une conversation technique avec un support anglophone et de communiquer avec précision sur le matériel et les logiciels : décrire les composants d’un ordinateur et leurs fonctions, expliquer les caractéristiques d’un périphérique ou d’un moniteur, conseiller un utilisateur et l’avertir d’un risque, recommander un disque ou une stratégie de sauvegarde, décrire les fonctions d’un traitement de texte, d’un tableur ou d’une base de données.

    La grammaire est abordée au service de la communication technique : formation des mots par préfixes, acronymes et abréviations, formes utilisées pour informer, conseiller et avertir (impératif, modaux), questions directes et indirectes, comparatifs et recommandations. Les exemples s’appuient sur le parc informatique d’une école de Niamey, d’une banque ou d’une administration nigérienne.

    Objectifs d’apprentissage

    • Nommer et décrire en anglais les composants d’un ordinateur et leurs fonctionnalités.
    • Construire et comprendre des mots techniques grâce aux préfixes, synonymes, acronymes et abréviations.
    • Décrire les périphériques d’entrée/sortie, le clavier et les spécifications d’un moniteur.
    • Exprimer une information, un conseil ou un avertissement avec les formes grammaticales adaptées.
    • Poser des questions, décrire et recommander des solutions de stockage de masse et de sauvegarde.
    • Décrire les fonctions d’un traitement de texte, d’un tableur et d’une base de données.

    Prérequis

    Connaissances de base en anglais ; anglais technique de première année (vocabulaire informatique, voix passive, rédaction d’emails).

    Plan du cours

    1. Leçon 1 — Composants de l’ordinateur et formation des mots : préfixes, synonymes, acronymes
    2. Leçon 2 — Périphériques d’entrée/sortie, clavier et moniteurs : informer, conseiller, avertir
    3. Leçon 3 — Stockage de masse et sauvegardes : questions, descriptions et recommandations
    4. Leçon 4 — Les logiciels : traitement de texte, tableur et bases de données

    Modalités d’évaluation

    Volume horaire : 13 h de cours magistral (CM), 7 h de travaux dirigés (TD), 0 h de TP et 20 h de travail personnel de l’étudiant (TPE) ; 2 crédits. Évaluation : contrôle continu (exercices écrits, jeux de rôles et présentations orales en TD, participation) pour 40 % et examen terminal (compréhension écrite et orale, grammaire, rédaction d’un document professionnel) pour 60 %.

    Bibliographie

    • Santiago Remacha Esteras, Infotech: English for Computer Users, Cambridge University Press.
    • Eric H. Glendinning, John McEwan, Oxford English for Information Technology, Oxford University Press.
    • Santiago Remacha Esteras, Elena Marco Fabré, Professional English in Use: ICT, Cambridge University Press.
    • Michael McCarthy, Felicity O’Dell, English Vocabulary in Use, Cambridge University Press.
    • Raymond Murphy, English Grammar in Use, Cambridge University Press.
  • CCNA 3 : Commutation et routage intermédiaire

    Ce cours, troisième module du parcours Cisco CCNA, approfondit le routage et la commutation dans les réseaux d’entreprise. Il part de l’adressage classless (CIDR, VLSM symétrique et asymétrique) indispensable pour économiser les adresses et agréger les routes, puis étudie deux protocoles de routage dynamique intérieurs : RIPv2, protocole à vecteur de distance, et OSPF, protocole à état de liens de référence (découverte des voisins, bases de données topologiques, élection du DR/BDR, identifiant de routeur, calcul SPF, authentification, temporisateurs et commandes de vérification). Conformément aux objectifs, il couvre enfin la commutation intermédiaire : VLAN, liaisons trunk 802.1Q, VTP et STP. Les exemples portent sur le réseau d’une PME ou d’une école de Niamey reliée à un site de Maradi ; chaque configuration intègre les bonnes pratiques de sécurité (authentification des protocoles de routage, interfaces passives, durcissement des ports de commutateur). Les manipulations se font sur Cisco Packet Tracer ou sur le matériel du laboratoire.

    Objectifs d’apprentissage

    • Concevoir un plan d’adressage VLSM et agréger des routes par CIDR.
    • Configurer, authentifier et vérifier RIPv2.
    • Expliquer le fonctionnement d’OSPF mono-aire : voisinage, LSDB, DR/BDR, router-ID, SPF, coût.
    • Configurer et dépanner OSPF (commandes générales, authentification, timers, commandes show).
    • Configurer des VLAN, des trunks, VTP et STP, et sécuriser la couche 2.

    Prérequis

    CCNA 1 et 2 : modèle OSI/TCP-IP, adressage IPv4 et masques, configuration de base des routeurs et commutateurs Cisco (IOS), routage statique.

    Plan du cours

    1. Leçon 1 — Routage classless : CIDR et VLSM
    2. Leçon 2 — Le protocole RIPv2
    3. Leçon 3 — Le protocole OSPF : principes et fonctionnement mono-aire
    4. Leçon 4 — Configuration d’OSPF, VLAN, VTP et STP

    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 sur Packet Tracer ou matériel, quiz, 40 %) et examen terminal théorique et pratique (60 %).

    Bibliographie

    • Wendell Odom, CCNA 200-301 Official Cert Guide, volumes 1 et 2, Cisco Press.
    • Cisco Networking Academy, Switching, Routing, and Wireless Essentials et Enterprise Networking, Security, and Automation (netacad.com).
    • John T. Moy, OSPF: Anatomy of an Internet Routing Protocol, Addison-Wesley.
    • IETF, RFC 4632 (CIDR), RFC 2453 (RIP version 2), RFC 2328 (OSPF version 2).
    • IEEE 802.1Q (VLAN et protocoles d’arbre recouvrant).
  • Système d’exploitation : Linux LPI 201

    Ce cours prépare aux compétences de l’examen LPI 201, première partie de la certification LPIC-2 (administrateur Linux confirmé). Il s’adresse à des étudiants qui maîtrisent l’administration de base (LPIC-1) et vise l’exploitation de serveurs en environnement professionnel : mesurer l’utilisation des ressources et prévoir les besoins, comprendre, configurer et compiler le noyau, personnaliser et réparer le démarrage, intervenir sur les systèmes de fichiers et les périphériques. Pour un futur administrateur orienté sécurité, ces compétences conditionnent la disponibilité (troisième pilier de la sécurité, avec la confidentialité et l’intégrité) et le durcissement (paramètres du noyau, démarrage protégé, chiffrement de disque). La suite, LPI 202 (semestre 4), traitera du stockage avancé (RAID, LVM), du réseau avancé et de la maintenance. Le cours comporte 10 h de TP guidés sur machine virtuelle.

    Objectifs d’apprentissage

    • Mesurer l’utilisation du processeur, de la mémoire, des disques et du réseau et identifier un goulet d’étranglement.
    • Prévoir les besoins futurs à partir de séries de mesures (tendance, seuils).
    • Décrire les composants du noyau, compiler et installer un noyau, gérer modules et paramètres à chaud (sysctl, udev).
    • Personnaliser le démarrage (SysV init et systemd), récupérer un système qui ne démarre plus et connaître les chargeurs d’amorçage alternatifs.
    • Créer, configurer, vérifier et réparer les systèmes de fichiers (ext4, XFS, Btrfs), gérer le swap, le chiffrement LUKS et la surveillance SMART.

    Prérequis

    Administration de serveurs GNU/Linux (niveau LPIC-1 : cours LPI 101 et 102) ; anglais technique pour la lecture des documentations et le passage de l’examen. La certification LPIC-1 n’est pas exigée pour suivre le cours, mais elle l’est pour obtenir la LPIC-2.

    Plan du cours

    1. Leçon 1 — Planification des capacités : mesurer et prévoir
    2. Leçon 2 — Le noyau Linux : composants, compilation et gestion à chaud
    3. Leçon 3 — Démarrage du système, récupération et chargeurs alternatifs
    4. Leçon 4 — Systèmes de fichiers et périphériques : création, options et maintenance

    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 40 % (comptes rendus de TP et quiz) et examen terminal 60 % (épreuve pratique sur machine virtuelle et questions de type LPI 201).

    Bibliographie

    • Linux Professional Institute, Objectifs de l’examen 201 (lpi.org) et documentation LPIC-2.
    • Sébastien Rohaut, LINUX — Préparation à la certification LPIC-2, Éditions ENI.
    • Brendan Gregg, Systems Performance: Enterprise and the Cloud, Addison-Wesley.
    • Greg Kroah-Hartman, Linux Kernel in a Nutshell, O’Reilly.
    • Documentation officielle du noyau (kernel.org/doc) et ANSSI, Recommandations de configuration d’un système GNU/Linux.
  • Robotique

    Ce module entièrement pratique (20 h de TP) initie les étudiants de L2 à la robotique : ce qu’est un robot, sa place dans l’histoire des sciences et des techniques, ses composants (capteurs, actionneurs, unité de commande, alimentation) et sa programmation. Les étudiants découvrent d’abord le robot éducatif Thymio, qu’ils programment de façon visuelle puis textuelle, avant d’entrer « dans l’intimité » d’un robot (fonctionnement physique des capteurs et des moteurs, calculs de vitesse, de distance et d’autonomie) et de fabriquer leur propre robot à base de carte Arduino, jusqu’au projet de robot « musicouleur » qui transforme une distance en sons et en couleurs. Le cours s’inspire du parcours « S’initier à la robotique » (OpenClassrooms) et débouche, selon le calendrier, sur la participation à un concours de robotique. Pour des futurs spécialistes de cybersécurité, il montre aussi qu’un robot est un système embarqué connecté qu’il faut protéger (mises à jour, appairage, sûreté de fonctionnement).

    Objectifs d’apprentissage

    • Définir un robot, retracer les grandes étapes de son histoire et citer ses domaines d’application.
    • Identifier les principaux composants d’un robot et expliquer la boucle perception – décision – action.
    • Programmer le robot Thymio en mode visuel (VPL) et textuel (Aseba) à partir d’événements et d’actions.
    • Expliquer et calculer le fonctionnement des capteurs et actionneurs (ultrason, infrarouge, moteurs, PWM, codeurs).
    • Câbler et programmer un robot Arduino exécutant une tâche complexe, en respectant les règles de sécurité électrique.
    • Préparer une participation à un concours de robotique en équipe.

    Prérequis

    Algorithmique et programmation (S1-S2), notions d’électricité (loi d’Ohm, tension, courant) et de logique.

    Plan du cours

    1. Leçon 1 — Introduction à la robotique, matériel et découverte du Thymio
    2. Leçon 2 — Programmer son premier robot Thymio
    3. Leçon 3 — Dans l’intimité d’un robot : capteurs, actionneurs et commande
    4. Leçon 4 — Fabriquer son robot Arduino et programmer un robot musicouleur

    Modalités d’évaluation

    Volume horaire : 0 h de CM, 0 h de TD, 20 h de TP et 20 h de TPE ; 2 crédits. Évaluation : contrôle continu sur les TP (comptes rendus, grilles de contrôle, démonstration des robots, 50 %) et épreuve terminale pratique de réalisation d’un défi robotique en binôme avec soutenance courte (50 %).

    Bibliographie

    • OpenClassrooms, cours en ligne S’initier à la robotique (openclassrooms.com), référence de la description officielle.
    • Site officiel Thymio (thymio.org) : documentation de Thymio, de VPL et du langage Aseba.
    • Arduino, documentation officielle et référence du langage (docs.arduino.cc).
    • Michael Margolis, Arduino Cookbook, O’Reilly.
    • Bruno Siciliano et Oussama Khatib (dir.), Springer Handbook of Robotics, Springer.
  • Atelier génie logiciel – Langage Java 1

    Cet atelier de génie logiciel initie les étudiants de L2 Cybersécurité à la programmation en Java, langage orienté objet très utilisé dans les systèmes d’information des banques, des opérateurs télécoms et des administrations, dans les applications Android et dans de nombreux outils de sécurité. Au semestre 3, l’accent est mis sur les fondamentaux : environnement de développement, structure d’un programme, types et opérateurs, entrées/sorties, puis les structures de contrôle — branchements conditionnels et boucles. Chaque notion est illustrée par des programmes complets, compilés et testés, et par des cas tirés de la vie d’une école ou d’une entreprise de Niamey (frais de scolarité, notes, code PIN, politique de mots de passe). La suite du cours (AGL2435, semestre 4) abordera les tableaux, les chaînes, les méthodes et une étude de cas orientée objet.

    Objectifs d’apprentissage

    • Installer un JDK, compiler et exécuter un programme Java ; expliquer le rôle du bytecode et de la JVM.
    • Déclarer des variables de types primitifs et String, maîtriser les opérateurs, les conversions et leurs pièges (division entière, débordement).
    • Lire des données au clavier avec Scanner et afficher des résultats formatés.
    • Écrire des branchements conditionnels (if/else, switch, opérateur ternaire) corrects et lisibles.
    • Écrire des boucles (for, while, do-while) avec compteurs, accumulateurs et conditions d’arrêt sûres.
    • Adopter dès le départ des réflexes de programmation sûre : validation des saisies, limitation des essais, absence de secret en clair.

    Prérequis

    Algorithmique et programmation (S1 et S2) : variables, conditions, boucles en pseudo-code ; usage courant d’un ordinateur.

    Plan du cours

    1. Leçon 1 — Initiation à Java : environnement, compilation et premier programme
    2. Leçon 2 — Variables, types, opérateurs et entrées/sorties
    3. Leçon 3 — Structures de contrôle (1) : branchements conditionnels
    4. Leçon 4 — Structures de contrôle (2) : boucles et itérations

    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 (exercices de TD, programmes de TP rendus et testés, quiz, 40 %) et examen terminal sur papier et/ou sur machine (60 %).

    Bibliographie

    • Claude Delannoy, Programmer en Java, Eyrolles.
    • Kathy Sierra et Bert Bates, Head First Java, O’Reilly.
    • Joshua Bloch, Effective Java, Addison-Wesley.
    • Oracle, The Java Tutorials et documentation de l’API Java SE (docs.oracle.com).
    • SEI CERT, Oracle Coding Standard for Java (Carnegie Mellon University).
  • Application client-serveur et Web 1

    Ce cours du semestre 3 pose les fondations système indispensables au développement et à l’exploitation d’applications client-serveur et Web : un serveur Web, une base de données ou une API tournent presque toujours sur un système de type UNIX (Linux dans l’immense majorité des hébergeurs, des opérateurs télécoms et des datacenters de la sous-région). L’étudiant apprend à manipuler un système UNIX en ligne de commande, à comprendre et piloter les processus, les signaux et les services (démons), puis à automatiser les tâches d’administration par des scripts shell sûrs et lisibles. Le cours est orienté cybersécurité : droits minimaux, services réduits au strict nécessaire, journaux exploitables et scripts robustes. Il sera prolongé au semestre 4 (ACS2434) par l’étude des architectures client-serveur, du protocole HTTP et de la configuration des serveurs.

    Objectifs d’apprentissage

    • Décrire l’architecture d’un système UNIX (noyau, shell, système de fichiers, utilisateurs) et naviguer efficacement en ligne de commande.
    • Gérer les permissions et les comptes selon le principe du moindre privilège (chmod, chown, umask, sudo).
    • Observer et contrôler les processus : identification, états, priorités, envoi de signaux.
    • Administrer les services avec systemd : démarrage, arrêt, activation, consultation des journaux, réduction de la surface d’attaque.
    • Écrire des scripts Bash structurés (variables, conditions, boucles, fonctions, codes de retour) pour automatiser sauvegardes et analyses de journaux.

    Prérequis

    Algorithmique et programmation (S1-S2), notions d’architecture des ordinateurs et de systèmes d’exploitation. Disposer d’une machine virtuelle Linux (Debian ou Ubuntu Server) dans son propre laboratoire.

    Plan du cours

    1. Leçon 1 — Introduction au système UNIX : architecture, fichiers et droits
    2. Leçon 2 — Processus et signaux
    3. Leçon 3 — Services et démons : administration avec systemd
    4. Leçon 4 — Scripting shell Bash pour l’administration

    Modalités d’évaluation

    Volume horaire : 10 h de cours magistral (CM), 0 h de TD, 10 h de travaux pratiques (TP) et 20 h de travail personnel de l’étudiant (TPE) ; 2 crédits. Évaluation : contrôle continu (comptes rendus de TP, quiz en ligne, mini-projet de script, 40 %) et examen terminal écrit et/ou pratique sur machine (60 %).

    Bibliographie

    • Brian W. Kernighan et Rob Pike, The UNIX Programming Environment, Prentice Hall.
    • William E. Shotts, The Linux Command Line, No Starch Press.
    • Evi Nemeth, Garth Snyder, Trent R. Hein, Ben Whaley, Dan Mackin, UNIX and Linux System Administration Handbook, Addison-Wesley.
    • Christophe Blaess, Scripts shell Linux et Unix, Eyrolles.
    • ANSSI, Recommandations de configuration d’un système GNU/Linux (guide en ligne, ssi.gouv.fr).
  • UML et ITIL 1

    Ce cours présente les principales étapes d’une démarche de modélisation d’un système d’information (SI) d’entreprise et les bonnes pratiques de gestion des services informatiques. Il constitue la première partie (semestre 3) d’un enseignement qui se poursuit au semestre 4 (modélisation opérationnelle et fonctionnelle). On y étudie d’abord ce qu’est un SI et pourquoi on le modélise, puis les cadres d’architecture d’entreprise (Zachman, TOGAF, urbanisation) qui organisent les vues métier, fonctionnelle, applicative et technique. Le langage UML 2 est ensuite introduit comme langage commun de représentation de ces vues. Enfin, le référentiel ITIL 4 montre comment un SI, une fois construit, est exploité sous forme de services mesurés et améliorés en continu — un cadre indispensable pour un futur technicien en cybersécurité, qui interviendra dans la gestion des incidents, des changements et de la sécurité de l’information.

    Objectifs d’apprentissage

    • Définir un système d’information, ses composantes et ses éléments de contexte (acteurs, parties prenantes, périmètre, contraintes).
    • Expliquer le rôle d’un cadre d’architecture d’entreprise et positionner les vues métier, fonctionnelle, applicative et technique.
    • Situer les diagrammes d’UML 2 et réaliser des diagrammes simples de contexte, de paquetages, de classes et de déploiement.
    • Décrire le système de valeur des services d’ITIL 4, ses principes directeurs et ses principales pratiques.
    • Calculer et interpréter des indicateurs de service (disponibilité, MTBF, MTTR, priorité d’un incident).

    Prérequis

    Notions d’organisation des entreprises, bases de programmation et de bases de données (première année).

    Plan du cours

    1. Leçon 1 — Systèmes d’information et démarche de modélisation
    2. Leçon 2 — Cadres d’architecture d’entreprise
    3. Leçon 3 — UML 2 : langage de représentation des vues architecturales
    4. Leçon 4 — ITIL 4 : gérer le système d’information comme un ensemble de services

    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 % : études de cas en TD et un dossier de modélisation d’un SI nigérien réel ou fictif) 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.
    • G. Booch, J. Rumbaugh, I. Jacobson, The Unified Modeling Language User Guide, Addison-Wesley.
    • The Open Group, The TOGAF Standard (www.opengroup.org).
    • AXELOS, ITIL Foundation, ITIL 4 Edition, TSO, 2019.
  • Bases de données (SQL et Oracle)

    Ce cours approfondit les bases de données relationnelles au-delà du simple langage SQL. Il prolonge les cours d’analyse informatique des semestres 1 et 2 : après un rappel de la modélisation Entité-Association et de ses extensions (types et sous-types, identifiants relatifs, contraintes), il traite la spécification et le contrôle de l’intégrité sémantique dans Oracle (contraintes déclaratives, déclencheurs PL/SQL), la gestion des transactions (propriétés ACID, contrôle de concurrence, reprise après panne) puis l’exploitation performante des bases : structures de stockage, index, évaluation et optimisation des requêtes, dénormalisation, serveurs parallèles, bases réparties et fédérées, et introduction aux systèmes NoSQL. Pour un futur spécialiste de la cybersécurité, ces notions sont essentielles : l’intégrité et la disponibilité des données font partie de la triade de sécurité, et la traçabilité (journaux, audit) repose sur les mécanismes étudiés ici. Le cours est entièrement organisé en TD et en TP guidés sous Oracle, réalisés dans le laboratoire personnel de l’étudiant.

    Objectifs d’apprentissage

    • Modéliser un domaine avec le modèle Entité-Association étendu et le traduire en schéma relationnel.
    • Classer les contraintes d’intégrité et les implanter en SQL (PRIMARY KEY, FOREIGN KEY, CHECK, UNIQUE) ou par déclencheurs PL/SQL.
    • Expliquer les propriétés ACID, les anomalies de concurrence, la sérialisabilité, le verrouillage et les niveaux d’isolation d’Oracle.
    • Décrire les mécanismes de journalisation et de reprise après panne.
    • Estimer le coût d’accès aux données, lire un plan d’exécution et choisir index ou dénormalisation.
    • Situer les architectures parallèles, réparties et NoSQL et leurs compromis.

    Prérequis

    Modèle relationnel, normalisation (1FN à 3FN) et langage SQL de base (SELECT, jointures, agrégats, INSERT/UPDATE/DELETE) vus en première année.

    Plan du cours

    1. Leçon 1 — Rappels et modélisation conceptuelle avancée
    2. Leçon 2 — Intégrité sémantique : contraintes SQL et déclencheurs PL/SQL sous Oracle
    3. Leçon 3 — Gestion des transactions : concurrence et reprise après panne
    4. Leçon 4 — Stockage, optimisation des requêtes, bases réparties et NoSQL

    Modalités d’évaluation

    Volume horaire : 0 h de CM, 10 h de TD, 10 h de TP, 20 h de TPE ; 2 crédits. Contrôle continu (50 % : comptes rendus des TP guidés et interrogations de TD) et examen terminal (50 % : épreuve écrite de 2 heures comprenant modélisation, SQL/PL-SQL et analyse d’ordonnancements de transactions).

    Bibliographie

    • G. Gardarin, Bases de données, Eyrolles.
    • R. Elmasri, S. B. Navathe, Fundamentals of Database Systems, Pearson.
    • A. Silberschatz, H. F. Korth, S. Sudarshan, Database System Concepts, McGraw-Hill.
    • P. J. Sadalage, M. Fowler, NoSQL Distilled, Addison-Wesley, 2012.
    • Oracle Corporation, documentation officielle Oracle Database Concepts et PL/SQL Language Reference (docs.oracle.com).
  • Algorithmique et programmation 3

    Ce cours d’Algorithmique et programmation de 2e année (semestre 3) est consacré au langage C, langage des systèmes d’exploitation (noyau Linux), des pilotes, des équipements réseau et de nombreux outils de sécurité (OpenSSH, OpenSSL, Snort, Suricata). Le maîtriser est indispensable au spécialiste en cybersécurité : pour écrire des outils efficaces, pour lire et auditer du code, et pour comprendre l’origine des vulnérabilités de corruption mémoire afin de les prévenir. Le cours reprend les notions algorithmiques de L1 et les traduit rigoureusement en C : genèse et philosophie du langage, chaîne de compilation, structure d’un programme, types et opérateurs (y compris les opérateurs bit à bit utilisés pour les masques réseau et les permissions), instructions et structures de contrôle, tableaux et chaînes, fonctions et procédures, structures de données (struct, enum, typedef) et bibliothèque standard. Chaque leçon insiste sur les bonnes pratiques de programmation sûre (norme SEI CERT C) et se termine par des TP guidés sur la machine virtuelle de l’étudiant, jusqu’à un petit outil de dessin en mode texte.

    Objectifs d’apprentissage

    • Situer l’histoire et les normes du C, et décrire la chaîne préprocesseur – compilateur – assembleur – éditeur de liens.
    • Écrire des programmes C structurés, compilés sans avertissement avec gcc -Wall -Wextra.
    • Utiliser correctement les types et opérateurs, y compris conversions et opérateurs bit à bit.
    • Employer les structures de contrôle et manipuler tableaux et chaînes sans débordement.
    • Découper un programme en fonctions et en modules, et modéliser des données avec struct, enum et typedef.
    • Exploiter la bibliothèque standard et réaliser un petit outil de dessin.

    Prérequis

    Algorithmique et programmation S1 et S2 (pseudo-code, structures de contrôle, tableaux, sous-programmes, notions de pointeurs, listes et piles).

    Plan du cours

    1. Genèse du langage C, concepts de base et structure générale d’un programme
    2. Opérateurs sur les types de données simples et instructions simples
    3. Structures de contrôle et tableaux
    4. Procédures, fonctions et structures de données

    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 (comptes rendus de TP avec code source, quiz en ligne, mini-projet « outil de dessin ») pour 40 % et examen terminal (écrit : lecture et écriture de code C, traces d’exécution) pour 60 %.

    Bibliographie

    • B. W. Kernighan, D. M. Ritchie, Le langage C : norme ANSI, Dunod.
    • C. Delannoy, Programmer en langage C, Eyrolles.
    • K. N. King, C Programming: A Modern Approach, W. W. Norton.
    • R. C. Seacord, Secure Coding in C and C++, Addison-Wesley.
    • SEI CERT, SEI CERT C Coding Standard, Carnegie Mellon University (en ligne).
  • Recherche opérationnelle 1

    La recherche opérationnelle (RO) regroupe les méthodes mathématiques qui aident à prendre la meilleure décision possible sous contraintes : combien produire, comment mélanger des matières premières, comment répartir un budget ou des heures de travail. Pour un futur administrateur systèmes et réseaux orienté sécurité, ces méthodes servent aussi à dimensionner des infrastructures, à répartir un budget de sécurité ou à planifier des équipes de supervision (SOC). Ce premier cours (semestre 3) est consacré à la programmation linéaire : modélisation, résolution graphique, algorithme du simplexe, dualité et analyse de sensibilité, avec une initiation au logiciel LINDO. La suite (semestre 4) traitera la programmation en nombres entiers, les problèmes de réseaux et de flots.

    Objectifs d’apprentissage

    • Reconnaître les structures courantes de problèmes de décision (production, mélange, choix de médias, placements financiers).
    • Formuler un programme linéaire : variables de décision, fonction objectif, contraintes, conditions de non-négativité.
    • Résoudre graphiquement un programme linéaire à deux variables et identifier les cas particuliers (solution multiple, non bornée, impossible).
    • Appliquer l’algorithme du simplexe sous forme de tableaux et en interpréter chaque itération.
    • Écrire le dual d’un programme linéaire, interpréter les prix duaux (prix fantômes) et les intervalles de sensibilité, en connaître les limites.
    • Saisir un modèle dans LINDO et lire son rapport de résolution.

    Prérequis

    Mathématiques de première année : équations et inéquations linéaires, représentation graphique de droites, systèmes d’équations, notions de matrices. Pratique élémentaire d’un tableur.

    Plan du cours

    1. Leçon 1 — Modélisation et formulation de programmes linéaires
    2. Leçon 2 — Résolution graphique et cas particuliers
    3. Leçon 3 — L’algorithme du simplexe
    4. Leçon 4 — Dualité, analyse de sensibilité et initiation à LINDO

    Modalités d’évaluation

    Volume horaire : 13 h de cours magistral (CM), 7 h de travaux dirigés (TD), 0 h de travaux pratiques, 20 h de travail personnel de l’étudiant (TPE) ; 2 crédits. Évaluation : contrôle continu (40 % : interrogations écrites en TD, un devoir de modélisation à rendre) et examen terminal écrit de 2 heures (60 %) comportant une formulation de problème, une résolution par le simplexe et une question d’interprétation de sensibilité.

    Bibliographie

    • F. S. Hillier, G. J. Lieberman, Introduction to Operations Research, McGraw-Hill.
    • W. L. Winston, Operations Research: Applications and Algorithms, Duxbury Press.
    • H. A. Taha, Operations Research: An Introduction, Pearson Prentice Hall.
    • V. Chvátal, Linear Programming, W. H. Freeman, 1983.
    • D. de Werra, T. M. Liebling, J.-F. Hêche, Recherche opérationnelle pour ingénieurs, tome I, Presses polytechniques et universitaires romandes.