Plan de cours — Réseaux II (420-M54-JO)
| Session | Automne |
| Année | 2026 |
| Titre du cours | Réseaux II |
| Code du cours | 420-M54-JO |
| Pondération | 2-2-2 |
| Préalables | 420-M34-JO, 420-C46-JO |
| Date limite de désinscription | Selon le calendrier scolaire |
| Date limite d'abandon | Selon le calendrier scolaire |
| Discipline | 420 - Techniques de l'informatique |
| Département | Techniques de l'informatique |
| Programme | 420.B0 Techniques de l'informatique |
| Enseignant(e) | Bureau | Moyen de communication |
|---|---|---|
| Michel Di Croci | A-312 | Teams ou Discord |
Présentation du cours
Descriptif du cours
Les étudiants et étudiantes étudient la programmation réseau en utilisant un langage de programmation approprié : Go. Ce dernier facilite la création d'interfaces REST API, la communication multiprocessus et l'utilisation des protocoles réseau TCP, UDP et des websockets. Le service développé est ensuite empaqueté, configuré et déployé dans un environnement Kubernetes.
Place du cours
Ce cours est donné à la 5e session de la technique et a comme préalable 420-M34-JO (Réseaux I) et 420-C46-JO (Conception et développement orientés objet). Il n'est préalable à aucun autre cours.
Objectifs du cours
00SQ – Compétence complète 00SR – Compétence partielle
Objectif terminal du cours
À la fin du cours, l'étudiant ou l'étudiante aura une bonne compréhension de la programmation réseau : principalement avec la programmation multiprocessus et la programmation réseau en utilisant les connaissances antérieures (HTTP, TCP, UDP, IP).
Objectifs d'apprentissage du cours
- Comprendre les besoins du client
- Configurer l'IDE
- Utiliser Git pour la gestion de projets
- Apprendre le langage de programmation approprié pour la programmation client / serveur
- Créer des algorithmes
- Créer des API
- Utiliser des fils de programmation multiples pour répondre aux requêtes réseau simultanées
- Utiliser des tests unitaires et de performance
- Appliquer la sécurité à une communication réseau
- Déployer une application
Séquence d'apprentissage
Cette section démontre la progression des apprentissages et les grandes étapes d'appropriation de la ou des compétences.
Séquence d'apprentissage 1 — Langage Go
- Durée : 7 heures
- Résultats attendus : au terme de cette séquence, l'étudiant ou l'étudiante sera en mesure de développer des applications simples en utilisant le langage de programmation Go.
- Stratégies ou méthodes pédagogiques : ateliers donnés à chaque cours afin d'obtenir l'expérience de développement. Mini-Test 1.
Contenus
- Introduction au langage
- Introduction à l'IDE
- Déclaration / initialisation / assignation
- Types de base / array / slices / maps
- Structures de contrôle
- Fonctions
- Struct / interfaces / pointeurs
- Programmation multifils
- Channels
- Paquetage et déploiement
- Tests unitaires
- Tests de performance (benchmark)
Activités : ateliers, Mini-Test 1
Séquence d'apprentissage 2 — Concurrence
- Durée : 8 heures
- Résultats attendus : au terme de cette séquence, l'étudiant ou l'étudiante sera en mesure de développer une application qui exécute plusieurs activités concurrentes dans la même application.
- Stratégies ou méthodes pédagogiques : ateliers. Mini-Test 1.
Contenus
- Mutex
- Deadlock
- Livelock / Starvation
- Channel (avancé)
- Package Context
Activités : ateliers, Mini-Test 1
Séquence d'apprentissage 3 — Serveur REST
- Durée : 13 heures
- Résultats attendus : au terme de cette séquence, l'étudiant ou l'étudiante sera en mesure de développer des applications réseau, par l'entremise des protocoles de communication TCP ou UDP, ou même par l'entremise d'un socket de communication.
- Stratégies ou méthodes pédagogiques : ateliers donnés à chaque cours, TP1 et Examen 1. Mini-Test 2.
Contenus
- Package NET
- Composition / écoute
- Protocoles supportés
- Wireshark
- API et REST
Activités : ateliers, TP 1, Examen 1, Mini-Test 2
Séquence d'apprentissage 4 — Déploiement et configuration Kubernetes
- Durée : 20 heures
- Résultats attendus : au terme de cette séquence, l'étudiant ou l'étudiante sera en mesure d'empaqueter, de configurer, de publier et de faire évoluer un service réseau dans un environnement Kubernetes local (kind/k3d).
- Stratégies ou méthodes pédagogiques : ateliers donnés à chaque cours. TP 2, Mini-Test 3.
Contenus
- Docker (Dockerfile multi-étapes, image scratch/distroless)
- Architecture Kubernetes (Pods, Deployments, Nodes)
- Cluster local (kind / k3d)
- ConfigMaps et Secrets
- Services (ClusterIP, NodePort, LoadBalancer) et kube-proxy
- DNS interne (CoreDNS) et Ingress
- Sondes de disponibilité (Readiness) et d'activité (Liveness)
- Mises à jour progressives et montée en charge horizontale
Activités : ateliers, TP 2, Mini-Test 3
Séquence d'apprentissage 5 — Communication réseau et sécurité
- Durée : 12 heures
- Résultats attendus : au terme de cette séquence, l'étudiant ou l'étudiante sera en mesure d'implémenter de la sécurité informatique dans ses applications réseautiques.
- Stratégies ou méthodes pédagogiques : ateliers, TP 2, Examen 2, Mini-Test 4.
Contenus
- Communication TCP, UDP
- Formatage de message (TLV) et hachage
- Notions de chiffrement (symétrique / asymétrique)
- TLS (lien avec la terminaison TLS à l'Ingress)
- JWT
Activités : ateliers, TP 2, Examen 2, Mini-Test 4
Évaluation des apprentissages
Évaluations formatives
Des ateliers distribués à chaque période de cours seront considérés comme des évaluations formatives ; ils ne seront pas corrigés, mais des tests unitaires fournis par le professeur permettront de valider le code produit. Ces évaluations formatives faciliteront la réalisation du TP et des examens.
Évaluations sommatives
Il y aura 8 évaluations sommatives dans toute la session :
- 2 Travaux pratiques
- 4 Mini-Tests
- 2 Examens
Moodle, avec le module Safe Exam Browser, sera utilisé pour les évaluations (examens et minitests).
Épreuve finale de cours
Le TP #2 et l'examen #2 sont l'épreuve finale du cours.
Modalités des travaux d'équipe
Il n'y a pas de travaux d'équipe dans ce cours.
Modalités de consultation des évaluations
Les grilles de correction seront disponibles sur Moodle.
Calendrier des évaluations sommatives
| Type d'évaluation | Contenu | Contexte de réalisation | Pondération | Date prévue |
|---|---|---|---|---|
| TP 1 | Séquences d'apprentissage 1, 2, 3 | En classe et à la maison ; remise sur GitLab | 15 % | Semaine 6 (donné) / Semaine 8 (remise) |
| Mini-Test 1 | Séquences d'apprentissage 1, 2 | En classe | 5 % | Semaine 4 |
| Mini-Test 2 | Séquence d'apprentissage 3 | En classe | 5 % | Semaine 7 |
| Examen 1 | Séquences d'apprentissage 1, 2, 3 | En classe | 25 % | Semaine 7 |
| Mini-Test 3 | Séquence d'apprentissage 4 | En classe | 5 % | Semaine 11 |
| Mini-Test 4 | Séquence d'apprentissage 5 | En classe | 5 % | Semaine 15 |
| TP 2 | Séquences d'apprentissage 4, 5 | En classe et à la maison ; remise sur GitLab | 15 % | Semaine 13 |
| Examen 2 | Séquences d'apprentissage 1-5 | En classe | 25 % | Semaine 15 |
Calendrier des activités
| Semaine | Contenu et activités | Travaux à domicile | Évaluations |
|---|---|---|---|
| 1 | Introduction à Go, initialisation des variables, array/slices/maps, structures de contrôle, fonctions | Ateliers 1, 2 | |
| 2 | Struct/interfaces/pointeurs, ligne de commande, paquetage, tests unitaires, benchmarks | Ateliers 3, 4 | |
| 3 | Programmation multifils, channels | Ateliers 5, 6 | |
| 4 | Deadlock, mutex, livelock/starvation | Ateliers 7, 8 | Mini-Test 1 |
| 5 | Channel (avancé), package Context, condition de course | Ateliers 9, 10 | |
| 6 | IO, serveur web, connexion à une BD, API | TP 1 (donné) | |
| 7 | Mini-Test 2, Examen 1 | ||
| 8 | Docker (Dockerfile multi-étapes pour binaire Go), images minimales (scratch/distroless), introduction à Kubernetes (architecture, cluster local kind/k3d) | Ateliers 11, 12 | Remise TP1 |
| 9 | TCP, UDP (comparaison), configuration Kubernetes : ConfigMaps et Secrets | Ateliers 13, 14 | |
| 10 | Formatage de message (TLV) et hachage, publication Kubernetes : Services (ClusterIP, NodePort, LoadBalancer), kube-proxy | Ateliers 15, 16 | |
| 11 | DNS interne (CoreDNS) et Ingress, Websocket | Ateliers 17, 18 | Mini-Test 3 |
| 12 | Chiffrement symétrique/asymétrique, TLS, sondes de disponibilité (Readiness) et d'activité (Liveness) | Ateliers 19, 20 | |
| 13 | Mises à jour progressives, JWT | Ateliers 21, 22 | TP 2 (donné) |
| 14 | Montée en charge horizontale et répartition de charge | Ateliers 23, 24 | |
| 15 | — (aucune nouvelle matière — semaine de révision) | Mini-Test 4, Examen 2 | |
| Journées d'évaluations | Remise TP 2 |
Modalités et contexte du cours
Responsabilités des étudiants et des étudiantes
Les étudiantes et les étudiants sont les principaux acteurs de leur apprentissage; selon la Politique institutionnelle d'évaluation des apprentissages (PIEA, article 4.1), elles et ils ont la responsabilité de l'acquisition des connaissances et des habiletés requises pour le développement des compétences nécessaires à la réussite des cours et du programme auxquels elles et ils sont inscrits. Pour assumer leurs responsabilités, elles et ils doivent notamment :
- Consulter et conserver les plans de cours;
- Être présents et participer aux activités d'apprentissage ou d'évaluation des cours auxquels elles et ils sont inscrits;
- Se préparer aux activités d'apprentissage et d'évaluation;
- Ajuster, s'il y a lieu, leur démarche d'apprentissage selon les commentaires et résultats reçus, et recourir, au besoin, aux ressources d'aide supplémentaires;
- Prendre connaissance des modalités de l'épreuve synthèse de leur programme;
- Respecter les principes de l'intégrité académique;
- Respecter les procédures et les délais prescrits lorsqu'elles et ils se prévalent des droits de recours possibles.
Qualité du français
La maîtrise de la langue orale et écrite est importante et celle-ci doit faire l'objet d'une attention particulière dans toutes les disciplines (PIEA, article 7.11).
Dans les cours pour lesquels la langue française n'est pas un objectif d'apprentissage, une pénalité est appliquée pour les erreurs reliées à la qualité du français oral ou écrit de toute évaluation réalisée en langue française. Cette pénalité atteint 10 % de la note maximale de l'évaluation lorsque le nombre maximal de fautes est relevé (PIEA, article 7.11.3).
Retard dans la remise des travaux
Tous les travaux doivent être remis à la date et à l'heure, et selon les modalités indiquées par l'enseignant ou l'enseignante. Une pénalité de 10 % de la note maximale d'un travail par jour de retard est appliquée à tout travail remis après la date de remise indiquée, incluant les jours de fin de semaine et les congés indiqués au calendrier scolaire. La note « zéro » est attribuée à tout travail remis après que les travaux ont été corrigés et rendus à l'ensemble des étudiants et des étudiantes du groupe-cours (PIEA, article 7.12).
Absence
Lorsque l'étudiant ou l'étudiante prévoit devoir s'absenter lors d'une évaluation pour des raisons sérieuses de nature médicale, juridique ou humanitaire, il ou elle doit préalablement aviser son enseignant ou son enseignante et fournir le motif de son absence. Toute absence motivée à une évaluation et acceptée par l'enseignant ou l'enseignante donne droit à une évaluation différée. Dans tout autre cas, la note « zéro » est attribuée (PIEA, article 7.14.1).
Lorsqu'une absence à une évaluation arrive de façon imprévue et indépendante de sa volonté, l'étudiant ou l'étudiante doit contacter son enseignant ou son enseignante le plus tôt possible, justifier son absence à l'aide de motifs sérieux et prendre une entente (PIEA, article 7.14.2).
Plagiat, tricherie et fraude (intégrité académique)
L'intégrité académique est une valeur fondamentale au Cégep de Lanaudière à Joliette; c'est l'attitude qui consiste à faire preuve d'honnêteté intellectuelle dans la réalisation de ses évaluations. L'intégrité académique regroupe plusieurs concepts, dont l'erreur méthodologique, le plagiat, la tricherie et la fraude (PIEA, article 9).
Le plagiat, la tricherie et la fraude sont considérés comme des actes de tromperie et constituent des délits selon la PIEA. Ainsi, toute personne impliquée dans de tels délits est passible de sanctions. La sanction peut être une déclaration sans pénalité sur la note, ou une déclaration avec pénalité pouvant aller jusqu'à l'attribution de la note « zéro » pour l'évaluation (PIEA, article 9.6).
L'étudiant ou l'étudiante pourrait être amené à expliquer verbalement le résultat de son travail lors des projets. Dans le cas où il ou elle serait incapable de fournir des explications et de répondre aux questions de l'enseignant ou de l'enseignante, l'enseignant ou l'enseignante se réserve le droit d'appliquer une pénalité pouvant aller jusqu'à l'attribution de la note « zéro » pour l'évaluation.
La tricherie et la fraude ainsi que la récidive de plagiat sont des comportements qui contreviennent au Règlement relatif aux conditions de vie et au fonctionnement du Cégep régional de Lanaudière. Ainsi, en plus de recevoir les sanctions prescrites par la PIEA, l'étudiant ou l'étudiante s'expose à des sanctions supplémentaires conformément à ce règlement, selon la gravité de sa conduite (PIEA, article 9.9).
Utilisation partielle de l'intelligence artificielle générative (IAG)
Dans le cadre des évaluations sommatives suivantes :
- TP1
- TP2
L'utilisation d'outils d'intelligence artificielle générative (IAG) est permise, mais uniquement pour les usages suivants :
- Création d'interface au besoin
- Correction de bugs
Les étudiants doivent déclarer toute utilisation d'IAG dans leur travail (outil utilisé, tâches effectuées, parties du texte générées).
Pour toutes les autres évaluations non mentionnées ci-haut, l'utilisation de l'intelligence artificielle générative (IAG) n'est pas permise.
Toute utilisation non déclarée ou dépassant les limites précisées sera considérée comme une atteinte à l'intégrité académique. Conformément à la section 9 – Intégrité académique, toute forme de plagiat, tricherie ou fraude liée à l'utilisation d'outils numériques, incluant l'IAG, entraîne l'application des procédures et sanctions prévues (PIEA, art. 9.3 à 9.6).
Remise des travaux
- Les travaux seront à remettre sur GitLab ou GitHub. Au premier cours, chaque étudiant crée un repository et y donne accès au professeur afin de permettre l'évaluation pendant la session. Chaque étudiant est responsable de la gestion de son repository ; aucune autre forme de remise ne sera acceptée.
- Le non-respect des normes du site https://cours.techinfojoliette.ca pourrait occasionner une pénalité de 10 % sur l'évaluation.
Encadrement et disponibilité
Disponibilité
| Lundi | Mardi | Mercredi | Jeudi | Vendredi | |
|---|---|---|---|---|---|
| 8:15 | 420-1A3 | 420-M13 | 420-M54 | ||
| 9:10 | 420-1A3 | 420-M13 | 420-M54 | ||
| 10:05 | 420-1A3 | 420-M34 | Dispo | ||
| 11:00 | 420-1A3 | 420-M34 | Dispo | ||
| 11:55 | Dispo | Dispo | |||
| 12:50 | Dispo | Dispo | |||
| 13:45 | Dispo | Dispo | |||
| 14:40 | 420-M54 | 420-M34 | |||
| 15:35 | 420-M54 | ||||
| 16:30 | |||||
| 17:25 |
(Grille de disponibilité extraite du document source ; la mise en page du tableau d'origine se prête à l'ambiguïté — à valider auprès de l'horaire officiel en cas de doute.)
Communications
Privilégier les communications durant la classe, sinon pendant l'horaire du Cégep (lundi au vendredi de 8h à 16h30). Les communications devront être sur Teams ou sur Discord pour permettre une discussion. Les réponses seront données selon la disponibilité et le jugement du professeur.
Services et mesures d'aide
Des services et des mesures d'aide sont disponibles pour soutenir les étudiants et les étudiantes dans leur réussite. En voici quelques-uns :
- Le site Ma réussite à Joliette, qui comporte notamment des sections sur les services d'aide, les outils de réussite, incluant de l'information sur la gestion du temps, l'évaluation des apprentissages et l'intégrité académique;
- Le Service de l'organisation et du cheminement scolaires où sont situées les aides pédagogiques individuelles;
- Le Service des affaires étudiantes, qui regroupe notamment les services d'aide psychosociale et les services adaptés;
- La bibliothèque qui offre du soutien à la recherche documentaire et où sont situés les différents centres d'aide.
Ressources liées au cours
Plateformes et outils technologiques
Go sera le langage de programmation à utiliser pendant la session ; il peut s'installer aussi bien sur Windows, sur GNU/Linux que sur macOS.
Médiagraphie
- Woodbeck, Adam (2021). Network programming with Go: code secure and reliable network services from scratch. No Starch Press.
- Steele, Tom (2020). Black Hat Go: Go programming for hackers and pentesters. No Starch Press.
Les normes du département sont disponibles ici : https://cours.techinfojoliette.ca
Les notes de cours, ateliers, TP seront disponibles graduellement sur : https://cours.techinfojoliette.ca