Université Sine Saloum El-Hadj Ibrahima Niass

Internet des Objets (IoT) & Arduino

Par le Dr B. DIOP | INFO - AGROTIC

L'intelligence au cœur des objets

Bienvenue dans l'ère de l'hyper-connectivité. Ce cours vous plonge au cœur de la révolution de l'Internet des Objets (IoT), où chaque objet du quotidien devient capable de percevoir son environnement, de traiter l'information et d'interagir avec le Cloud.

À travers la plateforme Arduino, vous apprendrez à combler le fossé entre le monde physique et le numérique. Nous explorerons l'électronique de base, la programmation embarquée en C++ et les protocoles de communication pour transformer vos idées en prototypes intelligents et autonomes.

Compétences Clés
  • Maîtriser l'écosystème Arduino
  • Interfacer Capteurs & Actionneurs
  • Programmer des cycles setup/loop
  • Connecter des objets au réseau
Électronique

Comprendre les signaux analogiques et numériques (PWM, ADC).

Hardware

Manipuler les microcontrôleurs et les broches d'entrée/sortie.

Développement

Écrire des algorithmes embarqués performants en C++ Arduino.

Connectivité

Envoyer et visualiser des données sur des plateformes distantes.

Approche Pratique : Ce module privilégie le prototypage réel. Chaque concept théorique sera immédiatement validé par un montage électronique et un sketch de code dans l'IDE Arduino.
Module • Calcul Haute Performance

Calcul Parallèle et Systèmes Distribués

Fondements théoriques, architectures matérielles et optimisation des performances.

Ce cours propose une immersion dans l'univers du calcul intensif. Il couvre l'évolution des architectures informatiques et les méthodes permettant de décomposer des problèmes complexes pour une exécution simultanée sur plusieurs unités de calcul.

Programme du Module
  • 01. Introduction au parallélisme
  • 02. Modèles d'ordinateurs (Taxonomie de Flynn)
  • 03. Architectures mémoire (Partagée vs Distribuée)
  • 04. Modèles de parallélisme
  • 05. Stratégies de résolution de problèmes
  • 06. Mécanismes de synchronisation
  • 07. Évaluation : Loi d'Amdahl
  • 08. Évaluation : Loi de Gustafson
Module • Calcul Haute Performance (HPC)

MPI : Programmation Parallèle Distribuée

Maîtrisez le standard de communication pour le calcul scientifique à grande échelle.

Présentation du Module

Le standard MPI (Message Passing Interface) est le pilier du calcul distribué. Ce cours vous apprendra à concevoir des algorithmes capables de s'exécuter sur des clusters de supercalculateurs. Contrairement au multithreading classique, MPI repose sur l'échange explicite de messages entre processus possédant chacun leur propre mémoire.

Supports de Cours

Retrouvez l'intégralité des slides théoriques sur les primitives MPI.

Voir les Slides
12 Travaux Pratiques

Accédez à la liste complète des 12 exercices progressifs de programmation parallèle.

Accéder aux TPs
Exercices Avancés

Dépôt GitHub contenant des projets complexes et des optimisations HPC.

GitHub Repository

Note aux étudiants : La maîtrise de ces 12 TPs est indispensable pour valider la compétence "Calcul Haute Performance".

INFO-AGROTIC • USSEIN • Systèmes Distribués • 2026

Module • Systèmes Distribués

Les Sockets TCP en Python

Maîtrisez les fondamentaux de la communication réseau et du modèle Client-Serveur.

🌐 C'est quoi un Socket ?

Un Socket est une interface logicielle agissant comme une "prise" de communication. Il permet à deux processus, situés sur une même machine ou sur des machines distantes, d'échanger des flux de données à travers le réseau.

Dans ce cours, nous utilisons le protocole TCP (Transmission Control Protocol), garantissant que les données arrivent entières, sans erreur et dans le bon ordre.

Le Duo Gagnant

Serveur
Attend (Listen)

Client
Contacte (Connect)

🚀 Cycle de vie d'une connexion TCP

1. socket()

Création du point de communication.

2. bind() / listen()

Lier à un port et attendre les clients.

3. accept()

Établir la connexion avec un client.

4. recv() / send()

Échange de données bidirectionnel.

Aperçu Python (Client minimal)
import socket

# IPv4 (AF_INET) + TCP (SOCK_STREAM)
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect(("127.0.0.1", 65432))
    s.sendall(b"Hello USSEIN")
    data = s.recv(1024)

print(f"Reçu : {data.decode()}")
Support de Cours

Accédez au PDF complet pour les détails sur les Selectors et le mode non-bloquant.

Télécharger le PDF

Objectif final : Développer un serveur multi-clients capable de gérer des centaines de connexions simultanées sans bloquer.

Université du Sine Saloum El Hadji Ibrahima Niass (USSEIN)

Conteneurisation avec Docker

Maîtrisez le déploiement d'applications légères, isolées et portables.

💡 À propos de ce cours

Bienvenue dans ce cours dédié à Docker, la technologie incontournable qui a révolutionné le développement et le déploiement de logiciels. Ce parcours débute par une Introduction à Docker (Docker Intro), où vous assimilerez les concepts fondamentaux tels que les images, les conteneurs et les registres, tout en comprenant la différence majeure avec la virtualisation classique. Vous apprendrez ensuite à automatiser et standardiser la création de vos propres environnements applicatifs en écrivant vos premiers Dockerfiles. Enfin, pour répondre aux besoins des architectures modernes, nous explorerons Docker Compose, l'outil essentiel qui vous permettra de définir, d'orchestrer et de lancer facilement des applications multi-conteneurs complexes de manière totalement déclarative.

Université du Sine Saloum El Hadji Ibrahima Niass (USSEIN)

Orchestration avec Kubernetes

Déploiement et gestion d'architectures Cloud-Native.

💡 À propos de ce cours

Bienvenue dans ce cours dédié à Kubernetes, la plateforme de référence pour l'orchestration de conteneurs. Ce parcours vous plongera au cœur de l'écosystème des conteneurs (Container Ecosystem) pour comprendre comment packager et distribuer vos applications. Vous apprendrez à structurer et maintenir vos charges de travail via les Pods et Deployments, garantissant ainsi résilience et scalabilité. Le cours démystifie également la connectivité réseau : vous maîtriserez l'exposition de vos applications vers l'extérieur avec les Services et Ingress, ainsi que la communication interne grâce au Service Discovery. Enfin, l'exploration approfondie des APIs Kubernetes vous fournira les clés pour automatiser, contrôler et étendre votre infrastructure de manière programmatique.

Université du Sine Saloum El Hadji Ibrahima Niass (USSEIN)

Algorithmique et Programmation II

Cours encadré par Dr B. DIOP.

💡 À propos de ce module

Bienvenue dans le module Algorithmique et Programmation II. Ce cours constitue une étape cruciale dans votre formation, marquant la transition entre la programmation de base et la maîtrise de concepts avancés. Nous explorerons en profondeur la puissance du langage C à travers la manipulation des pointeurs et de l'allocation dynamique de mémoire. Vous apprendrez à concevoir des solutions élégantes via la récursivité, à organiser efficacement l'information grâce aux listes chaînées et aux arbres, et à optimiser vos programmes en analysant la complexité des algorithmes. Ce module forge la rigueur logique indispensable pour bâtir des logiciels performants et des structures de données sophistiquées.