.. _docs: EIG2205 .. raw:: html .. role:: greenbox .. role:: whitebox .. role:: blackbox EPIGEP-E3-S1-UT1-E02-python-c ============================= .. toctree:: :hidden: syllabus .. toctree:: :hidden: :caption: Les bases de Python sources/python-01-intro sources/python-02-install sources/python-02-nombres sources/python-03-controle sources/python-04-fonctions sources/python-05-chaines sources/python-06-listes sources/python-07-tuples sources/python-08-files sources/python-09-sets sources/python-10-dict sources/python-11-exceptions sources/python-12-classes .. toctree:: :hidden: :caption: Git & GitHub sources/misc-01-github-environment sources/misc-02-git sources/misc-03-github-development .. toctree:: :hidden: :caption: Les langage C sources/c-01-getting-started sources/c-02-compilation sources/c-03-programme sources/c-04-operateurs-instructions sources/c-05-controle sources/c-06-pointers sources/c-07-fonctions sources/c-08-arrays sources/c-09-strings sources/c-10-structures sources/c-11-allocdyn sources/c-12-listes-chainees .. toctree:: :hidden: :caption: Text Based Adventure sources/tba-01-intro sources/tba-02-a-first-game sources/tba-03-your-map sources/tba-04-history sources/tba-05-items sources/tba-06-characters Renseignements pratiques ------------------------ - :ref:`syllabus` ; - `la page Blackboard `_ ; - `le planning `_ : - ``P1-S1`` - ``P2-S1`` - ``P3-S1`` - ``P4-S1`` - ``P5-S1`` - `Microsoft Teams `_. Découpage pédagogique 2025-2026 ------------------------------- .. image:: local/decoupage.png :width: 20 % :alt: EIG-2205 2025-2026 :align: center Méthodologie d'apprentissage ---------------------------- Pour chaque chapitre du cours : - lorsqu'elle est présente, visionner la vidéo d'introduction qui donne un aperçu général de la notion à acquérir ; - lire attentivement le cours, reproduire les exemples présentés et parcourir la documentation officielle correspondante pour une idée plus exhaustive des interactions possibles ; - faire tous les exercices d'application en utilisant les assistants de codage. La totalité du contenu est disponible en ligne. Rester attentif au séquencement pédagogique pour ne pas prendre de retard. Sollicitez l'assistance de l'enseignant lorsque : - une notion du cours n'est toujours pas claire, après avoir visionné la vidéo, lu le cours, manipulé avec l'interpréteur interactif et sollicité l'assistant de codage ; - vous butez sur un exercice après avoir essayé de le résoudre par vous même pendant au moins 10 mn. Si vous avez besoin d'assistance sur un exercice, que l'interlocuteur soit un humain ou un assistant de codageassurez vous de produire un `exemple minimal reproductible `_. Minimal pour se concentrer sur l'essentiel du problème, reproductible pour pouvoir reproduire le problème sur une machine différente. Souvent cette démarche est suffisante pour cerner le problème et y apporter une solution. .. note:: Il est tentant de ne pas faire l'effort de structuration nécessaire lorsqu'on utilise un assistant de codage, mais on transpose assez facilement les vers de Boileau : .. code-block:: text Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément. Si le contexte fourni ne cerne pas précisément le problème, l'assistant de codage peut ne pas être en mesure de fournir une solution pertinente, ou fournir une réponse pertinente que vous ne comprendrez pas. Les exercices ------------- Le cours ci dessous est accompagné d'exercices, pour lesquels les conventions suivantes sont utilisées : 🟩 Exercice obligatoire (environnement `GitHub `_) 🟢 Exercice obligatoire (environnement local, décrit dans la partie :ref:`python-02-install`) 🟠 Si le temps le permet (environnement local) .. note:: Dans un contexte de programmation assistée par un assistant de codage, tous les exercices sont obligatoires. Le cours Python --------------- Python est un langage de programmation de haut niveau, orienté objet, qui permet de développer rapidement des applications. Il est très utilisé dans le monde de la data science, de l'intelligence artificielle, du développement web et plus largement de nombreux domaines de l'ingéniérie. Il est assez facile à apprendre et à utiliser, mais comme tout langage de programmation, il nécessite un certain investissement pour être maîtrisé. :ref:`python-01-intro` (00:30) .............................. Introduction au langage Python : découverte de son historique, de sa philosophie et de ses domaines d'application. Premiers pas avec l'interpréteur Python. :ref:`python-02-install` (01:00) ................................ Installation et configuration de l'environnement Python : installation de Python, choix d'un éditeur de code, et configuration des outils de développement et de l'assistant de codage. :ref:`python-02-nombres` (00:30) ................................ Les types numériques en Python : entiers, nombres flottants, nombres complexes et les opérations arithmétiques fondamentales. :ref:`python-03-controle` (03:00) ................................. Structures de contrôle en Python : conditions (if, elif, else), boucles (for, while) et gestion du flux d'exécution des programmes. 🟢 `Nombres premiers `__ :ref:`python-04-fonctions` (03:00) .................................. Définition et utilisation des fonctions : paramètres, valeurs de retour, portée des variables et documentation des fonctions. 🟩 `Nombres premiers `_ - :greenbox:`Use this template` :greenbox:`Create a new repository` :whitebox:`04-primes` :greenbox:`Create repository` - :greenbox:`Code` :greenbox:`Codespaces` :greenbox:`Create codespace on main` Pour plus de détails, relire attentivement :ref:`misc-01-github-environment`. 🟢 `Suites de Syracuse `_ 🟢 `Algorithmique `_ 🟢 `Théorie des nombres `_ :ref:`python-05-chaines` (03:00) ................................ Manipulation des chaînes de caractères : création, formatage, méthodes de traitement et opérations sur les strings. 🟩 `Palindromes `_ - :greenbox:`Use this template` :greenbox:`Create a new repository` :whitebox:`05-palindromes` :greenbox:`Create repository` - :greenbox:`Code` :greenbox:`Codespaces` :greenbox:`Create codespace on main` Pour plus de détails, relire attentivement :ref:`misc-01-github-environment`. 🟢 `Sans les voyelles `_ 🟢 `Robustesse d'un mot de passe `_ 🟢 `Nombre cyclope `_ 🟢 `Nombre de Lychrel `_ 🟢 `Nombres magiques `_ :ref:`python-06-listes` (03:00) ............................... Les listes Python : création, indexation, modification, méthodes et compréhensions de listes pour gérer des collections d'éléments. 🟩 `Liste de Syracuse `_ - :greenbox:`Use this template` :greenbox:`Create a new repository` :whitebox:`06-syracuse` :greenbox:`Create repository` - :greenbox:`Code` :greenbox:`Codespaces` :greenbox:`Create codespace on main` Pour plus de détails, relire attentivement :ref:`misc-01-github-environment`. 🟢 `Contenu d'un répertoire `_ 🟢 `Recherche de langue `_ 🟢 `Liste des extensions `_ 🟢 `Nombre de Harshad `_ 🟢 `Nombre heureux `_ 🟢 `Aplatir une liste `_ :ref:`python-07-tuples` (03:00) ................................ Les tuples : structures de données immutables, création, indexation et différences avec les listes pour organiser des données ordonnées. 🟩 `ASCII Art - Encodage `_ - :greenbox:`Use this template` :greenbox:`Create a new repository` :whitebox:`07-asciiart` :greenbox:`Create repository` - :greenbox:`Code` :greenbox:`Codespaces` :greenbox:`Create codespace on main` Pour plus de détails, relire attentivement :ref:`misc-01-github-environment`. 🟢 `ASCII Art - Décodage `_ :ref:`python-08-files` (03:00) .............................. Gestion des fichiers : lecture, écriture, modes d'ouverture et traitement des données textuelles stockées dans des fichiers. 🟩 `Lecture de données `_ - :greenbox:`Use this template` :greenbox:`Create a new repository` :whitebox:`08-lecture-donnees` :greenbox:`Create repository` - :greenbox:`Code` :greenbox:`Codespaces` :greenbox:`Create codespace on main` Pour plus de détails, relire attentivement :ref:`misc-01-github-environment`. 🟢 `Lecture d'un fichier texte structuré `_ 🟢 `Lecture d'un fichier binaire `_ :ref:`python-09-sets` (02:00) ............................. Les ensembles (sets) : création, opérations mathématiques sur les ensembles, élimination des doublons et cas d'usage pratiques. 🟢 `Les mots de la langue française `_ 🟢 `Propriété des set `_ :ref:`python-10-dict` (04:00) ............................. Les dictionnaires Python : association clé-valeur, méthodes et utilisations pratiques 🟢 `Les données météo `_ 🟢 `Les stations d'observation météo `_ :ref:`python-11-exceptions` (01:00) ................................... Gestion des erreurs avec les exceptions : try, except, finally pour un code robuste 🟢 `Conversion de type `_ :ref:`python-12-classes` (03:00) ................................ Programmation orientée objet : définition de classes, attributs et méthodes 🟢 `Le point cartésien 2D `_ 🟢 `Le vecteur cartésien 2D `_ Le cours C ---------- Le langage C est un langage de programmation bas niveau, qui permet de manipuler directement la mémoire. Il est très proche du langage machine, ce qui le rend très rapide. Son apprentissage est un peu plus difficile que celui de Python, mais il est très utile pour comprendre comment fonctionne un ordinateur. Il est aussi très utilisé dans le monde de l'embarqué, des systèmes d'exploitation et des applications nécessitant des performances élevées. Il est également nécessaire pour l'apprentissage de algorithmique puisqu'il permet de manipuler les pointeurs, les structures de données et la mémoire de manière plus directe que Python. :ref:`c-01-getting-started` (01:00) ................................... Premiers pas avec le langage C : historique, philosophie et environnement de développement :ref:`c-02-compilation` (00:30) ............................... Processus de compilation : du code source à l'exécutable via gcc :ref:`c-03-programme` (02:00) ............................. Structure d'un programme C : #include, fonction main et premiers pas :ref:`c-04-operateurs-instructions` (00:30) ........................................... :ref:`c-05-controle` (02:00) ............................ Structures de contrôle : if/else, boucles while et for en langage C :ref:`c-06-pointers` (02:00) ............................ Les pointeurs : adresses mémoire, déréférencement et manipulation directe :ref:`c-07-fonctions` (02:00) ............................. Définition et utilisation des fonctions : paramètres, valeurs de retour :ref:`c-08-arrays` (02:00) .......................... Les tableaux en C : déclaration, indexation et parcours :ref:`c-09-strings` (02:00) ........................... Manipulation des chaînes de caractères : tableau de char et fonctions :ref:`c-10-structures` (02:00) .............................. Les structures : regroupement de données hétérogènes et typedef :ref:`c-11-allocdyn` (02:00) ............................ Allocation dynamique de mémoire : malloc, free et gestion du tas :ref:`c-12-listes-chainees` (02:00) ................................... Structures de données avancées : listes chaînées et manipulation de nœuds Le projet Text Based Adventure ------------------------------ Le jeu d'aventure textuel est un jeu très ancien, qui a connu son heure de gloire dans les années 80. Il est aujourd'hui un peu tombé en désuétude, mais il reste un excellent exercice de programmation. Il est aussi très facile à mettre en oeuvre, car il ne nécessite pas de graphisme, ni de son, ni de réseau, ni de base de données, ni de moteur physique, ni de moteur de rendu, etc. Il ne nécessite qu'un terminal et un langage de programmation. Il est donc idéal pour un premier projet de programmation. :ref:`tba-01-intro` (03:00) ........................... Introduction aux jeux d'aventure textuels : conception et mécaniques de base :ref:`tba-02-a-first-game` (03:00) .................................. Création du premier jeu : structure de base et interaction utilisateur :ref:`tba-03-your-map` (03:00) .............................. Conception et implémentation de la carte : espaces et navigation :ref:`tba-04-history` (03:00) ............................. Système de narration : gestion de l'histoire et des événements :ref:`tba-05-items` (03:00) ........................... Système d'objets : inventaire, collecte et utilisation d'items :ref:`tba-06-characters` (03:00) ................................ Personnages non-joueurs : dialogues, interactions et quêtes Evaluations ----------- IGI-3008/P1 est évaluée en 2 parties : - un QCM Python, jusqu'au chapitre sur :ref:`python-09-sets` inclus : lundi 3 novembre 2025 (01:00) - un QCM C, jusqu'au chapitre sur :ref:`c-09-strings` inclus: lundi 3 novembre 2025 (01:00) IGI-3008/P2 est évaluée en 3 parties : - un QCM Python, du chapitre sur :ref:`python-10-dict` au chapitre sur :ref:`python-12-classes` inclus : mercredi 12 novembre 2025 (01:00) - un contrôle sur le projet Python : mercredi 21 janvier 2026 - le projet proprement dit : dimanche 25 janvier 2026 23:59 - 1 point de bonus si le projet est rendu au moins 24:00 avant - 1 point de malus par jour calendaire de retard Les détails des coefficients sont donnés dans le :ref:`syllabus`. Les notes P1 ------------ .. csv-table:: :file: local/notes-p1.csv :widths: 20, 20, 20, 20 :header-rows: 1 :delim: ; :align: center Les notes P2 ------------ .. csv-table:: :file: local/notes-p2.csv :widths: 20, 20, 20, 20, 20 :header-rows: 1 :delim: ; :align: center Intervenants ------------ - Daniel Courivaud, daniel.courivaud@esiee.fr, bureau 5454 ; - Cécile Pov, cecile.pov@esiee.fr ; - Daniel Ramos Vaz, daniel.ramosvaz@esiee.fr ; - Rostom Kachouri, rostom.kachouri@esiee.fr.