Projet scolaire

Simulateur de système de communication numérique en C#

Un simulateur interactif de la chaîne complète de communication numérique : texte → binaire → modulation → canal → démodulation → restitution. Chaque étape peut être démontrée seule, ou l'ensemble du flux peut être exécuté d'un seul coup.

Aperçu du projet

Le projet prend pour ossature le projet de synthèse « modulation et démodulation du signal » du guide de cours, et y intègre la pratique de plusieurs étapes antérieures, dont le codage de source et les structures de données. L'ensemble repose sur la bibliothèque de base .NET, sans aucune dépendance tierce, et une suite de tests unitaires à graine aléatoire fixe reproduit des résultats identiques sur n'importe quelle machine.

À propos de ce projet

Objectif

La modulation et la démodulation sont souvent enseignées sous forme de schémas abstraits. Ce projet découpe le schéma en code exécutable et observable étape par étape, de sorte que l'entrée et la sortie de chaque maillon deviennent concrètes.

Organisation

Un menu console pilote le programme, chaque entrée numérotée démontrant un module isolément ; une simulation de bout en bout relie par ailleurs les étapes en chaîne complète. La partie codage de source implémente le codage de Huffman, et la partie structures de données écrit à la main une file par liste chaînée.

Outils utilisés

C# et .NET (cible .NET 10), en n'utilisant que la bibliothèque de classes de base, sans dépendance NuGet tierce ; les tests reposent sur xUnit avec une graine aléatoire fixée à 42.

Portée et limites

Destiné à l'enseignement et à la démonstration, l'accent porte sur la clarté des principes et l'exécution de chaque étape ; le projet ne modélise ni le bruit réaliste du canal ni l'émission-réception matérielle.

Étapes couvertes

Chaque maillon s'exécute seul, ce qui permet d'examiner son entrée et sa sortie.

Codage de source

Implémente le codage de Huffman : comptage des fréquences de caractères, construction d'une table de codes préfixes, calcul du taux de compression, et vérification que le décodage restaure le texte d'origine.

Structures de données personnalisées

Une file par liste chaînée écrite à la main, avec traçage de l'enfilement et du défilement en regard du compteur, et vérification de la gestion d'exception lors d'un défilement sur file vide.

Modulation du signal

Projette une séquence binaire sur une forme de signal transmissible, étape centrale de toute la chaîne.

Simulation du canal

Modélise le trajet du signal dans le canal, entre modulation et démodulation.

Démodulation et restitution

Récupère la séquence binaire à partir du signal reçu et la retransforme en texte, en la comparant à l'entrée d'origine.

Tests reproductibles

Des assertions de bout en bout sous graine aléatoire fixe, garantissant qu'une même entrée produit la même sortie sur n'importe quelle machine.

Pourquoi la bibliothèque de base seule

Le projet limite délibérément ses dépendances pour que chaque étape reste visible dans le code, au lieu de se cacher derrière un framework.

Aucune dépendance tierce

Aucun paquet NuGet n'est introduit en dehors de xUnit pour le projet de tests : cloner le dépôt et installer le SDK .NET suffit à le lancer.

Des principes visibles

Le codage, la modulation et la démodulation sont entièrement implémentés dans le projet et peuvent se lire en regard du support de cours.

Interaction en console

Les démonstrations se choisissent par numéro de menu, sans interface graphique, avec un comportement identique sous macOS, Windows et Linux.

Retour aux projets