Programmation (E3)

Annonces

Cette zone sera utilisée pour communiquer des informations importantes concernant le cours. Il est impératif de la consulter avant chaque séance.

15/10/2026 18:44 : CONTAINER VERSION 1.4

Le container a été mis à jourpour inclure le package Plotly. Le contenu du fichier .devcontainer/devcontainer.json du repo doit être strictement le suivant :

{
"name": "ESIEE E3 Programmation",
"image": "dancou/esiee-e3-programmation:1.4",
"postCreateCommand": "echo container started"
}

Une fois le fichier modifié, dans un terminal de la machine hôte, à la racine du repo

$ git add .
$ git commit -m "container updated to version 1.4"
$ git push

12/10/2026 17:14 : des fichiers du master repo ont été mis à jour. Une opération de synchronisation est nécessaire.

Vérifier que upstream est bien configuré

$ git remote -v
origin    git@git.esiee.fr:<student name>/e3-programmation-labs-student.git (fetch)
origin    git@git.esiee.fr:<student name>/e3-programmation-labs-student.git (push)
upstream  git@git.esiee.fr:esiee-cs/e3-programmation-labs-student.git (fetch)
upstream  git@git.esiee.fr:esiee-cs/e3-programmation-labs-student.git (push)

Récupérer les modifications du master repo

$ git fetch upstream

Remplacer les fichiers du repo local par ceux du master repo

$ git restore --source=upstream/main --staged --worktree -- runlinter.py
$ git restore --source=upstream/main --staged --worktree -- lab_python_palindromes/test_.py

Publier les modifications sur votre repo distant

$ git commit -m "Sync#1 with teacher repository"
$ git push

Contenu des séances de TD

lundi 19 octobre 2026

Le programme :

Si le travail ci dessus n’est pas terminé en séance, il faut le terminer avant la prochaine classe virtuelle. En particulier, les labs devront être sur votre repo distant avant le jeudi 22 octobre 23:59.

lundi 12 octobre 2026

Le programme :

Si le travail ci dessus n’est pas terminé en séance, il faut le terminer avant la prochaine classe virtuelle. En particulier, les labs devront être sur votre repo distant avant le dimanche 18 octobre 23:59.

Renseignements pratiques

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 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

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.

Le code Python est encapsulé dans un cadre vert.
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é.

  • Le code Python est encapsulé dans un cadre

  • Le code C est encapsulé dans un cadre .

Les notes

Student ID

QCM 1

278528

18

290153

15

22000028

11

23000004

18

23000015

9

23000573

11,5

24000601

18

24000657

15,5

24000663

15

24000725

12

25003855

11,5

25004708

18

25004830

14

25005136

15

25005140

14

25005450

14

25005714

11,5

26000598

19

26000600

12

26000601

16,5

26000608

17,5

26000612

16,5

26000638

13,5

26000676

7

26000678

10,5

26000702

18,5

26000710

19

26000735

10

26000737

14,5

26000773

12

26000802

15,5

26000858

12,5

26005147

18,5

26005185

14,5

26005186

14,5

26005188

12

26005891

11,5

26005892

12,5

26005894

14,5

26005895

13

26005896

7,5

26005897

17,5

26005898

12

26005900

9,5

26005901

12

26005903

11,5

26005904

16

26005906

16,5

26005907

16

26005908

19,5

26005909

26005910

15

26005911

6

26005913

17

26005916

18,5

26005919

14

26005920

26005921

12,5

26005923

8

26005924

8

26005925

18,5

26005926

17,5

26005928

15

26005935

17

26005937

13

26005938

13,5

26005940

14,5

26005941

10

26005942

16,5

26005943

15,5

26005949

17,5

26005955

26005956

11

26005957

9

26005967

14

26005969

7,5

26005974

17

26005975

5,5

26005976

11

26005977

13

26005980

8,5

26005981

9,5

26005987

18

26005988

12

26005991

10

26005997

12,5

26006004

8,5

26006005

10

26006006

9,5

26006009

13,5

26006010

13,5

26006012

18

26006014

14,5

26006015

15,5

26006017

14,5

26006020

17,5

26006021

14

26006023

12

26006026

16,5

26006028

17

26006133

11,5

26006142

13,5

26006189

8

26006204

16

26006349

11

26006352

13,5

26006412

11

26006413

14

26006539

17,5

26006660

10

26006683

13,5

26006862

10

26007078

12,5