%% nav-debut : généré par gen_navigation.py, ne pas modifier à la main %%
> [!nav]
> ↩ [[Code et Développement/Culture Numérique/Generer du code/Generer du code|Accueil · Generer du code]]
%% nav-fin %%
# Rapport final — Consigne générale
## 📚Consigne générale
Dans ce travail, vous devez utiliser un LLM comme assistant de programmation.
Cependant, l’objectif principal n’est pas seulement d’obtenir un code Python fonctionnel.
L’objectif est d’apprendre à :
- formuler un problème clairement ;
- écrire des prompts précis ;
- améliorer progressivement ses prompts ;
- tester le code généré ;
- identifier les erreurs possibles ;
- analyser de manière critique les réponses d’un LLM.
Ce travail doit être rendu sous la forme d’un **rapport final**.
---
# Règles obligatoires concernant les prompts
Pour chaque exercice, vous devez conserver les prompts que vous avez réellement écrits.
## Attention
- Vous devez écrire vos prompts **manuellement**.
- Il est **interdit de copier-coller** des prompts déjà fournis par un camarade, par un site web, par une correction ou par un autre outil.
- Si vous avez fait plusieurs tentatives, vous devez les garder dans votre rapport.
- Les prompts incomplets, maladroits ou incorrects peuvent être conservés : ils montrent votre progression.
- Vous devez expliquer brièvement pourquoi vous avez modifié vos prompts entre deux tentatives.
- Vous devez vérifier le code généré avant de l’utiliser.
Le rapport ne sera pas évalué uniquement sur la qualité du code final, mais aussi sur la qualité de votre démarche.
---
# Structure attendue du rapport final
Votre rapport doit contenir :
1. une introduction générale ;
2. l’exercice 1 traité ;
3. l’exercice 2 traité ;
4. l’exercice 3 traité ;
5. vos prompts successifs pour chaque exercice ;
6. les codes Python finaux ;
7. les résultats obtenus ;
8. une analyse critique pour chaque exercice ;
9. une conclusion générale.
---
# Introduction générale du rapport
Dans l’introduction, vous devez présenter brièvement :
- l’objectif général du travail ;
- le rôle du LLM dans votre démarche ;
- les trois problèmes étudiés ;
- votre stratégie générale pour écrire et améliorer vos prompts.
Longueur indicative : 10 à 15 lignes.
---
# 🧪Exercice 1 — Étude des racines carrées
## Problème
On considère les nombres :
$
\sqrt{n}, \quad n = 1, 2, 3, 4, \ldots, 2026
$
Pour chaque valeur de $n$, on calcule la partie décimale de $\sqrt{n}$ .
Par exemple :
$
\sqrt{2} \approx 1.4142
$
La partie décimale est donc environ :
$
0.4142
$
Votre objectif est de trouver pour quelle valeur de $n$ , entre 1 et 2026, la partie décimale de $\sqrt{n}$ est la plus grande.
---
## Travail demandé
Vous devez utiliser un LLM pour vous aider à produire un script Python permettant de répondre à la question suivante :
> Pour quel entier $n$, entre 1 et 2026, la partie après la virgule de $\sqrt{n}$ est-elle maximale ?
Votre programme doit :
- parcourir tous les entiers de 1 à 2026 ;
- calculer $\sqrt{n}$ ;
- extraire la partie décimale ;
- trouver la valeur maximale de cette partie décimale ;
- afficher la valeur de $n$, la valeur de $\sqrt{n}$, et la partie décimale correspondante.
---
## Contraintes
- Votre code doit être écrit en Python.
- Vous pouvez utiliser la bibliothèque `math`.
- Votre code doit être lisible et commenté.
- Vous devez vérifier que le résultat obtenu est cohérent.
---
## Conseils pour vos prompts
Votre prompt peut préciser :
- le langage de programmation souhaité ;
- la plage de valeurs de $n$ ;
- la méthode de calcul de la partie décimale ;
- le format de sortie attendu ;
- la nécessité d’ajouter des commentaires ;
- la nécessité d’ajouter une vérification.
---
## ✅ Ce qu’il faut mettre dans le rapport pour l’exercice 1
Votre rapport doit contenir les éléments suivants.
### 1. Compréhension du problème
Vous devez reformuler le problème avec vos propres mots.
### 2. Prompts utilisés
Vous devez présenter au moins **deux prompts successifs**.
Pour chaque prompt, indiquez :
- le texte exact du prompt ;
- le résultat obtenu ;
- ce qui était satisfaisant ;
- ce qui devait être amélioré.
### 3. Code final
Vous devez présenter le code Python final obtenu après amélioration.
Le code doit être lisible, commenté et exécutable.
### 4. Résultat obtenu
Vous devez indiquer :
- la valeur de $n$ trouvée ;
- la valeur de $\sqrt{n}$ ;
- la partie décimale maximale ;
---
# 🧪Exercice 2 — Déboguer un code généré par IA
## Problème
Un LLM a généré le code suivant pour calculer la moyenne d’une liste de notes.
Cependant, ce code contient un bug.
```python
def calculer_moyenne(notes):
total = 0
for i in range(len(notes)):
total = notes[i]
moyenne = total / len(notes)
return moyenne
notes_etudiant = [12, 15, 14, 10, 18]
print("La moyenne est :", calculer_moyenne(notes_etudiant))
```
---
## Travail demandé
Vous devez écrire des prompts pour demander à un LLM de :
1. comprendre ce que le code est censé faire ;
2. identifier le bug ;
3. expliquer pourquoi le résultat est incorrect ;
4. proposer une correction ;
5. améliorer le code si nécessaire.
---
## Attention
Vous ne devez pas simplement demander :
> Corrige ce code.
Vous devez construire progressivement vos prompts.
Par exemple, vous pouvez d’abord demander au LLM d’expliquer le code ligne par ligne, puis de tester mentalement le code avec une liste simple, puis de chercher une erreur logique.
---
## Questions à traiter
Dans votre rapport, vous devez répondre aux questions suivantes :
1. Que fait le code actuellement ?
2. Quel est le bug ?
3. Pourquoi ce bug produit-il une mauvaise moyenne ?
4. Quel est le code corrigé ?
5. Quels tests peut-on faire pour vérifier que le code fonctionne ?
---
## ✅ Ce qu’il faut mettre dans le rapport pour l’exercice 2
Votre rapport doit contenir les éléments suivants.
### 1. Analyse du code fourni
Vous devez expliquer ce que le code est censé faire.
Vous devez aussi expliquer ce qu’il fait réellement.
### 2. Prompts utilisés pour le débogage
Vous devez présenter vos prompts successifs.
Il est conseillé d’avoir au moins **trois étapes** :
1. un prompt pour demander une explication du code ;
2. un prompt pour demander une analyse du résultat produit ;
3. un prompt pour demander l’identification et la correction du bug.
Pour chaque prompt, vous devez expliquer ce que le LLM a apporté.
### 3. Identification du bug
Vous devez expliquer clairement :
- où se trouve le bug ;
- pourquoi il se produit ;
- pourquoi le résultat obtenu est incorrect.
### 4. Code corrigé
Vous devez présenter une version corrigée du code.
La correction doit être justifiée.
### 5. Tests
Vous devez proposer au moins **deux tests**.
Pour chaque test, indiquez :
- les données utilisées ;
- le résultat attendu ;
- le résultat obtenu ;
- si le test est validé ou non.
---
# 🧪Exercice 3 — Problème du sac à dos : améliorer une mauvaise stratégie
## Problème
Vous devez choisir des bijoux à mettre dans un sac.
Chaque bijou a :
- une valeur ;
- un poids.
Le sac **ne peut pas dépasser** un poids maximal.
L’objectif est de choisir les bijoux qui donnent la valeur totale la plus élevée possible, sans dépasser le poids maximal.
---
## Données
Voici la liste des bijoux disponibles :
|Bijou|Valeur|Poids|
|---|--:|--:|
|Collier A|500|4|
|Bague B|400|3|
|Bracelet C|300|2|
|Montre D|450|5|
|Boucles E|250|1|
|Broche F|350|3|
|Pendentif G|200|2|
Poids maximal du sac :
$
8
$
---
## Mauvais plan proposé par un LLM
Un LLM propose la stratégie suivante :
> Pour maximiser la valeur, il suffit de prendre les bijoux qui ont la plus grande valeur individuelle.
> On prend donc Collier A, Montre D et Bague B, car ce sont les bijoux les plus chers.
---
## Problème avec cette stratégie
Cette stratégie est mauvaise, car elle ne vérifie pas correctement la contrainte de poids.
En effet :
- Collier A pèse 4 ;
- Montre D pèse 5 ;
- Bague B pèse 3.
Le poids total est :
$
4 + 5 + 3 = 12
$
Or le poids maximal autorisé est 8.
La solution proposée dépasse donc la capacité du sac.
---
## Travail demandé
Vous devez écrire des prompts pour demander à un LLM d’améliorer cette stratégie.
Votre objectif est d’obtenir une méthode plus fiable permettant de trouver une bonne combinaison de bijoux.
Le LLM peut proposer :
- une recherche exhaustive ;
- une approche par programmation dynamique ;
- une fonction Python qui teste toutes les combinaisons possibles ;
- une comparaison entre plusieurs stratégies.
---
## Questions à traiter
Dans votre rapport, vous devez répondre aux questions suivantes :
1. Pourquoi la stratégie initiale est-elle mauvaise ?
2. Quelle contrainte n’a pas été respectée ?
3. Comment demander au LLM de vérifier toutes les combinaisons possibles ?
4. Quel code Python permet de trouver la meilleure combinaison ?
5. Quelle est la meilleure solution trouvée ?
6. Pourquoi cette solution est-elle meilleure que celle proposée au départ ?
---
## Conseils pour vos prompts
Vos prompts doivent demander au LLM de :
- reformuler le problème ;
- identifier les contraintes ;
- critiquer la stratégie naïve ;
- proposer une méthode plus rigoureuse ;
- écrire un code Python ;
- tester le code ;
- expliquer le résultat.
---
## ✅ Ce qu’il faut mettre dans le rapport pour l’exercice 3
Votre rapport doit contenir les éléments suivants.
### 1. Reformulation du problème
Vous devez expliquer le problème avec vos propres mots.
Vous devez préciser :
- ce que représentent les bijoux ;
- ce que représentent les valeurs ;
- ce que représentent les poids ;
- quelle est la contrainte de poids maximal ;
- quel est l’objectif à optimiser.
### 2. Analyse critique du mauvais plan
Vous devez expliquer pourquoi la stratégie proposée par le LLM est mauvaise.
Vous devez montrer que le poids total dépasse la capacité maximale du sac.
### 3. Prompts utilisés pour améliorer la stratégie
Vous devez présenter au moins **deux prompts successifs**.
Ces prompts doivent montrer une progression, par exemple :
1. demander au LLM d’analyser la stratégie proposée ;
2. demander une méthode plus rigoureuse ;
3. demander un code Python qui teste toutes les combinaisons possibles ;
4. demander une vérification du résultat ;
5. demander une amélioration ou une explication de la méthode.
### 4. Méthode retenue
Vous devez expliquer la méthode finalement utilisée.
Par exemple :
- recherche exhaustive ;
- programmation dynamique ;
- comparaison de toutes les combinaisons ;
- autre méthode justifiée.
Vous devez expliquer pourquoi cette méthode est plus fiable que la stratégie initiale.
### 5. Code final
Vous devez présenter le code Python final.
Le code doit :
- représenter les bijoux avec leur valeur et leur poids ;
- respecter le poids maximal ;
- comparer les combinaisons possibles ;
- afficher la meilleure combinaison ;
- afficher la valeur totale ;
- afficher le poids total.
### 6. Résultat obtenu
Vous devez indiquer :
- la meilleure combinaison de bijoux ;
- la valeur totale ;
- le poids total ;
- pourquoi cette solution respecte la contrainte ;
- pourquoi elle est meilleure que la solution initialement proposée.
### 7. Conclusion de l’exercice
Vous devez expliquer ce que cet exercice montre sur les limites d’un LLM.
---
# Conclusion générale du rapport
À la fin du rapport, vous devez rédiger une conclusion générale.
Cette conclusion doit répondre aux questions suivantes :
- Qu’avez-vous appris sur la génération de code avec un LLM ?
- Pourquoi est-il important d’écrire des prompts précis ?
- Quelles erreurs ou limites avez-vous observées ?
- Dans quelles situations un LLM peut-il être utile ?
Longueur indicative : 10 à 15 lignes.
---
# Barème d’évaluation du rapport final
| Critère d’évaluation | Description | Points |
| --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | -----: |
| Compréhension des problèmes | Les trois problèmes sont correctement reformulés. Les objectifs, contraintes et résultats attendus sont clairement identifiés. | 2 |
| Qualité des prompts | Les prompts sont écrits manuellement, précis, adaptés au problème et suffisamment contextualisés. | 3 |
| Progression et amélioration des prompts | Le rapport montre une démarche itérative : plusieurs tentatives, amélioration des consignes, prise en compte des limites des réponses obtenues. | 3 |
| Qualité des codes Python | Les codes finaux sont fonctionnels, lisibles, commentés et répondent correctement aux problèmes posés. | 3 |
| Tests et validation | Les résultats sont vérifiés par des tests pertinents. Les étudiants ne se contentent pas de faire confiance au LLM. | 2 |
| Analyse critique des réponses du LLM | Le rapport identifie les erreurs, limites, hallucinations possibles ou raisonnements incomplets du LLM. | 2 |
| Qualité du rapport | Le rapport est structuré, clair, soigné, avec une rédaction compréhensible et des explications personnelles. | 1 |
| Conclusion générale | La conclusion montre une prise de recul sur l’usage des LLM pour générer, corriger et améliorer du code. | 2 |
| Respect des consignes | Les prompts sont conservés, le travail est personnel, les résultats sont justifiés et le rendu est complet. | 2 |
| Total | | 20 |
---
# Critères de validation
- **Type :** Rapport
- Vous devez rendre un rapport final contenant :
1. une introduction ;
2. les trois exercices traités ;
3. tous vos prompts successifs ;
4. les codes Python finaux ;
5. les résultats obtenus ;
6. les tests réalisés ;
7. une analyse critique pour chaque exercice ;
8. une conclusion générale.
- Le rapport peut être rendu au format PDF ou au format DOC/DOCX.
- lien de déposer votre rapport : [https://moodle-beauvais.unilasalle.fr/mod/assign/view.php?id=26840](https://moodle-beauvais.unilasalle.fr/mod/assign/view.php?id=26840)
- 🥉 **≥ 50 %** : validation **bronze**
- 🥈 **≥ 75 %** : validation **argent**
- 🏅 **100 %** : validation **or**
---
# Remarque importante
L’utilisation d’un LLM est autorisée et attendue dans ce travail.
Cependant, le LLM doit être utilisé comme un **assistant**, et non comme un substitut à votre réflexion.
La responsabilité finale du rapport, du code, des tests et des conclusions appartient aux étudiants.
---
# 🗓️ Historique
- Dernière MAJ: `03/06/2026`
- Rédigé par: [[Jizhen CAI]]
%% nav-debut : généré par gen_navigation.py, ne pas modifier à la main %%
> [!nav]
> ↩ [[Code et Développement/Culture Numérique/Generer du code/Generer du code|Accueil · Generer du code]]
%% nav-fin %%