Programmation (E3) ================== .. toctree:: :maxdepth: 1 :hidden: syllabus sources/prog-e3-01-intro sources/prog-e3-03-langages sources/prog-e3-05-getting-started sources/prog-e3-07-comparaison-langages sources/prog-e3-09-langage-c sources/prog-e3-11-pointeurs-references sources/prog-e3-13-gestion-erreurs sources/prog-e3-15-intelligence-artificielle sources/prog-e3-17-controle-flux sources/prog-e3-19-structures-donnees sources/prog-e3-21-structures-donnees-c sources/prog-e3-23-structures-donnees-python sources/prog-e3-25-fonctions sources/prog-e3-27-fichiers sources/prog-e3-29-exercises .. container:: important-info-box **ANNONCES** Cette zone sera utilisée pour communiquer des informations importantes concernant le cours. Il est impératif de la consulter régulièrement. Renseignements pratiques ------------------------ - :ref:`syllabus` - `la page Blackboard `_ ; - `Microsoft Teams `_ pour les classes virtuelles ; - `le planning `_, dans la barre de recherche : - ``E3-P1-S1`` pour le groupe 1 ; - ``E3-P2-S1`` pour le groupe 2 ; - ``E3-P3-S1`` pour le groupe 3 ; - ``E3-P4-S1`` pour le groupe 4 ; - ``E3-P5-S1`` pour le groupe 5 ; Découpage pédagogique --------------------- Le découpage pédagogique est donné à titre indicatif. Il peut être modifié en fonction de l'avancement du cours. D = distanciel +---------------------+-------+--------+----------+---------------------------------------------+ | jour | début | durée | type | sujet | +=====================+=======+========+==========+=============================================+ | lundi 14/09/2026 | 13:00 | 03:00 | CM | Introduction, Installation et premiers pas | +---------------------+-------+--------+----------+---------------------------------------------+ | vendredi 18/09/2026 | 09:00 | 03:00 | CM (D) | Langages, comparaison des langages, C | +---------------------+-------+--------+----------+---------------------------------------------+ | lundi 21/09/2026 | 13:00 | 03:00 | CM | Références, gestion des erreurs | +---------------------+-------+--------+----------+---------------------------------------------+ | vendredi 25/09/2026 | 09:00 | 03:00 | CM (D) | Intelligence artificielle, contrôle de flux | +---------------------+-------+--------+----------+---------------------------------------------+ | lundi 28/09/2026 | 13:00 | 03:00 | TD | Structures de données | +---------------------+-------+--------+----------+---------------------------------------------+ | vendredi 02/10/2026 | 09:00 | 03:00 | CM (D) | Structures de données | +---------------------+-------+--------+----------+---------------------------------------------+ | lundi 05/10/2026 | 13:00 | 03:00 | TD | Structures de données en C | +---------------------+-------+--------+----------+---------------------------------------------+ | vendredi 09/10/2026 | 09:00 | 03:00 | CM (D) | Structures de données en C | +---------------------+-------+--------+----------+---------------------------------------------+ | lundi 12/10/2026 | 13:00 | 03:00 | TD | Structures de données en Python | +---------------------+-------+--------+----------+---------------------------------------------+ | vendredi 16/10/2026 | 09:00 | 03:00 | CM (D) | Structures de données en Python | +---------------------+-------+--------+----------+---------------------------------------------+ | lundi 19/10/2026 | 13:00 | 03:00 | TD | Structures de données en Python | +---------------------+-------+--------+----------+---------------------------------------------+ | vendredi 23/10/2026 | 09:00 | 03:00 | CM (D) | Fonctions | +---------------------+-------+--------+----------+---------------------------------------------+ | lundi 02/11/2026 | 13:00 | 03:00 | TD | Fichiers | +---------------------+-------+--------+----------+---------------------------------------------+ Prérequis --------- Pour ce cours, il est nécessaire d'avoir suivi une introduction à l'informatique et à la programmation, et d'avoir une certaine familiarité avec les concepts de base de la programmation (variables, types de données, structures de contrôle, fonctions, etc.). Une expérience préalable avec Python ou C, les langages de programmation utilisés dans le cours, est un plus, mais pas obligatoire. Méthodologie d'apprentissage ---------------------------- Pour chaque chapitre du cours : - lire attentivement le contenu, visionner la vidéo si elle est présente ; - reproduire les exemples présentés ; - faire les quiz qui permettent de vérifier la compréhension des notions abordées (ils sont représentatifs de l'évaluation) ; - faire les exercices d'application ; - faire les labs éventuels. La totalité du contenu est disponible en ligne. Rester attentif au séquencement pédagogique pour ne pas prendre de retard. Acquisition de connaissances ---------------------------- L'acquisition de connaissances est un processus cognitif qui n'est pas instantané. Il mobilise plusieurs échelles de temps. Le temps court (une notion abordée dans une séance) permet à l'élève de mobiliser sa mémoire de travail pour comprendre (en profondeur) une proposition ou un énoncé. La mémoire de travail étant limitée, la charge cognitive est élevée, l'effort de concentration est important. Il est cependant fondamental de ne pas laisser de zones d'incertitude. Le temps moyen (d'une semaine sur l'autre) permet de construire des schémas plutôt que de retenir des détails isolés. Le cerveau commence à organiser les connaissances. Il permet de reconnaitre une situation parmi d'autres. Cette reconnaissance réduit énormément la charge cognitive. Le temps long (le semestre) permet d'automatiser les tâches, certaines connaissances sont acquises. Ces opérations ne mobilisent presque plus la mémoire de travail. Des problèmes plus complexes peuvent être abordés. L'apprentissage n'est pas linéaire, il y a un aller-retour permanent. La découverte d'une nouvelle notion nécessite de revenir temporairement dans le temps court. Tout redevient coûteux cognitivement. Avec la pratique, cette nouvelle compétence migre progressivement vers le temps long. Assistance ---------- Dans le temps court, l'utilisation d'une IA peut se révéler extrémement bénéfique lorsqu'elle est sollicitée pour comprendre (pas pour déléguer). Elle est toujours disponible et possède un volume de connaissances supérieur à celui d'un humain. Dans le cadre des notions abordées dans ce cours, le corpus de connaissance est fourni et bien stabilisé. L'hallucination (un phénomène où l'IA produit des informations fausses ou inexactes) est rare. Elle produit une information structurée et illustrée par des exemplesdans un temps très court. Plus de détails sur l'utilisation de l'IA sont disponibles dans le chapitre :ref:`prog-e3-intelligence-artificielle`. Le recours à l'humain est précieux lorsque la formulation de la question à poser à l'IA n'est pas claire. L'humain connait le contexte d'apprentissage, les difficultés systémiques. Vous êtes invités à déclencher l'assistance lorsqu'après avoir étudié une notion, vous éprouvez des difficultés à reformuler cette notion. Lors d'un exercice ou d'un lab, il est impératif d'essayer 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 codage, assurez vous de produire un `exemple minimal reproductible `_. Minimal pour se concentrer sur l'essentiel du problème, reproductible pour pouvoir porter le problème sur une machine éventuellementdifférente. Souvent cette démarche est suffisante pour cerner le problème et y apporter une solution. Conventions =========== Dans ce cours, les conventions suivantes sont utilisées. .. exercice:: Exercice Les exercices sont encapsulés dans un cadre orange. Ce sont des activités à réaliser par l'élève. Ils sont obligatoires et réputés compris et maitrisés en aval du déroulement du cours. A l'exception des exercices étiquetés ``IA``, les exercices doivent pouvoir être refaits sans l'aide de l'IA. Certains de ces exercices sont des labs qui doivent être faits sur la machine locale puis pushés sur le serveur. Le lab qui fait foi est celui qui est pushé sur le serveur, pas celui que vous avez sur votre machine locale. Les labs ne sont pas notés mais mais une faible complétude sera considéré comme une faible implication dans les apprentissages lors du jury. Dans ce cours deux langages sont utilisés : Python et C. Le code est présenté dans des cadres de couleurs différentes pour chaque langage. .. code-block:: python Le code Python est encapsulé dans un cadre vert. .. code-block:: c Le code C est encapsulé dans un cadre bleu. Les quiz permettent à l'élève de vérifier les connaissances acquises. Ils sont représentatifs de l'évaluation de l'unité. .. quiz:: xxx :title: Quiz - Le code Python est encapsulé dans un cadre :quiz:`{"type":"SC","values":"vert, bleu","answer":"vert"}` - Le code C est encapsulé dans un cadre :quiz:`{"type":"SC","values":"vert, bleu","answer":"bleu"}`.