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

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

Unité d’enseignement : CYB · S5 · UE2 — Programmation systèmes

  • Programmation Java

    Java est l’un des langages les plus utilisés dans les entreprises, les banques et les administrations : applications de gestion, serveurs web, applications Android. Ce cours pose les bases solides de la programmation en Java : de l’algorithme au programme compilé et exécuté, des variables aux structures de contrôle, des fonctions aux objets, jusqu’à l’accès à une base de données et aux tests. Pour un futur professionnel de la cybersécurité, bien programmer est une compétence de défense : la plupart des vulnérabilités proviennent d’erreurs de programmation (entrées non validées, requêtes SQL construites par concaténation, erreurs non gérées). Chaque notion est donc accompagnée des bonnes pratiques de programmation sûre.

    Objectifs d’apprentissage

    • Structurer un programme à partir d’un algorithme écrit en pseudo-langage ;
    • Maîtriser le lexique et la syntaxe de Java : types, variables, opérateurs, structures de contrôle, tableaux ;
    • Compiler et exécuter un programme avec le JDK et un environnement de développement ;
    • Écrire des fonctions réutilisables et comprendre les principes de la programmation orientée objet ;
    • Accéder à une base de données avec JDBC et des requêtes paramétrées ;
    • Déboguer et tester un programme (débogueur, JUnit).

    Prérequis

    Algorithmique de base (S1-S2), notions de bases de données relationnelles et de SQL. Un ordinateur avec le JDK (version 17 ou 21) et un IDE (IntelliJ IDEA Community, Eclipse ou VS Code).

    Plan du cours

    1. Leçon 1 — Fondements de la programmation et premier programme Java
    2. Leçon 2 — Variables, opérateurs et structures de contrôle
    3. Leçon 3 — Procédures, fonctions et introduction à la programmation objet
    4. Leçon 4 — Accès aux bases de données, débogage et tests

    Modalités d’évaluation

    Volume horaire : 10 h de CM, 10 h de TD (algorithmes, traces d’exécution), 10 h de TP sur machine et 30 h de TPE ; 3 crédits. Évaluation : contrôle continu (40 % : TP rendus et quiz) et examen terminal (60 % : exercices de programmation sur papier et sur machine).

    Bibliographie

    • C. Delannoy, Programmer en Java, Eyrolles.
    • J. Bloch, Effective Java, 3e édition, Addison-Wesley, 2018.
    • K. Sierra et B. Bates, Head First Java, O’Reilly Media.
    • Oracle, The Java Tutorials et documentation de l’API Java SE (docs.oracle.com).
    • OWASP, Secure Coding Practices — Quick Reference Guide et SQL Injection Prevention Cheat Sheet.
  • Programmation Android

    Au Niger comme dans toute l’Afrique de l’Ouest, le téléphone mobile est le premier terminal d’accès au numérique : paiement mobile, services bancaires, scolarité, administration. Ce cours forme les étudiants à concevoir et réaliser des applications mobiles, principalement Android en Java, en les situant dans l’ensemble des solutions possibles : applications natives (Android, iOS), multiplateformes (Xamarin/.NET MAUI, Cordova/PhoneGap), applications web progressives (PWA) et web mobile. Dans l’esprit de l’option cybersécurité, chaque étape intègre les bonnes pratiques de sécurité mobile (permissions minimales, stockage chiffré, HTTPS, requêtes paramétrées, référentiel OWASP MASVS). Le cours couvre aussi les tests, la documentation et la migration d’applications existantes vers le mobile.

    Objectifs d’apprentissage

    • Analyser un cahier des charges et choisir une solution technique mobile adaptée (native, multiplateforme, PWA) ;
    • Concevoir l’architecture technique d’une application Android (composants, cycle de vie, MVVM) ;
    • Créer des interfaces et une navigation en Java sous Android Studio ;
    • Communiquer avec une base de données locale (SQLite/Room) et un serveur distant de façon sécurisée ;
    • Mettre en œuvre des tests unitaires, d’intégration et d’interface ;
    • Produire la documentation technique et fonctionnelle et préparer la maintenance ou la migration.

    Prérequis

    Programmation Java (bases et objets), notions de bases de données relationnelles et SQL, notions de HTTP et de JSON.

    Plan du cours

    1. Leçon 1 — Panorama du développement mobile et architecture d’une application
    2. Leçon 2 — Développer une application Android en Java : interfaces, activités et navigation
    3. Leçon 3 — Données, réseau et sécurité ; PWA, web mobile et tableaux de bord
    4. Leçon 4 — Tests, documentation, maintenance et migration vers le mobile

    Modalités d’évaluation

    Volume horaire : 10 h de CM, 10 h de TD, 10 h de TP (Android Studio, émulateur ou téléphone de l’étudiant) et 30 h de TPE ; 3 crédits. Évaluation : contrôle continu (40 % : TP notés et quiz) et examen terminal (60 %), dont un mini-projet d’application documentée et testée.

    Bibliographie

    • Google, documentation officielle Android Developers (developer.android.com) : guides, Jetpack, Room, tests.
    • B. Phillips, C. Stewart, K. Marsicano, Android Programming: The Big Nerd Ranch Guide, Big Nerd Ranch.
    • D. Griffiths et D. Griffiths, Head First Android Development, O’Reilly Media.
    • OWASP, Mobile Application Security Verification Standard (MASVS) et Mobile Application Security Testing Guide (MASTG).
    • Google, web.dev — Progressive Web Apps (documentation en ligne).