Ambam, Cameroun
Programme du cycle 1
De l’idée à l’architecture, du JavaScript moderne à la sécurité, un parcours complet pour concevoir une application de messagerie ancrée dans les réalités Africaines.

1
Comprendre les fondements techniques, historiques et stratégiques des technologies du web et des plateformes de messagerie : évolution du web, usages africains, souveraineté des données, protocoles (TCP, HTTP, WebSocket) et bases de la sécurité.
2
Concevoir et développer une application de messagerie complète : JavaScript moderne, Node.js, protocoles temps réel, WebSocket, tests TDD/BDD, et sécurité appliquée.
Axe 1 — Idée & souveraineté numérique
- Usages numériques en Afrique.
- Analyse WhatsApp / Signal / Telegram.
- Souveraineté des données & infrastructures.
- Définir une proposition de valeur locale.
Axe 2 — Histoire du web & évolution
- HTML 1.0, CGI, premiers sites statiques.
- Web 2.0 : DOM, JS, AJAX, interactivité.
- Apps modernes : SPAs, PWAs, temps réel.
- Évolution vers les messageries web.
Axe 3 — JavaScript moderne
- Variables, fonctions, objets, modules.
- Event loop, Promises, async/await.
- Manipulation des messages.
- Structures côté client.
Axe 4 — Développement client/serveur & protocoles
- Modèle client–serveur appliqué à la messagerie.
- TCP/IP, framing, protocoles personnalisés.
- HTTP : limites et usages pratiques.
- WebSocket : théorie & préparation.
Axe 5 — Sécurité & chiffrement moderne
- Authentification & identités.
- Diffie–Hellman, X3DH.
- Double Ratchet (Signal/WhatsApp).
- Protection des métadonnées.
Axe 6 — Tests BDD & TDD
- Introduction au TDD.
- BDD : comportements & scénarios.
- Tests unitaires Node.js.
- Tests des protocoles (framing & parsing).
- Simulation multi-clients.
- Préparation des tests WebSocket.
Cours 1Usages numériques, plateformes de messagerie et souveraineté numérique en AfriqueD. Bromberg, J.-G. Tamba
Cours 2Histoire du web : de HTML 1.0 aux applications web modernes et aux plateformes de messagerieD. Bromberg
Cours 3Programmation JavaScript moderne et introduction à Node.js : fondamentaux (variables, fonctions, objets, tableaux, modules), modèle d’exécution, event loop, Promises, async/await.D. Bromberg
TP 1Écrire un premier client de messagerie en ligne de commande en utilisant TCP (sockets Node.js) : ouvrir une connexion, envoyer et recevoir des messages bruts, observer le flux sur le réseau.D. Bromberg
Cours 4Conception de protocoles applicatifs sur TCP : framing des messages, commandes, codes d’erreur, états d’une connexion, robustesse face aux erreurs réseau.D. Bromberg
TP 2Définir et implémenter un premier protocole de messagerie maison au-dessus de TCP : commandes (connexion, envoi, broadcast), format des messages, gestion de plusieurs clients en terminal.D. Bromberg
Cours 5HTTP, limitations pour le temps réel, et introduction à WebSocket : handshake, surcouche au-dessus de TCP, frames, usages dans les applications de messagerie.D. Bromberg
TP 3Mettre en place un serveur de chat WebSocket en Node.js et le tester avec des clients en ligne de commande (wscat ou scripts Node) : connexion, envoi, réception, diffusion de messages et gestion de plusieurs utilisateurs.D. Bromberg
Cours 6Sécurité, Diffie–Hellman, X3DH et Double Ratchet : principes des messageries chiffrées de bout en bout (Signal, WhatsApp), menaces, métadonnées et souveraineté des données.D. Bromberg
TP 4Simulation d’échange de clés (Diffie–Hellman) et visualisation, étape par étape, d’un protocole de chiffrement de bout en bout inspiré de Signal / WhatsApp (sans viser une implémentation industrielle).D. Bromberg
Cours 7Qualité logicielle pour les services de messagerie : tests automatisés, approche TDD/BDD, scénarios utilisateurs, non-régressions et robustesse des protocoles.D. Bromberg
TP 5Écrire des tests TDD/BDD pour le serveur de messagerie et le protocole : cas de base, erreurs, déconnexions, scénarios utilisateurs (connexion, envoi, réception, diffusion de messages).D. Bromberg
TP 6Ébauche d’un client web minimal (HTML/JS) se connectant au serveur WebSocket : affichage simple des messages, envoi d’un texte, sans chercher l’exhaustivité fonctionnelle (objectif : donner à voir la continuité entre le terminal et l’interface web).D. Bromberg