diff --git a/src/cours/CIEL1/01-bases-python/evaluation/evaluation.md b/src/cours/CIEL1/01-bases-python/evaluation/evaluation.md
index bee19ad..b394c76 100644
--- a/src/cours/CIEL1/01-bases-python/evaluation/evaluation.md
+++ b/src/cours/CIEL1/01-bases-python/evaluation/evaluation.md
@@ -1,101 +1 @@
-# Evaluation - Bases de Python
-
-#### QCM (5pts)
-
-1. (1pt) Qu'affiche le code suivant ?
- ```python
- mon_age = 16
- if mon_age >= 18:
- print("Je suis majeur")
- else:
- print("Je suis mineur")
- ```
- - [ ] Rien
- - [ ] Je suis mineur
- - [ ] Je suis majeur
- - [ ] 16
-
-2. (1pt) Si j'écris `ma_variable = []`, `ma_variable` est :
- - [ ] Un dictionnaire vide
- - [ ] Un tuple vide
- - [ ] Une liste vide
- - [ ] Une fonction
-
-3. (1pt) Si j'écris la fonction suivante, quel nom serait le plus pertinent (à la place de `ma_fonction`) ?
- ```python
- def ma_fonction(valeur):
- for i in range(11):
- print(f"{i} x {valeur} = {i*valeur}")
- ```
- - [ ] `mult`
- - [ ] `afficher_table_de_multiplication`
- - [ ] `aff_tbl_mult`
- - [ ] `table`
- - [ ] `multiplication`
-
-4. (1pt) Quelle est la valeur de `prix_ttc` à la fin du programme suivant ?
- ```python
- tva = 20 / 100
- prix_ht = 100
- prix_ttc = prix_ht * (1 + tva)
- ```
- - [ ] 100
- - [ ] 2100
- - [ ] 120
- - [ ] 47
-
-5. (1pt) Que retourne le code suivant ?
- ```python
- ma_liste = []
- for lettre in 'abcdefghijklmnopqrstuvwxyz':
- ma_liste.append(lettre)
- return ma_liste
- ```
- - [ ] Une liste contenant uniquement la lettre a
- - [ ] Une liste contenant toutes les lettres de l'alphabet
- - [ ] Une liste vide
- - [ ] Une chaîne de caractères contenant toutes les lettres de l'alphabet
- - [ ] Une chaîne de caractères contenant uniquement la lettre a
-
-6. (1pt) Quel opérateur utiliser pour dire "différent de"
- - `not`
- - `==`
- - `<>`
- - `!=`
-
-#### Questions (8pts)
-
-1. (2 pts) Quel est le type des valeurs suivantes ? (types possibles : int, float, bool, str)
- - 2
- - 2.4
- - "Bonjour !"
- - True
- - "17"
-
-2. (1pt) Donner les deux types de boucles possibles en Python.
-
-3. (1pt) Quel type de boucle préfère-t-on si on a un nombre d'itérations connu d'avance ?
-
-4. (3pts) Lire le code ci-dessous et répondre aux questions :
- 1. Qu'est-ce que `calculer_age` ?
- 2. Où se trouvent les paramètres ? la valeur de retour ?
- 3. Que vaut `mon_age` ?
- ```python
- def calculer_age(annee_de_naissance):
- annee_en_cours = 2025
- age = annee_en_cours - annee_de_naissance
- return age
-
- mon_age = calculer_age(2000)
- ```
-
-5. (1pt) Lorsqu'on ouvre un fichier dans un programme, que ne faut-il jamais oublier de faire une fois que l'on a terminé de l'utiliser ?
-
-#### Exercices (7pts)
-
-1. (3pts) Écrire un programme qui demande le prénom de l'utilisateur et le salue : si l'utilisateur s'appelle Jean, le programme devra afficher `Bonjour, Jean !`
-
-2. (4pts) Écrire une **fonction** `maximum` qui retourne le plus grand nombre d'une liste de nombres.
- - Par exemple, `maximum([3, 7, 12, 1 , 6])` devra retourner la valeur `12`
- - Attention, "retourner" ne signifie pas "afficher"
- - Toute trace de recherche sera valorisée
\ No newline at end of file
+# Evaluation
diff --git a/src/cours/CIEL1/01-bases-python/evaluation/evaluation_sujet1.md b/src/cours/CIEL1/01-bases-python/evaluation/evaluation_sujet1.md
new file mode 100644
index 0000000..bee19ad
--- /dev/null
+++ b/src/cours/CIEL1/01-bases-python/evaluation/evaluation_sujet1.md
@@ -0,0 +1,101 @@
+# Evaluation - Bases de Python
+
+#### QCM (5pts)
+
+1. (1pt) Qu'affiche le code suivant ?
+ ```python
+ mon_age = 16
+ if mon_age >= 18:
+ print("Je suis majeur")
+ else:
+ print("Je suis mineur")
+ ```
+ - [ ] Rien
+ - [ ] Je suis mineur
+ - [ ] Je suis majeur
+ - [ ] 16
+
+2. (1pt) Si j'écris `ma_variable = []`, `ma_variable` est :
+ - [ ] Un dictionnaire vide
+ - [ ] Un tuple vide
+ - [ ] Une liste vide
+ - [ ] Une fonction
+
+3. (1pt) Si j'écris la fonction suivante, quel nom serait le plus pertinent (à la place de `ma_fonction`) ?
+ ```python
+ def ma_fonction(valeur):
+ for i in range(11):
+ print(f"{i} x {valeur} = {i*valeur}")
+ ```
+ - [ ] `mult`
+ - [ ] `afficher_table_de_multiplication`
+ - [ ] `aff_tbl_mult`
+ - [ ] `table`
+ - [ ] `multiplication`
+
+4. (1pt) Quelle est la valeur de `prix_ttc` à la fin du programme suivant ?
+ ```python
+ tva = 20 / 100
+ prix_ht = 100
+ prix_ttc = prix_ht * (1 + tva)
+ ```
+ - [ ] 100
+ - [ ] 2100
+ - [ ] 120
+ - [ ] 47
+
+5. (1pt) Que retourne le code suivant ?
+ ```python
+ ma_liste = []
+ for lettre in 'abcdefghijklmnopqrstuvwxyz':
+ ma_liste.append(lettre)
+ return ma_liste
+ ```
+ - [ ] Une liste contenant uniquement la lettre a
+ - [ ] Une liste contenant toutes les lettres de l'alphabet
+ - [ ] Une liste vide
+ - [ ] Une chaîne de caractères contenant toutes les lettres de l'alphabet
+ - [ ] Une chaîne de caractères contenant uniquement la lettre a
+
+6. (1pt) Quel opérateur utiliser pour dire "différent de"
+ - `not`
+ - `==`
+ - `<>`
+ - `!=`
+
+#### Questions (8pts)
+
+1. (2 pts) Quel est le type des valeurs suivantes ? (types possibles : int, float, bool, str)
+ - 2
+ - 2.4
+ - "Bonjour !"
+ - True
+ - "17"
+
+2. (1pt) Donner les deux types de boucles possibles en Python.
+
+3. (1pt) Quel type de boucle préfère-t-on si on a un nombre d'itérations connu d'avance ?
+
+4. (3pts) Lire le code ci-dessous et répondre aux questions :
+ 1. Qu'est-ce que `calculer_age` ?
+ 2. Où se trouvent les paramètres ? la valeur de retour ?
+ 3. Que vaut `mon_age` ?
+ ```python
+ def calculer_age(annee_de_naissance):
+ annee_en_cours = 2025
+ age = annee_en_cours - annee_de_naissance
+ return age
+
+ mon_age = calculer_age(2000)
+ ```
+
+5. (1pt) Lorsqu'on ouvre un fichier dans un programme, que ne faut-il jamais oublier de faire une fois que l'on a terminé de l'utiliser ?
+
+#### Exercices (7pts)
+
+1. (3pts) Écrire un programme qui demande le prénom de l'utilisateur et le salue : si l'utilisateur s'appelle Jean, le programme devra afficher `Bonjour, Jean !`
+
+2. (4pts) Écrire une **fonction** `maximum` qui retourne le plus grand nombre d'une liste de nombres.
+ - Par exemple, `maximum([3, 7, 12, 1 , 6])` devra retourner la valeur `12`
+ - Attention, "retourner" ne signifie pas "afficher"
+ - Toute trace de recherche sera valorisée
\ No newline at end of file
diff --git a/src/cours/CIEL1/01-bases-python/evaluation/evaluation_sujet2.md b/src/cours/CIEL1/01-bases-python/evaluation/evaluation_sujet2.md
new file mode 100644
index 0000000..e22b199
--- /dev/null
+++ b/src/cours/CIEL1/01-bases-python/evaluation/evaluation_sujet2.md
@@ -0,0 +1,105 @@
+---
+puppeteer:
+ format: A4
+---
+
+# Evaluation - Bases de Python
+
+## QCM (5 pts)
+
+1. (1pt) Que va afficher le code suivant ?
+```python
+note = 19
+if note > 10:
+ print("Admis")
+else:
+ print("Ajourné")
+```
+
+- [ ] Rien
+- [ ] Admis
+- [ ] Ajourné
+- [ ] 19
+
+2. (1pt) Si j'écris `data = {}`, `data` est :
+
+- [ ] Un ensemble vide
+- [ ] Un dictionnaire vide
+- [ ] Une liste vide
+- [ ] Une chaîne vide
+
+3. (1pt) Quel nom serait le plus pertinent pour la fonction ci-dessous ?
+```python
+def ma_fonction(n):
+ for i in range(1, 11):
+ print(f"{n} x {i} = {n*i}")
+```
+
+- [ ] `calcul`
+- [ ] `multiplication`
+- [ ] `afficher_table_de_multiplication`
+- [ ] `tableau`
+- [ ] `aff_tbl_mult`
+
+4. (1pt) Quelle est la valeur finale de `total` dans ce code ?
+```python
+total = 4
+for i in range(3):
+ total += 2
+```
+
+- [ ] 4
+- [ ] 6
+- [ ] 10
+- [ ] 8
+
+5. (1pt) Comment afficher le dernier élément d'une liste `ma_liste` ?
+
+- [ ] `print(ma_liste[-1])`
+- [ ] `print(ma_liste[^1])`
+- [ ] `print(ma_liste[^0])`
+- [ ] `print(ma_liste[len(ma_liste)])`
+
+6. (1pt) Pour tester l'égalité de deux valeurs en Python, on utilise :
+
+- [ ] `==`
+- [ ] `!=`
+- [ ] `=`
+- [ ] `===`
+
+
+## Questions (8 pts)
+
+1. (2 pts) Donnez le type Python des valeurs suivantes (`int`, `float`, `bool`, `str`) :
+ - `False`
+ - `7.5`
+ - `"Python"`
+ - `5`
+ - `"3"`
+2. (1pt) Quels sont les deux types de boucles possibles en Python ?
+3. (1 pt) Quelle boucle est utilisée de préférence pour parcourir les éléments d'une liste ?
+4. (3 pts) Analysez et expliquez le résultat du code :
+ 1. À quoi sert la fonction `somme_pairs` ?
+ 1. Que vaut `resultat` après exécution ?
+ 1. Où sont les paramètres de la fonction ? Où est la valeur de retour ? (entourez et annotez dans le code)
+```python
+def somme_pairs(liste):
+ somme = 0
+ for element in liste:
+ if element % 2 == 0:
+ somme += element
+ return somme
+
+resultat = somme_pairs([1, 2, 3, 4])
+```
+
+1. (1 pt) Quelle *méthode* faut-il utiliser pour ajouter un élément en fin de liste Python ?
+
+## Exercices (7 pts)
+
+1. (3 pts) Écrire un **programme** qui demande l’âge d’un utilisateur et affiche s’il est "majeur" ou "mineur" (majeur à partir de 18 ans).
+2. (4 pts) Écrire une **fonction** `moyenne` qui retourne la moyenne des valeurs d’une liste fournie en paramètre.
+ - Par **exemple**, `moyenne([10, 20, 30])` doit retourner `20`.
+ - La fonction ne doit rien afficher, seulement **retourner** le résultat.
+
+
diff --git a/src/cours/CIEL1/01-bases-python/evaluation/evaluation_sujet2_corrige.md b/src/cours/CIEL1/01-bases-python/evaluation/evaluation_sujet2_corrige.md
new file mode 100644
index 0000000..b921448
--- /dev/null
+++ b/src/cours/CIEL1/01-bases-python/evaluation/evaluation_sujet2_corrige.md
@@ -0,0 +1,48 @@
+# Corrigé
+
+## QCM
+
+1. **Admis** (car 19 > 10)
+2. **Un dictionnaire vide** (`{}` initialise un dict)
+3. **afficher_table_de_multiplication** (fonction adaptée à la signature)
+4. **10** (total = 4 + 2 + 2 + 2 = 10)
+5. **print(l[-1])** (accesseur du dernier élément d’une liste)
+6. **==** (test d'égalité)
+
+## Questions de cours
+
+1. Types :
+ - `False` : **bool**
+ - `7.5` : **float**
+ - `"Python"` : **str**
+ - `5` : **int**
+ - `"3"` : **str**
+2. Les trois structures de contrôle :
+ - Conditionnelles (`if`, `elif`, `else`)
+ - Boucles (`for`, `while`)
+ - Bloc d'exception (`try`, `except`)
+3. **Boucle for** (adaptée pour parcourir les éléments d’une liste)
+4. Analyse du code :
+a) La fonction `somme_pairs` renvoie la somme des éléments pairs d’une liste passée en paramètre
+b) Après exécution avec `[^1][^2][^3][^4]`, `resultat = 6` (car 2 + 4)
+c) Les paramètres sont dans la définition de la fonction (`liste`), la valeur de retour est donnée par le mot-clé `return`.
+5. **append** (la méthode `append()` permet d’ajouter en fin de liste)
+
+## Exercices
+
+1. Programme :
+```python
+age = int(input("Quel est votre âge ? "))
+if age >= 18:
+ print("majeur")
+else:
+ print("mineur")
+```
+
+2. Fonction moyenne :
+```python
+def moyenne(liste):
+ if len(liste) == 0:
+ return 0
+ return sum(liste) / len(liste)
+```
\ No newline at end of file
diff --git a/src/cours/CIEL1/02-reseau/evaluations/numeration_sujet2.md b/src/cours/CIEL1/02-reseau/evaluations/numeration_sujet2.md
new file mode 100644
index 0000000..4090fad
--- /dev/null
+++ b/src/cours/CIEL1/02-reseau/evaluations/numeration_sujet2.md
@@ -0,0 +1,25 @@
+# Evaluation - Représentation des nombres et opérations logiques
+
+1. Convertissez les nombres suivants en décimal :
+ - $ 1110~1101_{|2} $
+ - $ 3E_{|16} $
+2. Convertissez les nombres suivants en binaire :
+ - $ 45_{|10} $
+ - $ 9F_{|16} $
+3. Convertissez les nombres suivants en hexadécimal :
+ - $ 101011_{|2} $
+ - $ 297_{|10} $
+4. Sur le nombre $ 10110110_2 $, indiquez :
+ - Le bit de poids faible (LSB)
+ - Le bit de poids fort (MSB)
+5. **Combien d'entiers** peut-on représenter avec un nombre de 7 bits ?
+6. Mon ordinateur m'indique qu'un fichier fait 24 567 890 octets. Combien cela représente-t-il environ (2 chiffres après la virgule, attention aux unités) :
+ - en Mo (Mégaoctets) ?
+ - en Mio (Mébioctets) ?
+7. Mon disque dur a une capacité de 512 Go (Gigaoctets). Combien cela représente-t-il en Gio (Gibioctets) ?
+8. Donnez la table de vérité de l'opération logique OU.
+9. Donnez le résultat des opérations booléennes suivantes si `a = True` et `b = False` :
+ - `a and b`
+ - `a or not b`
+10. Donnez le résultat de l'opération bit à bit suivante (les nombres sont en base 10) :
+ - `85 | 60`
\ No newline at end of file
diff --git a/src/cours/CIEL1/02-reseau/evaluations/numeration_sujet2_corrige.md b/src/cours/CIEL1/02-reseau/evaluations/numeration_sujet2_corrige.md
new file mode 100644
index 0000000..c39ee1a
--- /dev/null
+++ b/src/cours/CIEL1/02-reseau/evaluations/numeration_sujet2_corrige.md
@@ -0,0 +1,35 @@
+# Corrigé - Représentation des nombres et Opérations logiques
+
+1. Conversion en décimal :
+ - $1101_2 = 1 \times 2^3 + 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 = 8 + 4 + 0 + 1 = 13$
+ - $3E_{16} = 3 \times 16^1 + 14 \times 16^0 = 48 + 14 = 62$
+2. Conversion en binaire :
+ - $45_{10} = 101101_2$ (division successive par 2)
+ - $9F_{16} = 10011111_2$ (9 = 1001, F = 1111)
+3. Conversion en hexadécimal :
+ - $101011_2 = 2B_{16}$ (regroupement en paquets de 4 bits: 0010 1011)
+ - $255_{10} = FF_{16}$
+4. Nombre $10110110_2$ :
+ - LSB (bit de poids faible) = dernier bit à droite = 0
+ - MSB (bit de poids fort) = premier bit à gauche = 1
+5. Avec 7 bits, on peut représenter $2^7 = 128$ entiers.
+6. Conversion des octets en Mo et Mio :
+ - $24,567,890$ octets en Mo = $\frac{24,567,890}{10^6} = 24.57$ Mo
+ - $24,567,890$ octets en Mio = $\frac{24,567,890}{2^{20}} \approx 23.43$ Mio
+7. Capacité de 512 Go en Gio :
+ - $512 \text{ Go} = \frac{512 \times 10^9}{2^{30}} \approx 476.84$ Gio
+8. Table de vérité du ET logique :
+| A | B | A ET B |
+| :-- | :-- | :-- |
+| False | False | False |
+| False | True | False |
+| True | False | False |
+| True | True | True |
+
+9. Résultats des opérations booléennes :
+ - \$ \neg (A \land B) = \neg (True \land False) = \neg (False) = True \$
+ - \$ A \lor \neg B = True \lor \neg (False) = True \lor True = True \$
+10. Opération bit à bit $85 \mid 60$ :
+ - $85_{10} = 01010101_2$
+ - $60_{10} = 00111100_2$
+ - $01010101 \mid 00111100 = 01111101_2 = 125_{10}$
\ No newline at end of file
diff --git a/src/cours/CIEL1/04-web-statique/tp/images/result-tp2.png b/src/cours/CIEL1/04-web-statique/tp/images/result-tp2.png
new file mode 100644
index 0000000..0230503
Binary files /dev/null and b/src/cours/CIEL1/04-web-statique/tp/images/result-tp2.png differ
diff --git a/src/cours/CIEL1/04-web-statique/tp/tp02-css-bases.md b/src/cours/CIEL1/04-web-statique/tp/tp02-css-bases.md
index 3708ded..315336e 100644
--- a/src/cours/CIEL1/04-web-statique/tp/tp02-css-bases.md
+++ b/src/cours/CIEL1/04-web-statique/tp/tp02-css-bases.md
@@ -1,20 +1,23 @@
-# Titre activité
+# Web statique - Activité - Feuilles de style CSS
## Objectifs
### Objectifs pédagogiques
-- **Objectif** : Description
+- Ajouter une feuille de style à notre page web
+- Manipuler les sléecteurs et les propriétés
+- Apprendre à utiliser le modèle de boîte
+- Apprendre à manipuler les flexbox
### Objectifs techniques
-- **Objectif** : Description
+- Améliorer l'aspect visuel de notre site web pour le rendre attrayant
## Validation
### Livrables
-- Le code final
+- Le code final HTML + CSS (zip)
- Le compte-rendu de l'activité
Le tout dans un répertoire avec le nom suivant `YYYY-MM-DD_TPX_NOM1_Prenom1_NOM2_Prenom2`.
@@ -23,9 +26,10 @@ Le tout dans un répertoire avec le nom suivant `YYYY-MM-DD_TPX_NOM1_Prenom1_NOM
### Résultats attendus
-- [ ] Le programme se lance sans erreur.
-- [ ] Chaque fonction contient une docstring minimale expliquant sa fonctionnalité. Bonus : Doctsrings complètes au format Numpy.
- [ ] Le code est propre, correctement formaté, les variables, fonctions et paramètres sont bien nommés, les conventions sont respectées.
+- [ ] La page web d'accueil affichée dans un navigateur ressemble à ceci (ou version personnalisée)
+
+
### Critères d'évaluation
@@ -41,15 +45,15 @@ Le tout dans un répertoire avec le nom suivant `YYYY-MM-DD_TPX_NOM1_Prenom1_NOM
- Autonomie dans la progression (2pts)
- Bonus +2pts
-## Documents fournis
-
-- Cours
-- Docs
-- Code préalable
-
## Étapes
-### 3 - Un peu de style
+### 0 - Mise en place
+
+- Nous repartons du résultat du TP précédent.
+- Vérifiez que toutes vos modifications aient bien été commitées.
+- Créez un nouveau fichier de compte-rendu.
+
+### 1 - Un peu de style
**Objectif :** Ajouter une feuille de style
@@ -65,7 +69,8 @@ Le tout dans un répertoire avec le nom suivant `YYYY-MM-DD_TPX_NOM1_Prenom1_NOM
~~~html
~~~
-4. Vérifier que le titre de votre site s'affiche désormais en bleu
+4. Vérifier que le titre de votre site s'affiche désormais en bleu.
+5. Vous pouvez mettre une couleur plus agréable (par exemple : `#213C54`)
5. Faire un nouveau commit (après avoir complété votre compte-rendu).
```
@@ -83,25 +88,34 @@ Le tout dans un répertoire avec le nom suivant `YYYY-MM-DD_TPX_NOM1_Prenom1_NOM
- les valeurs de propriétés
```
-### 4 - Un peu de créativité
+### 2 - Un peu plus de style
**Objectif :** Compléter le style de votre site web avec la feuille de style CSS
```admonish travail
+#### Sélection par type de balise
1. Utilisez la [documentation](https://developer.mozilla.org/fr/docs/Web/CSS/text-align) pour centrer le titre de votre page
-1. Ajoutez l'attribut `id="devise"` au paragraphe de la devise du cabinet.
-1. Utilisez cet attribut dans un sélecteur CSS pour centrer la phrase sous le titre et mettre le texte en italique (propriété `font-style`). Aidez-vous de la [documentation](https://developer.mozilla.org/fr/docs/Web/CSS/Reference#s%C3%A9lecteurs).
1. Utilisez la [documentation de Mozilla](https://developer.mozilla.org/fr/docs/Web/CSS/font-family) pour que la police par défaut de votre page soit `Helvetica`
-1. Utilisez la documentation pour que le lien sur `Alexandrie` devienne vert que lorsqu'on le survole avec la souris. Il doit rester noir sinon.
-1. Encapsulez le texte de description ainsi que l'image dans une balise ``. Ajoutez l'attribut `class="description"` à la section.
-1. À l'aide des propriétés CSS [`margin-right`](https://developer.mozilla.org/fr/docs/Web/CSS/margin) `margin-left` et [`max-width`](https://developer.mozilla.org/fr/docs/Web/CSS/max-width.), essayez de :
- - centrer le contenu de votre page
- - limiter le contenu à 800 pixels de large.
-1. Faites un nouveau commit (après avoir complété votre compte-rendu).
-```
-```admonish help title="Aide"
-- Pour selectionner un élément lorsqu'il est survolé, vous pouvez utiliser la pseudo-classe `element:hover`
+#### Sélection par balise encapsulée
+1. Encapsulez les liens vers les autres pages dans une balise `