diff --git a/representation_base/.DS_Store b/representation_base/.DS_Store
new file mode 100644
index 0000000..42a8956
Binary files /dev/null and b/representation_base/.DS_Store differ
diff --git a/representation_base/README.md b/representation_base/README.md
new file mode 100644
index 0000000..fce87f2
--- /dev/null
+++ b/representation_base/README.md
@@ -0,0 +1,31 @@
+# Représentation de base
+
+## Pourquoi et comment le monde devient numérique ?
+
+L'adjectif « __Numérique__ » vient du latin « _numerus_ » (« nombre », « multitude ») et signifie « représentation par nombres ». Il s'oppose au calcul analogique ou littéral (par lettre).
+
+### Définition
+
+> Le nom __numérique__ désigne maintenant les technologies de l'information et de la communication. On parlera de numérisation l'opération de transformation vers ces technologies numériques. Dans d'autres langues, nous parlerons de digital.
+
+Les grandeurs numériques n'existent pas à l'état naturel. Le numérique est une pure invention humaine !
+
+La numérisation est le procédé permettant la construction d'une représentation discrète d'un objet du monde réel. Elle consiste donc à coder une information (texte, son, image, force...) sous la forme d'un ensemble de nombres (nous parlerons de forme numérique). Cette opération amène à une convergence des informations qui sont à l'origine totalement différentes. Ces informations pourront être manipulées, traitées, transmises et stockées par un système numérique.
+
+
+
+Les données de base sont représentées selon un __codage__ dépendant de leur nature : entiers, flottants, caractères et chaînes de caractères, ...
+
+### Définition
+
+> Le __codage de l’information__ concerne les moyens de formaliser l'information afin de pouvoir la manipuler, la stocker ou la transmettre. Il ne s'intéresse pas au contenu mais seulement à la forme et à la taille des informations à coder.
+
+L'objet de cette séquence est de répondre à la question : __Comment sont codées les données dans une machine ?__
+
+Cette séquence se décompose en 5 chapitres :
+
+- [Chapitre 1 : Représentation d'un entier naturel](./seance_1/)
+- [Chapitre 2 : Représentation d'un entier relatif](./seance_2/)
+- [Chapitre 3 : Représentation d'un flottant](./seance_3/)
+- [Chapitre 4 : Représentation d'un booléen](./seance_4)
+- [Chapitre 5 : Représentation d'un texte](./seance_5/)
diff --git a/representation_base/assets/10_vers_2.PNG b/representation_base/assets/10_vers_2.PNG
new file mode 100644
index 0000000..b5baabb
Binary files /dev/null and b/representation_base/assets/10_vers_2.PNG differ
diff --git a/representation_base/assets/2_vers_10.PNG b/representation_base/assets/2_vers_10.PNG
new file mode 100644
index 0000000..b6091b0
Binary files /dev/null and b/representation_base/assets/2_vers_10.PNG differ
diff --git a/representation_base/assets/BO.png b/representation_base/assets/BO.png
new file mode 100644
index 0000000..73d0475
Binary files /dev/null and b/representation_base/assets/BO.png differ
diff --git a/representation_base/assets/BO_1.PNG b/representation_base/assets/BO_1.PNG
new file mode 100644
index 0000000..0babe31
Binary files /dev/null and b/representation_base/assets/BO_1.PNG differ
diff --git a/representation_base/assets/Base_quelconque.PNG b/representation_base/assets/Base_quelconque.PNG
new file mode 100644
index 0000000..f9bacf9
Binary files /dev/null and b/representation_base/assets/Base_quelconque.PNG differ
diff --git a/representation_base/assets/ampoule.PNG b/representation_base/assets/ampoule.PNG
new file mode 100644
index 0000000..e0a8501
Binary files /dev/null and b/representation_base/assets/ampoule.PNG differ
diff --git a/representation_base/assets/binaire.PNG b/representation_base/assets/binaire.PNG
new file mode 100644
index 0000000..8b4f5c6
Binary files /dev/null and b/representation_base/assets/binaire.PNG differ
diff --git a/representation_base/assets/exemples.PNG b/representation_base/assets/exemples.PNG
new file mode 100644
index 0000000..5fad9d8
Binary files /dev/null and b/representation_base/assets/exemples.PNG differ
diff --git a/representation_base/assets/exercice_1.PNG b/representation_base/assets/exercice_1.PNG
new file mode 100644
index 0000000..edea3d6
Binary files /dev/null and b/representation_base/assets/exercice_1.PNG differ
diff --git a/representation_base/assets/exercice_2.PNG b/representation_base/assets/exercice_2.PNG
new file mode 100644
index 0000000..4e77547
Binary files /dev/null and b/representation_base/assets/exercice_2.PNG differ
diff --git a/representation_base/assets/gros_boutisme.PNG b/representation_base/assets/gros_boutisme.PNG
new file mode 100644
index 0000000..36dc1a2
Binary files /dev/null and b/representation_base/assets/gros_boutisme.PNG differ
diff --git a/representation_base/assets/gros_boutisme_2.PNG b/representation_base/assets/gros_boutisme_2.PNG
new file mode 100644
index 0000000..f346fbc
Binary files /dev/null and b/representation_base/assets/gros_boutisme_2.PNG differ
diff --git a/representation_base/assets/interrupteur.PNG b/representation_base/assets/interrupteur.PNG
new file mode 100644
index 0000000..9606305
Binary files /dev/null and b/representation_base/assets/interrupteur.PNG differ
diff --git a/representation_base/assets/octet.PNG b/representation_base/assets/octet.PNG
new file mode 100644
index 0000000..fdde016
Binary files /dev/null and b/representation_base/assets/octet.PNG differ
diff --git a/representation_base/assets/ordinateur.svg b/representation_base/assets/ordinateur.svg
new file mode 100644
index 0000000..574b9f2
--- /dev/null
+++ b/representation_base/assets/ordinateur.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/representation_base/assets/petit_boutisme.PNG b/representation_base/assets/petit_boutisme.PNG
new file mode 100644
index 0000000..badeaba
Binary files /dev/null and b/representation_base/assets/petit_boutisme.PNG differ
diff --git a/representation_base/assets/petit_boutisme_2.PNG b/representation_base/assets/petit_boutisme_2.PNG
new file mode 100644
index 0000000..92bef97
Binary files /dev/null and b/representation_base/assets/petit_boutisme_2.PNG differ
diff --git a/representation_base/assets/tableau.PNG b/representation_base/assets/tableau.PNG
new file mode 100644
index 0000000..f397ecb
Binary files /dev/null and b/representation_base/assets/tableau.PNG differ
diff --git a/representation_base/assets/tableau_hexa.PNG b/representation_base/assets/tableau_hexa.PNG
new file mode 100644
index 0000000..896df12
Binary files /dev/null and b/representation_base/assets/tableau_hexa.PNG differ
diff --git a/representation_base/seance_1/.DS_Store b/representation_base/seance_1/.DS_Store
new file mode 100644
index 0000000..b6d4062
Binary files /dev/null and b/representation_base/seance_1/.DS_Store differ
diff --git a/representation_base/seance_1/TP/.gitkeep b/representation_base/seance_1/TP/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/representation_base/seance_1/TP/README.md b/representation_base/seance_1/TP/README.md
new file mode 100644
index 0000000..bf56cc9
--- /dev/null
+++ b/representation_base/seance_1/TP/README.md
@@ -0,0 +1,140 @@
+# Exercices : Représentation des nombres naturels
+
+
+
+## Manipulation
+
+__Question 1 :__ Écrire une fonction `est_valide(binaire)` qui retourne :
+
+* **True** si le nombre est valide
+* **False** si le nombre est invalide.
+Le paramètre de la fonction sera une chaîne de caractères représentant un nombre écrit en base 2.
+
+``` python
+>>> est_valide("100010101")
+True
+>>> est_valide("1010401034")
+False
+```
+
+
+
+__Question 2 :__ Écrire une fonction ``est_pair(binaire)`` qui retourne :
+
+* **True** si le nombre passé en paramètre est pair
+* **False** si le nombre passé en paramètre est impair.
+Le paramètre de la fonction sera une chaîne de caractères représentant un nombre écrit en base 2.
+
+```python
+>>> est_paire('1001')
+False
+>>> est_paire('1010')
+True
+```
+
+
+
+## Conversion Binaire - Décimal
+
+__Question 3 :__ Écrire une fonction ``deux_puissance(rang)`` qui retourne la puissance de 2 associée au rang passé en paramètre. Vous n'utiliserez pas les fonctions Python déjà existantes.
+
+``` python
+>>> deux_puissance(0)
+1
+>>> deux_puissance(1)
+2
+>>> deux_puissance(2)
+4
+```
+
+
+
+__Question 4 :__ A l'aide des fonctions précédentes, écrire une fonction ``binaire_en_decimal(binaire)`` qui retourne la valeur décimale du nombre passé en paramètre. Le paramètre sera une chaîne de caractères représentant un nombre binaire. On vérifiera que ce nombre binaire est valide.
+
+``` python
+>>> binaire_en_decimal("1")
+1
+>>> binaire_en_decimal("1010")
+10
+>>> binaire_en_decimal("1001")
+9
+```
+
+
+
+## Conversion Décimal - Binaire
+
+__Question 5 :__ Écrire une fonction ``division_euclidienne(nombre, diviseur)`` qui retourne le quotient et le reste obtenu lorsque l'on divise le paramètre *nombre* par le paramètre *diviseur*.
+
+``` python
+>>> division_euclidienne(6,3)
+(2,0)
+>>> division_euclidienne(10,4)
+(2,2)
+>>> reste(6, 0)
+None
+```
+
+
+
+__Question 6 :__ A l'aide de l'algorithme de la division euclidienne et des fonctions précédentes, écrire une fonction ``decimal_en_binaire(*decimal*)`` qui retourne une chaîne de caractères correspondant à la représentation binaire du nombre passé en paramètre.
+
+
+``` python
+>>> decimal_en_binaire(16)
+"10000"
+>>> decimal_en_binaire(31)
+"11111"
+```
+
+
+
+## Conversion Décimal - Hexadécimal
+
+__Question 7 :__ Écrire une fonction ``symbole_hexa(decimal)`` qui retourne le symbole correspondant au paramètre dans la base 16.
+
+```python
+>>> symbole_hexa(1)
+"1"
+>>> symbole_hexa(10)
+"A"
+```
+
+
+
+__Question 8 :__ En s'inspirant des questions précédentes, écrire une fonction ``decimal_en_hexa(decimal)`` qui retourne une chaîne de caractères correspondant à la représentation en base 16 du nombre passé en paramètre.
+
+``` python
+>>> decimal_en_hexa(21)
+"15"
+>>> decimal_en_hexa(2019)
+"7E3"
+```
+
+
+
+## Conversion Hexadécimal - Décimal
+
+__Question 9 :__ écrire une fonction ``hexa_en_decimal(hexa)`` qui retourne le nombre correspondant à la représentation en base 10 du nombre passé en paramètre.
+
+```python
+>>> hexa_en_decimal("A")
+10
+>>> decimal_en_hexa("E10F")
+57615
+```
+
+
+
+## Conversion en base $$n$$
+
+__Question 10 :__ En s'inspirant des fonctions 8 et 10, écrire une fonction ``decimal_en_base_n(decimal, base)`` qui retourne une chaîne de caractères correspondant à la représentation en base *n* du nombre passé en paramètre.
+
+```python
+>>> decimal_en_base_n(10,2)
+"1010"
+>>> decimal_en_base_n(10,16)
+"A"
+>>> decimal_en_base_n(10,5)
+"20"
+```
diff --git a/representation_base/seance_1/cours/README.md b/representation_base/seance_1/cours/README.md
new file mode 100644
index 0000000..54580c2
--- /dev/null
+++ b/representation_base/seance_1/cours/README.md
@@ -0,0 +1,228 @@
+# Représentation des entiers naturels
+
+> **_Contenu_** : Notions introduites pour l’écriture en base 2, en base 16 ainsi que la notion de boulisme.
+> **_Compétences_** : Maitriser le codage d’une information et les différentes représentations de celle-ci
+
+## Le programme
+
+
+
+
+
+
+
+## Apport de connaissances
+
+Pour que vous compreniez le fonctionnement du binaire, et des systèmes de comptage en général (plus communément appelés bases), je vais commencer par faire une petite réintroduction à la base 10 que vous connaissez tous et toutes.
+
+
+ En effet, tout le monde sait compter en base 10 (décimal). Mais comment ça marche ? Comment est construit notre système ? Pour répondre à cette question à l'apparence simple, oubliez tout et reprenons depuis le début : comment avez-vous appris à compter à l'école ?
+
+### La numération décimale (base 10)
+
+Dans la vie courante et dans beaucoup de domaines, nous utilisons la numération décimale. Elle repose à l’origine sur nos dix doigts : les dix symboles – chiffres – permettent de représenter tous les nombres.
+
+La position des chiffres est primordiale dans cette représentation (numération de position) : il y a quelques années déjà, vous avez appris ce qu’étaient les unités (colonne de droite), les dizaines, les centaines, etc…
+
+Bref, il y a 10 chiffres : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Avec ces derniers, on peut compter jusqu'à 9. Et si l'on veut aller au-delà de 9, il faut changer de rang. Le nombre en est ainsi décomposé.
+
+Ainsi, on peut écrire 4138 comme 4 * 1000 + 1 * 100 + 3 * 10 + 8 * 1
+→ On remarque les égalités suivantes : 1000 = 103 ; 100 = 10² ; 10 = 101 ; 1 = 100
+
+Donc 4138 peut s’écrire : 4 * 103 + 1 * 102 + 3 * 101 + 8 * 100
+→où 10 est appelé BASE de cette numération (ici décimale)
+→où chaque chiffre (compris entre 0 et 9) est soit celui des unités, dizaines, etc…
+
+
+
+✏ *Un nombre est égal à la somme des valeurs de ses rangs, et on peut décomposer n'importe quel nombre en
+puissance de sa base.* ✏
+
+### Le codage binaire (base 10)
+
+Je vous ai parlé ci-dessus de rangs. En binaire, c'est pareil à la différence qu'on utilise le terme bit, qui est la
+contraction de **_binary digit_**, littéralement **_chiffre binaire_**. Un bit a deux états stables.
+En électronique, il est facile d'obtenir un système présentant deux états stables distincts. Prenons l'exemple
+d'un interrupteur
+
+
+
+
+
+Ainsi, pour coder une information qui peut ne prendre que deux états stables, la numération binaire est la
+plus adaptée.
+
+**Remarque** : étant donné que les symboles 0 et 1 sont communs à beaucoup de bases de numération (en
+l’occurrence 2 et 10), nous adoptons les notations suivantes.
+
+(1011)b ou 1011(en base 2) ou encore (1011)2 pour la base binaire
+(101)d ou 101(en base 10) ou encore (101)10 pour la base dix
+
+#### Comment trouver la représentation en base deux d'un entier naturel donné en base dix
+
+→ Méthode des divisions successives
+Exemple: (11)d = (?)b
+
+
+
+(11)d => (1011)b
+
+
+
+
+✏ Comment représenter des informations complexes ? ✏
+
+
Avec 1 bit, nous pouvons coder 2 informations.
+
Avec 2 bits, nous pouvons coder 4 informations différentes (2²)
+
+Si nous généralisons un peu : avec **_k_** bits, nous pouvons coder **_2k_** informations différentes
+
+### À faire vous-même
+
+Compléter le tableau suivant afin de coder les 8 premiers entiers naturels (entiers positifs ou nul)
+
+
+
+### À faire vous-même
+
+1. Convertir 42(10) en base 2 : 101010
+2. Convertir 104(10) en base 2 : 1101000
+
+
+
+### Qu'est-ce qu'un octet ?
+
+Un octet ((**byte** en anglais) est un regroupement de 8 bits.
+On parle aussi de mot. Il permet de coder 28 = 256 mots différents.
+Si nous codons des entiers naturels, nous coderons les nombres 0 à 255. Dans la littérature, un regroupement de 4 bits est appelé un quartet (cela nous servira plus tard).
+
+
+
+### Unités de mesure
+
+Il est très courant en informatique de mesurer la capacité mémoire d'un disque dur, de la RAM d'un ordinateur ou d'un débit de données Internet avec une unité de mesure exprimée comme un multiple d'octets. Ces multiples sont traditionnellement des puissances de 10 et on utilise les préfixes "kilo", " méga", etc. pour les nommer. Le tableau ci-dessous donne les principaux multiples utilisés dans la vie courante.
+
+| Nom | Symbole | Valeur |
+| :--------------- |:---------------: | -----:|
+| Kilooctet | ko | 103 octets |
+| Mégaoctet | Mo | 103 ko |
+| Gigaoctet | Go | 103 Mo |
+| Teraoctet | To | 103 Go |
+
+> Remarque : Historiquement, les multiples utilisés en informatique étaient des puissances de 2. Pour ne pas confondre l'ancienne et la nouvelle notation, on utilise des symboles différents pour représenter ces multiples.
+
+| Nom | valeur | Nombre d'octeets |
+| :--------------- |:---------------: | -----:|
+| Kio | 210 octets | 1024 |
+| Mio | 210Kio |1048576|
+| Gio | 210Mio |1073741824|
+| Tio | 210Gio |1099511627776|
+
+### À faire vous-même
+
+> Faisons la conversion de la base 2 vers la base 10 --> Passer de (0 1 1 0 1 1 0 1)b = (….......)d
+
+Méthode :
+
Ecrire le nombre binaire dans le tableau de correspondance
+
Faire la somme des valeurs des rangs pour lesquels la valeur du bit vaut 1.
+
+
+
+Somme : ............
+
+----------------------------
+
+### Le système hexadécimal (base 10)
+
+
+ La représentation en binaire n'est pas pratique à nous humain pour travailler (longueur de l'information importante, difficile à écrire et à lire sans faire d'erreur...).
+
+ Pour cela, nous travaillons avec la base hexadécimale. Le système hexadécimal permet de réduire la longueur des mots et facilite leur manipulation :
+L'écriture d'un nombre binaire en base hexadécimale est aisée.
+
+
+Ce système comporte seize symboles :
+- les dix chiffres du système décimal (0 à 9)
+- et les six premières lettres de l’alphabet (A à F)
+
+Ce sera donc un système en **base 16**.
+
+✏ Pour l'ordinateur, ça ne change rien, il travaille toujours en binaire. ✏
+
+### À faire vous-même
+
+> Compléter la colonne binaire
+
+
+
+> Passer de la base décimale à la base hexadécimale Écrire le nombre 63650 (10) en base 16
+
+
+
+> Faisons la conversion de la base 16 vers la base 10, écrire le nombre 2A3 (16) en base décimale
+
+Méthode :
+
Ecrire le nombre hexadécimal dans le tableau de correspondance en positionnant le chiffre correspondant à chacun des rangs.
+
Faire la somme des produits des chiffres avec la pondération correspondante.
+
+
+
+> Passer du code binaire au code hexadécimal
+
+**_Première méthode_** : opérer en deux étapes.
+
passer du binaire au décimal dans un premier temps
+
passer ensuite du décimal à l’hexadécimal
+
+Exemple : vérifier que 10110111101 (2) = 1469 (10) = 5BD
+
+
+**_Deuxième méthode_** : plus rapide, elle consiste à découper le nombre binaire en quartets (mots de 4 bits), à partir de la droite, puis à remplacer chaque quartet par le symbole hexadécimal correspondant.
+
+Exemple : 10110111101 (2) = 101 1011 1101 en binaire découpé en quartet
+ = 5 B D en hexadécimal
+
+------------------------------------
+
+### Passer d'une base quelconque à une autre
+
+Pour passer d'une base à une autre, on passera par la base 10 car c'est sur cette base qu'on maîtrise le mieux les opérations de base.
+
+Exemple : (944)10 → ( 12234)5
+
+
+
+-------------------------
+
+### Le boutisme
+
+La représentation des entiers naturels sur des mots de 2, 4 ou 8 octets se heurte au problème de l'ordre dans lequel ces octets sont organisés en mémoire. Ce problème est appelé le boutisme (ou endianness en anglais).
+
+Prenons l'exemple d'un mot de 2 octets (16 bits) comme 5BC9. Il y a deux organisations possibles d'un tel mot en mémoire :
+
+
Le gros boutisme (ou ou « mot de poids fort en tête » ou big endian en anglais), qui consiste à placer l'octet de poids fort en premier, c'est à dire à l'adresse mémoire la plus petite.
+
+
+
+> Quelques architectures respectant cette règle : _les processeurs Motorola 68000, les SPARC (Sun Microsystems) ou encore les System/370 (IBM)_. De plus, tous les protocoles TCP/IP communiquent en gros-boutiste. Il en va de même pour le protocole PCI Express.
+
+
Le petit boutisme (ou little endian en anglais), qui au contraire place l'octet de poids faible en premier.
+
+
+
+> Les processeurs x86 ont une architecture petit-boutiste. Celle-ci, au prix d'une moindre lisibilité du code machine par le programmeur, simplifiait la circuiterie de décodage d'adresses courtes et longues en 1975, quand un 8086 avait 29 000 transistors. Elle est d'influence pratiquement nulle aujourd’hui.
+
+Généralisons pour 4 octets. Ainsi, le mot 5BC96AF sera représenté de la manière suivante :
+en **gros boutisme**
+
+
+
+en **petit boutisme**
+
+
+
+La représentation petit ou gros boutisme est en principe transparente à l'utilisateur car cela est géré au niveau du système d'exploitation. Cette représentation prend de l'importance quand on accède aux octets soit en mémoire, soit lors d'échanges d'informations sur un réseau.
+
+
+```python
+
+```
diff --git a/representation_base/seance_1/evaluation/README.md b/representation_base/seance_1/evaluation/README.md
new file mode 100644
index 0000000..e69de29
diff --git a/representation_base/seance_1/exercices/README.md b/representation_base/seance_1/exercices/README.md
new file mode 100644
index 0000000..8837442
--- /dev/null
+++ b/representation_base/seance_1/exercices/README.md
@@ -0,0 +1,63 @@
+# Convertisseur
+
+Certaines oeuvres (film, livre, série...) contiennent un nombre dans leur titre. L'objectif est d'écrire les nombres en base 2, ce qui donne une toute autre lecture des titres...
+
+Exemple : Terminator $`2`$ $`\rightarrow`$ Terminator $`\overline{10}^2`$
+
+## Titre de films
+
+- Les **4** Fantastiques
+- Le **6**ème sens
+- Blanche neige et les **7** nains
+- Alien : Le **8**ème Passager
+- Fast and Furious **9**
+- **12** hommes en colère
+- Vendredi **13**
+- **21** Jump street
+- Les **101** dalmatiens
+- OSS **117** : Le Caire, nid d'espions
+- **2001** : L'Odysée de l'espace
+- **127** Heures
+- **300**
+- **28** jours plus tard
+- Les **Quatre Cents** Coups
+
+## Titre de livres
+
+- Entretien avec **un** vampire, d'Anne rice
+- L'homme **bicentenaire**, Isaac Asimov
+- Les **Trois** Mousquetaires, Alexandre Dumas
+- Les **Quatre** Filles du docteur March, Louisa May Alcott
+- Blanche-Neige et les **sept** nains, Frères Grimm
+- **Cinquante** nuances de Grey, E.L. James
+- Le Tour du monde en **80** jours, Jules Verne
+- **99** francs, Frédéric Beigbeder
+- Fahrenheit **451**, Ray Bradbury
+- Les **Mille et Une** Nuits
+- **1984**, Georges Orwell
+- Ils étaient **dix**, Agatha Christie
+- **Vingt mille** lieues sous les mers
+
+## Expressions
+
+- Être unis comme les **cinq** doigts de la main
+- L’art de faire du **neuf** avec du vieux
+- Chercher **midi** à **quatorze** heures
+
+## Recette
+
+Une recette de cuisine demande de la précision.
+
+La recette suivante permet de fabriquer de délicieux __chocolats fourrés au beurre de cacahuètes__...Seulement, toutes les quantités sont exprimées en une base différente de la base décimale.
+
+_Reconstituer la recette en convertissant toutes les quantités en décimal_.
+
+Pour $`\overline{100}^2`$ personnes, soit $`\overline{30}^8`$ biscuits.
+
+1. Mixer $`\overline{41}^{16}`$g de biscuits sablés pour les réduire en poudre
+2. Dans un saladier, mélanger cette poudre avec $`\overline{175}^8`$g de sucre glace et $`\overline{1\text{E}}^{16}`$g de beurre de cacahuètes. Bien mélanger pour obtenir une pâte.
+3. Faire fondre $`\overline{\text{F}0}^{16}`$g de chocolat pâtissier.
+4. Dans des caissettes en aluminium, étaler un peu de chocolat fondu (environ $`\overline{100}^2`$g) puis placer un morceau de pâte, et recouvrir de chocolat fondu.
+5. Répéter l'opération avec les ingrédients restants.
+6. Mettre au réfrigérateur pendant environ $`\overline{1010}^2`$ minutes puis servir.
+
diff --git a/representation_base/seance_2/.gitkeep b/representation_base/seance_2/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/representation_base/seance_2/README.md b/representation_base/seance_2/README.md
new file mode 100644
index 0000000..306f4ef
--- /dev/null
+++ b/representation_base/seance_2/README.md
@@ -0,0 +1,127 @@
+# Représentation des entiers relatifs
+
+## Attendus
+
+| Contenus | Capacités attendues |
+| :--: | :-- |
+| Représentation binaire d’un entier relatif | Évaluer le nombre de bits nécessaires à l’écriture en base 2 d’un entier, de la somme ou du produit de deux nombres entiers. Utiliser le complément à 2 |
+
+## Contexte
+
+Pour comprendre le fonctionnement du binaire, nous allons nous intéresser dans le un premier temps à la représentation des entiers positifs en base 10.
+Quelque soit la base utilisée, le fonctionnement est identique et les méthodes de conversion sont similaires.
+
+## Pré-requis
+
+### La valeur absolue d'un nombre
+
+La valeur absolue d'un nombre réel est sa valeur numérique sans tenir compte de son signe. Elle est notée $`|n|`$.
+
+- Si $`n > 0`$, alors $`|n| = n`$
+- Si $`n < 0`$, alors $`|n| = `$ opposé de $`n`$
+
+### Les bits significatifs
+
+### L'addition binaire
+
+Les opérations ci dessous manipulent des nombres représentés en binaire, codés sur un (1) bit.
+
+```math
+\begin{align*}
+0 + 0 &= 0 \\
+1 + 0 &= 1 \\
+0 + 1 &= 1 \\
+1 + 1 &= 0 \rightarrow \textit{Mais on reporte la retenue sur le bit de poids supérieur}
+\end{align*}
+```
+
+### La soustraction
+
+Les opérations ci dessous manipulent des nombres représentés en binaire, codés sur quatre (4) bit.
+
+```math
+\begin{align*}
+0110 - 0011 &= 0011 \\
+1011 - 10 &= 1001 \\
+10 - 101 &= ? \\
+\end{align*}
+```
+
+**_À votre avis, que donne cette dernière opération ?_**
+
+## 1. La représentation binaire signée
+
+La première méthode utilisée pour représenter des entiers négatifs est de réserver un bit qui déterminera le signe. Il restera donc p - 1 bits pour la représentation de la valeur absolue.
+
+Le bit de signe choisi est le bit le poids fort. Par convention, on définira : ·
+
+- $`1`$ pour représenter un nombre négatif
+- $`0`$ pour représenter un nombre positif
+
+Avant de représenter un entier, il faut aussi définir le nombre de bits qui seront utilisés, souvent 4, 8, 16, 32 ou 64 bits.
+
+Prenons un exemple avec l'entier $`5`$ sur 8 bits :
+
+```math
+\begin{align*}
+5_{10} & = 0000\ 0101_2 \\
+-5_{10} & = 1000\ 0101_{2}
+\end{align*}
+```
+
+Cependant cette méthode possède un inconvénient majeur :
+
+Les opérations "classiques" avec 2 nombres binaires ne fonctionnent plus ! C'est pour ces raisons que nous allons utiliser une nouvelle méthode : **le complément à deux**.
+
+Par ailleurs, on peut observer qu'il existe dorénavant deux manières de notation du nombre zéro (0) :
+
+- $`0000\ 0000 = +0`$
+- $`1000\ 0000 = -0`$
+
+## 2. Le complément à 2
+
+Le **complément à 2** est la méthode de représentation d'un entier négatif.
+
+Cette méthode se décompose en quatre (4) étapes :
+
+1. Représenter la valeur absolue de l'entier relatif sur $`p`$ bits
+2. Inverser tous les bits (les 1 deviennent des 0 et vice versa)
+3. Ajouter un (1) au nombre obtenu à l'étape précédente
+4. Le résultat de cette dernière opération est donc la représentation sur $`p`$ bits de l'entier relatif.
+
+**Travail à faire**
+
+> Calculer l'entier -5 en appliquant le complément à 2 sur 8 bits.
+
+Vérifions que la représentation par le complément à 2 satisfait la règle vue précédemment.
+
+Exemple avec les entiers 13 et -13 :
+
+```math
+\begin{align}
+& & \: 0 \: 0 \: 0 \: 0 \: 1 \: 1 \: 0 \: 1 \\
++ & & \: 1 \: 1 \: 1 \: 1 \: 0 \: 0 \: 1 \: 1 \\
+\hline
+= & & 1 \: 0 \: 0 \: 0 \: 0 \: 0 \: 0 \: 0 \: 0
+\end{align}
+```
+
+Dans l'opération ci-dessus, nous avons un 1 pour le 9ième bit, mais comme notre représentation se limite à 8 bits, il nous reste bien $`(00000000)_2`$.
+
+> 1. Représenter sur 8 bits l'entier 4 puis représenter, toujours sur 8 bits, l'entier -5.
+> 2. Additionner ces 2 nombres, vérifier que vous obtenez bien -1.
+
+**Question pour vous**
+
+- Quel est le plus petit entier négatif que l'on peut représenter sur huit (8) bits ?
+- Et quel est le le plus grand ?
+
+/!\ Remarque /!\ :
+
+Plus généralement, nous pouvons dire que pour une représentation sur $`n`$ bits, il sera possible de coder des valeurs comprises entre $`-2^{n-1}`$ et $`+2^{n-1} - 1`$ .
+
+Sachant que dans le langage C, les entiers signés sont codés sur 32 bits, dont un (1) pour le signe, quelles sont les valeurs minimale et maximale des entiers que l'on peut représenter ?
+
+En Python, la taille des entiers est arbitraire (donc non fixe), ainsi les valeurs minimale et maximale des entiers ne dépend que de la quantité de mémoire disponible sur votre machine.
+
+Néanmoins, on dispose de la bibliothèque _numpy_ qui permet de forcer une représentation sur 8 bits, par exemple, à l'aide de la fonction *int8*
diff --git a/representation_base/seance_2/exercices/.gitkeep b/representation_base/seance_2/exercices/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/representation_base/seance_2/exercices/README.md b/representation_base/seance_2/exercices/README.md
new file mode 100644
index 0000000..054865c
--- /dev/null
+++ b/representation_base/seance_2/exercices/README.md
@@ -0,0 +1,16 @@
+- 10924 : Point le plus profond, située au fond de l’océan Pacifique, la fosse des Mariannes. En 2020, le submersible Fendouzhe a plongé à cette profondeur et a observé des traces de pollution humaine (bouteille et sac en plastique) https://www-francetvinfo-fr.cdn.ampproject.org/c/s/www.francetvinfo.fr/meteo/climat/video-un-submersible-chinois-au-coeur-des-eaux-les-plus-profondes-de-la-terre_4192715.amp
+
+- 26 : Ours polaire
+- 109 : Orque
+- 273 : Grand requin blanc
+- 332 : Point le plus profond atteint par un homme en plongé sous-marine (Ahmed Gabr in 2014)
+- 1024 : Début de la Midnight zone. Aucun rayon solaire n'est capable d'atteindre cette profondeur
+- 1596 : Hydrothermal vents are formed from seawater passing through extremely hot volcanic rocks. They release heavy metals that are toxic to most animals. But even in those extreme conditions specialized life finds a way to survive.
+- 3005 : Cuvier's Beaked Whales are the deepest diving mammals.
+- 3688 : Profondeur moyenne des océans
+- 3800 : On April 14th, 1912 the Titanic sank to its final resting place at a depth of 3,800 meters.
+- 4000 : The Abyssal Zone
+- 6000 : The Hadal Zone. More people have been to the Moon than the Hadal Zone.
+- 6227 : The USS Johnston sank in WWII and is the deepest shipwreck ever found.
+- 8848 : Équivalent de l'altitude du mont Everest
+- 10225 : Hadal Amphipod
diff --git a/representation_base/seance_2/tp/.gitkeep b/representation_base/seance_2/tp/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/representation_base/seance_2/tp/README.md b/representation_base/seance_2/tp/README.md
new file mode 100644
index 0000000..142bada
--- /dev/null
+++ b/representation_base/seance_2/tp/README.md
@@ -0,0 +1,59 @@
+# Exercices : Représentation des nombres relatifs
+
+
+
+## Complément à deux
+
+__Question 1 :__ Écrire une fonction ``valeur_absolue(nombre)`` qui retourne la valeur absolue du nombre passé en paramètre.
+
+```python
+>>> valeur_absolue(7)
+7
+>>> valeur_absolue(-6)
+6
+```
+
+
+
+__Question 2 :__ Écrire une fonction ``inverse(binaire)`` qui retourne une nouvelle chaîne de caractères qui correspond à l'inverse de la chaîne passée en paramètre.
+
+Le paramètre de la fonction sera une chaîne de caractères représentant un nombre écrit en base 2.
+
+``` python
+>>> inverse("1010")
+"0101"
+>>> inverse("10110011")
+"01001100"
+```
+
+
+
+__Question 12 :__ Écrire une fonction ``addition_binaire(binaire1,binaire2)`` qui additionne et retourne le résultat des 2 nombres représentés en base 2. Vous vous aiderez de la table d'addition vu dans le cours.
+
+```python
+>>> addition_binaire("1001","0001")
+"1010"
+>>> addition_binaire("0001","0001")
+"0010"
+```
+
+
+
+__Question 13 :__ En utilisant les fonctions précédentes, écrire une fonction ``complement_a_2(decimal, nombre_bit)`` qui retourne la représentation en complément à 2 du nombre donné en paramètre.
+
+``` python
+>>> complement_a_deux(-12, 8)
+"11110100"
+>>>> complement_a_deux(7,8)
+"00000111"
+```
+
+
+__Question 14 :__ En utilisant le principe inverse, écrire une fonction ``complement_a_2_vers_decimal(binaire)`` qui retourne la valeur du nombre représenté en complément à 2 passé en paramètre. Vous aurez besoin d'écrire une fonction qui effectue la soustraction de 2 nombres binaires.
+
+``` python
+>>> complement_a_2_vers_decimal("1111")
+-1
+>>>> complement_a_2_vers_decimal('0111")
+7
+```
diff --git a/representation_base/seance_3/README.md b/representation_base/seance_3/README.md
new file mode 100644
index 0000000..8c8cf36
--- /dev/null
+++ b/representation_base/seance_3/README.md
@@ -0,0 +1,157 @@
+# Codage des décimaux : les flottants
+
+## Attendus
+
+| Contenus | Capacités attendues |
+| :--: | :-- |
+| Représentation approximative des nombres réels : notion de nombre flottant | Calculer sur quelques exemples la représentation de nombres réels : 0.1, 0.25 ou 1/3. |
+
+## Petit rappel : la base 10
+
+Intéressons nous à l'écriture d'un nombre décimal en base 10, comme par exemple 223,25
+
+### Codage de la partie entière
+
+Nous savons tous ici, en base 10, que 223 se compose de :
+
+- 3 unités,
+- 2 dizaines
+- 2 centaines.
+
+Cela vient de la série de divisions ci-dessous, sur laquelle les restes fournissent le nombre d'unités (3), de dizaines (2) et de centaines (2 aussi)
+
+
+
+On écrit alors $`223 = 2 \times 100 + 2 \times 10 + 3 \times 1`$ : c'est sa décomposition en base 10
+
+### Codage de la partie décimale
+
+Pour la partie décimale, 0.25, en base dix également, on a l'habitude de lire 2 dixièmes et 5 centièmes. Cela vient cette fois de multiplication par 10 :
+
+* $`0,25 \times 10 = 2.5`$ : la partie entière indique le nombre de dixièmes (2) et la partie décimale restante est 0,5
+
+* $`0,5 \times 10 = 5`$ : la partie entière indique le nombre de centièmes (5) et il n'y a plus de partie décimale à _explorer_.
+
+On vient de voir que $`0,25 = 2 \times \frac{1}{10} + 5 \times \frac{1}{100}`$
+
+Ainsi on peut écrire : $`223,25 = 2 \times 100 + 2 \times 10 + 3 + 2 \times \frac{1}{10} + 5 \times \frac{1}{100}`$
+
+En **notation scientifique**, on obtient : $`223,25= 2,2325 \times 10²`$
+
+**Définition**
+
+> La __notation scientifique__ est une façon de représenter les nombres décimaux. Elle consiste à exprimer le nombre sous la forme $`\pm a\times 10^{n}`$, où $`\pm`$ est appelé signe, $`a`$ est un nombre décimal de l'intervalle $`[1 ; 10[`$ appelé __mantisse (ou significande)__ et $`n`$ est un entier relatif appelé __exposant__.
+
+## En base 2
+
+### Codage de la partie entière
+
+Pour la partie entière, c'est exactement le même principe mais en divisant cette fois par 2 :
+
+
+
+On écrit alors : $`223 = 1 \times 2⁰ + 1 \times 2¹ + 1 \times 2² +1 \times 2³ + 1 \times 2⁴ + 0 \times 2⁵ + 1 \times 2⁶ +1 \times 2⁷`$ : C'est sa décomposition en base 2.
+
+Ainsi $`223 = 11111011_2`$
+
+### Codage de la partie décimale
+
+Pour la partie décimale, on procède comme en base 10 mais en multipliant par 2 au lieu de multiplier par 10 :
+
+- $`0,25 \times 2 = 0,5`$ : la partie entière vaut **0**, la partie décimale restante est 0.5
+- $`0,5 \times 2 = 1,0`$ : la parie entière vaut **1**. il n'y a plus rien après la virgule donc nous avons terminé
+
+On vient de voir que $`0.25 = 0 \times 2^{-1} + 1 \times 2^{-2}`$ : c'est sa décomposition en base 2
+
+Ainsi, on peut écrire :
+
+* $`123,25 = 11011111,01_2`$
+* En notation scientifique en base 2 : $`123,25 = 1,111101110_2 \times 2 ^7`$
+
+**Travail à faire**
+
+> Trouvez l'écriture scientifique en base 2 des nombres décimaux ci-dessous :
+>
+> * 8,5
+> * 12,125
+
+## Problème...
+
+Cherchons maintenant l'écriture scientifique de 0,1 en base 2.
+
+* $`0,1 \times 2 = 0,2`$ : partie entière **0** , la partie décimale restante est 0,2
+* $`0,2 \times 2 = `$
+
+**!! SPOILER plus bas, ne défilez pas avant d'avoir trouvé ! !!**
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+**Conclusion :**
+
+**On ne peut coder de façon exacte le nombre 0,1 en base 2.**
+
+**Et ce n'est pas le seul dans ce cas : la plupart des décimaux sont dans le même cas !**
+
+**On est donc contraint de faire une approximation !!**
+
+Allons un peu dans la console de Thonny :
+
+```Python
+>>> 0.1 + 0.1 + 0.1 == 0.3
+???
+```
+
+Ce n'est pas une erreur ou un bug de Python mais la conséquence d'une approximation liée au codage en base 2 :
+
+```python
+>>> 0.1 + 0.1 + 0.1
+???
+```
+
+> **Il n'est pas possible de coder un nombre décimal en valeur exacte en base 2**.
+>
+> **On obtient une approximation du nombre décimal, et non le nombre en lui même.**
+>
+> **Cette approximation est appelée _nombre en virgule flottante_ et correspond au type _float_ en Python.**
+
+## IEEE-754
+
+Voir https://www.youtube.com/watch?v=mtizhxkB-Zw&ab_channel=Wandida%2CEPFL
+
+A compléter
+
+________
+
+Inspiré de Mieszczak Christophe CC BY SA
diff --git a/representation_base/seance_3/assets/div1base10.jpg b/representation_base/seance_3/assets/div1base10.jpg
new file mode 100644
index 0000000..8cd40d8
Binary files /dev/null and b/representation_base/seance_3/assets/div1base10.jpg differ
diff --git a/representation_base/seance_3/assets/div1base2.jpg b/representation_base/seance_3/assets/div1base2.jpg
new file mode 100644
index 0000000..e75a7e7
Binary files /dev/null and b/representation_base/seance_3/assets/div1base2.jpg differ
diff --git a/representation_base/seance_3/exercices/PATRIOT/CORRECTION.md b/representation_base/seance_3/exercices/PATRIOT/CORRECTION.md
new file mode 100644
index 0000000..cab350f
--- /dev/null
+++ b/representation_base/seance_3/exercices/PATRIOT/CORRECTION.md
@@ -0,0 +1,125 @@
+# Missile Patriot
+
+
+Source : Department of Defense. American Forces Information Service. Defense Visual Information Center.
+
+## Pré-requis
+
+Avoir programmer :
+
+- une fonction qui prend un nombre de secondes et affiche au format (hh:mm:ss)
+- une fonction qui calcule le PGCD de 2 entiers
+
+## Corrigé
+
+Le micro-contrôleur de l’antimissile *Patriot* stocke la valeur $`\frac{1}{10}`$ en ne conservant que 23 bits pour la partie décimale (codage en virgule fixe).
+
+Il calcule le temps écoulé depuis son démarrage en multiples de $`\frac{1}{10}`$ème de seconde.
+
+1. Écrire $`\frac{1}{10}`$ en binaire, en conservant au moins 30 chiffres binaires après la virgule.
+
+ ```math
+ \begin{aligned}
+ & 0,1 \times 2 = \textcolor{red}{0},2 \\
+ & \left.\begin{aligned}
+ 0,2 \times 2 & = \textcolor{red}{0},4 \\
+ 0,4 \times 2 & = \textcolor{red}{0},8 \\
+ 0,8 \times 2 & = \textcolor{red}{1},6 \\
+ 0,6 \times 2 & = \textcolor{red}{1},2 \\
+ 0,2 \times 2 & = \textcolor{red}{0},4 \\
+ 0,4 \times 2 & = \textcolor{red}{0},8 \\
+ 0,8 \times 2 & = \textcolor{red}{1},6 \\
+ 0,6 \times 2 & = \textcolor{red}{1},2 \\
+ 0,2 \times 2 & = \textcolor{red}{0},4 \\
+ \end{aligned}\right\rbrace \textit{suivi de 2 fois}
+ \end{aligned}
+ ```
+
+ Soit $`0,1 = 0,00011001100110011001100110011_2`$
+
+2. Sachant que les registres du *Patriot* ne conservent que 23 bits après la virgule, quelle est, en base 10, la valeur qui est codée effectivement à la place de $`\frac{1}{10}`$ ?
+
+ La représentation binaire de 0,1 sur 23 bits est $`0,00011001100110011001100_2`$. Le nombre $`n`$ associé correspond à :
+
+ ```math
+ \begin{aligned}
+ n & = 0 \times 2^{-1} + 0 \times 2^{-2} + 0 \times 2^{-3} + 1 \times 2^{-4} + \dots + 0 \times 2^{-23}\\
+ & = 2^{-4} + 2^{-5} + 2^{-8} + 2^{-9} + 2^{-12} + 2^{-13} + 2^{-16} + 2^{-17} + 2^{-20} + 2^{-21} \\
+ & = \frac{1}{2^4} + \frac{1}{2^5} + \frac{1}{2^8} + \frac{1}{2^9} + \frac{1}{2^{12}} + \frac{1}{2^{13}} + \frac{1}{2^{16}} + \frac{1}{2^{17}} + \frac{1}{2^{20}} + + \frac{1}{2^{21}}\\
+ & = \frac{2^{17}}{2^{17} \times 2^4} + \frac{2^{16}}{2^{16} \times 2^5} + \frac{2^{13}}{2^{13} \times 2^8} + \frac{2^{12}}{2^{12} \times 2^9} + \frac{2^9}{2^9 \times 2^{12}} + \frac{2^8}{2^8 \times 2^{13}} + \frac{2^5}{2^5 \times 2^{16}} + \frac{2^4}{2^4 \times 2^{17}} + \frac{2}{2\times2^{20}} + \frac{1}{2^{21}}\\
+ & = \frac{2^{17} + 2^{16} + 2^{13} + 2^{12} + 2^9 + 2^8 + 2^5 + 2^4 + 2 + 1}{2^{21}} \\
+ & = \frac{131072 + 65536 + 8192 + 4096 + 512 + 256 + 32 + 16 + 2 + 1}{2097152} \\
+ & = \frac{209715}{2097152} \\
+ & \simeq 0.09999990463256836
+ \end{aligned}
+ ```
+
+3. Quelle est l’erreur approximative commise sur la représentation de $`\frac{1}{10}`$ ?
+
+ L'erreur approximative sur la représentation de $`\frac{1}{10}`$ :
+
+ ```math
+ \begin{aligned}
+ \epsilon & = \frac{1}{10} - n\\
+ & = \frac{1}{10} - \frac{209715}{2097152} \\
+ & = \frac{2097152 - 2097150}{20971520} \\
+ & = \frac{2}{20971520} \\
+ & = \frac{1}{10485760} \\
+ & \simeq 0.000000095
+ \end{aligned}
+ ```
+
+4. Combien de signaux d’horloge le *Patriot* reçoit-il en 100 h de fonctionnement ?
+
+ Le nombre de signaux d'horloges $`s`$ que reçoit un missile _Patriot_ en 100h de fonctionnement :
+
+ ```math
+ \begin{aligned}
+ s & = \textit{nombre de signaux par seconde} \times \textit{nombre de secondes en } 100h \\
+ & = 10 \times 60 \times 60 \times 100 \\
+ & = 3600000
+ \end{aligned}
+ ```
+
+5. En tenant compte de l’erreur calculée à la question 3., quel est le décalage de l’horloge du *Patriot* par rapport à l’heure réelle au bout de 100h ?
+
+ Le décalage de l'horloge $`d`$ du missile _Patriot_ au bout de 100h de fonctionnement :
+
+ ```math
+ \begin{aligned}
+ d & = \textit{nombre de signaux d'horloges sur } 100h \times \textit{erreur approximative de la représentation d'un } \frac{1}{10} \\
+ & = s \times \epsilon \\
+ & = 3600000 \times \frac{1}{10485760} \\
+ & = 360000 \times \frac{1}{1048576} \\
+ & = \frac{360000}{1048576} \\
+ & = \frac{5625}{16384} \\
+ & \simeq 0,34 s
+ \end{aligned}
+ ```
+
+6. Sachant qu’un missile se déplace à une vitesse d’environ 1 676 m/s, à quelle erreur de position en mètres correspond le décalage d’horloge d’un *Patriot* ayant fonctionné 100 h sans interruption ?
+
+ Soient :
+
+ - $`v`$, la vitesse du missile, 1676m/s,
+ - $`d`$, le décalage de l'horloge calculée à la question 5,
+ - $`e`$, l'erreur de position d'un missile _Patriot_, ayant fonctionné 100h, est :
+
+ ```math
+ \begin{aligned}
+ e & = v \times d \\
+ & = 1676 \times \frac{5625}{16384} \\
+ & = \frac{9427500}{16384} \\
+ & = \frac{2356875}{4096} \\
+ & \simeq 575,40 m
+ \end{aligned}
+ ```
+
+7. Conclure, sachant que, pour atteindre sa cible un *Patriot* doit l’approcher à moins de 500 m.
+
+ La question 6 nous a permis de calculer l'erreur de position du missile _Patriot_ ayant fonctionné pendant 100h. Le décalage d'un tel missile est supérieur à la distance d'approche finale de 500m. En conclusion, le missile _Patriot_ n'atteint pas sa cible.
+
+N.B :
+
+- En 1991, pendant la guerre du Golfe, un anti-missile _Patriot_ manque l’interception d’un missile Scud. Bilan : 28 soldats morts.
+- Si au lieu de tronquer $`\frac{1}{10}`$ on avait arrondi au plus proche : $`0,00011001100110011001101_2`$ alors l’erreur aurait été de 0,000000024 au lieu de 0,000000095 soit environ 140 m au lieu de 575 !
diff --git a/representation_base/seance_3/exercices/PATRIOT/ENONCE.md b/representation_base/seance_3/exercices/PATRIOT/ENONCE.md
new file mode 100644
index 0000000..c312104
--- /dev/null
+++ b/representation_base/seance_3/exercices/PATRIOT/ENONCE.md
@@ -0,0 +1,26 @@
+# Missile Patriot
+
+
+Source : Department of Defense. American Forces Information Service. Defense Visual Information Center.
+
+## Pré-requis
+
+Avoir programmé :
+
+- une fonction qui prend un nombre de secondes et l'affiche au format (hh:mm:ss)
+- une fonction qui calcule le PGCD de 2 entiers
+- une fonction qui indique si une fraction de 2 entiers est irréductible (i.e dont le PGCD est égal à 1)
+
+## Énoncé
+
+Le micro-contrôleur de l’antimissile *Patriot* stocke la valeur $`\frac{1}{10}`$ en ne conservant que 23 bits pour la partie décimale (codage en virgule fixe).
+
+Il calcule le temps écoulé depuis son démarrage en multiples de $`\frac{1}{10}`$ème de seconde.
+
+1. Écrire $`\frac{1}{10}`$ en binaire, en conservant au moins 30 chiffres binaires après la virgule.
+2. Sachant que les registres du *Patriot* ne conservent que 23 bits après la virgule, quelle est, en base 10, la valeur qui est codée effectivement à la place de $`\frac{1}{10}`$ ?
+3. Quelle est l’erreur approximative commise sur la représentation de $`\frac{1}{10}`$ ?
+4. Combien de signaux d’horloge le *Patriot* reçoit-il en 100 h de fonctionnement ?
+5. En tenant compte de l’erreur calculée à la question 3., quel est le décalage de l’horloge du *Patriot* par rapport à l’heure réelle au bout de 100h ?
+6. Sachant qu’un missile se déplace à une vitesse d’environ 1 676 m/s, à quelle erreur de position en mètres correspond le décalage d’horloge d’un *Patriot* ayant fonctionné 100 h sans interruption ?
+7. Conclure, sachant que, pour atteindre sa cible un *Patriot* doit l’approcher à moins de 500 m.
diff --git a/representation_base/seance_3/exercices/PATRIOT/assets/missile.jpeg b/representation_base/seance_3/exercices/PATRIOT/assets/missile.jpeg
new file mode 100644
index 0000000..caecced
Binary files /dev/null and b/representation_base/seance_3/exercices/PATRIOT/assets/missile.jpeg differ
diff --git a/representation_base/seance_3/exercices/README.md b/representation_base/seance_3/exercices/README.md
new file mode 100644
index 0000000..f67a939
--- /dev/null
+++ b/representation_base/seance_3/exercices/README.md
@@ -0,0 +1,43 @@
+## Exercice 1
+
+Écrire, en Python, une fonction `approximation` , prenant en entrée :
+- deux paramètre `a` et `b`, les flottants à comparer),
+- un paramètre `precision`, un entier donnant le nombre de chiffres après la virgule souhaitée entre 0 et 16
+
+* Cette fonction reverra `True` si $`|a - b|< 10^{-precision}`$ et `False` sinon.
+* Documenter la fonction
+* Créer plusieurs DocTests renvoyant soit True soit False.
+
+_Remarque : On utilisera la fonction valeur absolue : [`abs` ](https://www.w3schools.com/python/ref_func_abs.asp)_
+
+Si nous avons besoin de comparer des flottants, on utilisera donc cette fonction.
+
+## Exercice : 2
+
+Ecrire, en Python, une fonction `pythagore` prenant en entrée 3 flottants `a`, `b`, `c` et renvoie `True` si le triangle de dimension `a`, `b`et `c`est rectangle et `False` sinon.
+
+_Attention : On ne sait pas lequel de `a`, `b` ou `c` est le plus grand côté ! Il faudra donc étudier tous les cas possibles !`
+
+- Documenter la fonction
+- Créer plusieurs DocTests renvoyant soit True soit False.
+
+## Exercice : 3
+
+Écrire, en Python, une fonction `f` prenant en entrée un paramètre `x`, un flottant. Cette fonction renverra $x^3 + 3 * x^2 +3 * x +1$
+
+Écrire, en Python, une fonction `g` prenant en entrée un paramètre `x`, un flottant. Cette fonction renverra $(x + 1)^3$
+
+Écrire en Python une fonction `egalite` prenant en entrée 2 paramètres `f` et `g`, deux fonctions Python renvoyant des valeurs flottantes. Elle devra :
+
+- Comparer approximativement, avec une précision de 10 chiffres après la virgule, les fonctions `f` et `g` en prenant aléatoirement 1000 valeurs de `x` dans l'intervalle [-10, 10].
+- Si une des comparaisons est fausse, alors la fonction renverra `False`
+- Si toutes les comparaisons sont vraie, alors la fonction renverra `True`
+
+
+
+_Remarque : Évidemment, il s'agit de comparaison **approximative**. Si les deux fonctions sont égales 1000 fois à $`10^{-10}`$ près, il y a de fortes chances qu'elles sont égales... mais ce n'est pas une certitude !_
+
+Modifier et `f` pour qu'elle renvoie $`x²`$ et `g` pour qu'elle renvoie $`x² + 10^{⁻11}`$.
+
+- les deux fonctions sont-elles égales ?
+- qu'en dit la fonction `egalite` ?
diff --git a/representation_base/seance_4/PYTHON.md b/representation_base/seance_4/PYTHON.md
new file mode 100644
index 0000000..967f81d
--- /dev/null
+++ b/representation_base/seance_4/PYTHON.md
@@ -0,0 +1,163 @@
+# Type Booléen en Python
+
+## Valeur et Type
+
+En Python, les booléens sont `True` et `False`, ils sont du type `bool`
+
+```python
+>>> True
+True
+>>> print(type(True))
+
+>>> False
+False
+>>> print(type(False))
+
+```
+
+## Comparaison
+
+Les opérateurs de comparaison courants sont identiques à ceux des mathématiques mais ATTENTION, il ne faut pas confondre l’égalité et l’affectation
+
+Python
+
+```python
+>>> variable = 5 # une affectation
+>>> 5 == 8 # une égalité (qui est fausse)
+False
+```
+
+**Le résultat d’une comparaison est toujours un booléen**
+
+## Comparaisons des nombres
+
+| Comparaison | Symbole | Exemple | Résultat |
+| ----------------- | ------- | ------------- | -------- |
+| Égalité | `==` | `1 + 2 == 3` | `True` |
+| Différence | `!=` | `1 + 2 != 3` | `False` |
+| Supérieur | `>` | `4 > 3` | `True` |
+| Inférieur | `<` | `2.2 < 2 * 3` | `True` |
+| Supérieur ou égal | `>=` | `5 >= 6` | `False` |
+| Inférieur ou égal | `<=` | `8 <= 3` | `False` |
+
+## Appartenance à une structure
+
+On peut tester qu’un élément appartient à une structure avec le mot clé `in`
+
+```python
+>>> "a" in "bonjour" # False
+False
+>>> "bon" in "bonjour" # True
+True
+>>> 1 in [2, 3, 4] # False
+False
+```
+
+# Opérations sur les booléens
+
+Les opérateurs sur les booléens sont de deux types :
+
+- opérateur unaire : prend *un* booléen et en renvoie *un*.
+- opérateur binaire : prend *deux* booléens et en renvoie *un*.
+
+## Opérateur unaire : la négation
+
+### La négation: `not`
+
+C’est le seul opérateur *unaire*, il donne le contraire de ce qu’on lui passe.
+
+```python
+>>> not True # s'évalue à False
+False
+>>> not False # s'évalue à True
+True
+```
+
+## Opérateur binaire : le OU, noté `or`
+
+**Il est vrai si l’un des deux booléens est vrai.**
+
+```python
+>>> False or False
+False
+>>> False or True
+True
+>>> True or False
+True
+>>> True or True
+True
+```
+
+## Opérateur binaire : le ET, noté `and`
+
+**Il est vrai si les deux booléens sont vrais.**
+
+```python
+>>> False and False
+False
+>>> False and True
+False
+>>> True and False
+False
+>>> True and True
+True
+```
+
+## Opérateur binaire : le XOR noté `^`
+
+**Il est vrai si EXACTEMENT un des deux booléens est vrai**
+
+```python
+>>> False ^ False
+False
+>>> False ^ True
+True
+>>> True ^ False
+True
+>>> True ^ True
+False
+```
+
+## Python et les booléens
+
+Python permet de comparer n’importe quoi à un booleen.
+
+Par exemple, une chaîne de caractère vide est évaluée à `False`.`
+
+```python
+>>> bool(1)
+True
+>>> bool(0)
+False
+>>> bool("")
+False
+>>> bool("abc")
+True
+>>> bool([])
+False
+>>> bool([1, 2])
+True
+```
+
+- 0 est faux, les autres entiers sont vrais,
+- une structure vide est fausse, les autres sont vraies.
+
+## Complément : `None` et l’identité `is`
+
+Python propose la valeur `None` (rien) qui est fréquement utilisé pour représenter l’absence d’une valeur.
+
+Étant le seul objet du type `NoneType`, on peut tester son *identité* avec `is` :
+
+```python
+>>> 1 is None
+False
+>>> "abc" is None
+False
+>>> None is None
+True
+>>> a = 5
+>>> a is None
+False
+```
+
+On verra plus tard qu’une _fonction_ qui ne se termine par `return ...` renvoie néanmoins `None`.
\ No newline at end of file
diff --git a/representation_base/seance_4/README.md b/representation_base/seance_4/README.md
new file mode 100644
index 0000000..b80481b
--- /dev/null
+++ b/representation_base/seance_4/README.md
@@ -0,0 +1,243 @@
+# Codage des booléens
+
+## Attendus
+
+| Contenus | Capacités attendues |
+| :--: | :-- |
+| Valeurs booléennes : 0,1. Opérateurs booléens : and, or, not. Expressions booléennes | Dresser la table d’une expression booléenne |
+
+## Définition
+
+De nombreux dispositifs électroniques, électromécanique, (mécanique, électrique, pneumatique, etc....) fonctionnement en TOUT ou RIEN.
+
+Ceci sous-entend qu'ils peuvent prendre 2 états.
+
+Exemples :
+
+- Arrêt / Marche
+- Enclenché / Déclenché
+- Vrai / Faux
+- Ouvert / Fermé
+- Avant / Arrière
+- Conduction / Blocage
+
+Un système présentera un fonctionnement __logique combinatoire__ si l'état à un instant $`t`$ des variables de sortie ne dépend que de l'état des variables d'entrée au même instant $`t`$.
+
+## Variable logique
+
+Une variable logique ne peut prendre que 2 états:
+
+| État Vrai | État Faux |
+| :--: | :--: |
+| Oui | Non |
+| True | False |
+| 1 | 0 |
+| Haut | Bas |
+| High | Low |
+
+Pour ces raisons, il est beaucoup plus avantageux d'employer un système mathématique n'utilisant que 2 valeurs numériques.
+
+Par convention, on utilise les valeurs 0 / 1 pour représenter les états d'une variable logique.
+
+La variable binaire est aussi appelée variable __booléenne__. (De George Boole, mathématicien anglais 1815 - 1864)
+
+## Fonction logique
+
+Une fonction $`S`$ (exemple: allumer une lampe) peut comporter $`n`$ variables logiques.
+Pour chacune de ces combinaisons, la fonction peut prendre une valeur 0 ou 1.
+Nous obtenons $`2^n`$ combinaisons pour ces $`n`$ variables.
+
+### Table de vérité
+
+On représente l'ensemble valeurs d'entrées et sorties par une table de vérité :
+
+- À chaque variable d'entrée correspond une colonne,
+- À chaque ligne, une valeur d'état possible,
+- Une colonne de sortie contient la valeur de l'état de l'opération.
+
+Exemple :
+
+```math
+\begin{aligned}
+S = 1 \text{ si} \left\{
+\begin{array}{l}
+ a = 0 \text{ et } b = 1 \\
+ a = 0 \text{ et } b = 0 \\
+ a = 1 \text{ et } b = 0
+ \end{array}
+\right.
+\end{aligned}
+```
+
+| $`a`$ | $`b`$ | $`S`$ |
+| :--: | :--: | :--: |
+| 0 | 1 | 1 |
+| 0 | 0 | 1 |
+| 1 | 1 | 0 |
+| 1 | 1 | 0 |
+| 1 | 0 | 1 |
+
+### Opérateurs logiques
+
+#### Opérateur NON
+
+On associe à une variable binaire quelconque $`a`$ son complément, noté $`\overline{a}`$
+
+```math
+\begin{aligned}
+S = 1 \text{ ssi } a = 0
+\end{aligned}
+```
+
+La table de vérité de l'opérateur NON :
+
+| $`a`$ | $`S = \overline{a}`$ |
+| :--: | :--: |
+| 0 | 1 |
+| 1 | 0 |
+
+#### Opérateur ET
+
+L'état 1 est obtenu lors de l’action simultanée sur les 2 variables $`a`$ et $`b`$. L'opérateur est noté $`\land`$
+
+```math
+\begin{aligned}
+S & = 1 \text{ ssi } a = 1 \text{ et } b = 1 \\
+ & = a \land b
+\end{aligned}
+```
+
+La table de vérité de l'opérateur ET :
+
+| $`a`$ | $`b`$ | $`S = a \land b`$ |
+| :--: | :--: | :--: |
+| 0 | 0 | 0 |
+| 0 | 1 | 0 |
+| 1 | 0 | 0 |
+| 1 | 1 | 1 |
+
+##### Propriétés
+
+```math
+\begin{aligned}
+ a \land a & = a \\
+ a \land 1 & = a \\
+ a \land \overline{a} & = 0 \\
+ a \land 0 & = 0
+\end{aligned}
+```
+
+#### Opérateur OU
+
+L'état 1 est obtenu lors de l’action simultanée sur l'une des 2 variables ou les 2. L'opérateur est noté $`\lor`$
+
+```math
+\begin{aligned}
+S = 1 \text{ si} \left\{
+\begin{array}{l}
+ a = 0 \text{ ou } b = 1 \\
+ a = 1 \text{ ou } b = 0 \\
+ a = 1 \text{ ou } b = 1
+ \end{array}
+\right.
+\end{aligned}
+```
+
+La table de vérité de l'opérateur OU :
+
+| $`a`$ | $`b`$ | $`S = a \lor b`$ |
+| :--: | :--: | :--: |
+| 0 | 0 | 0 |
+| 0 | 1 | 1 |
+| 1 | 0 | 1 |
+| 1 | 1 | 1 |
+
+##### Propriétés
+
+```math
+\begin{aligned}
+ a \lor a & = a \\
+ a \lor 1 & = 1 \\
+ a \lor \overline{a} & = 1 \\
+ a \lor 0 & = a
+\end{aligned}
+```
+
+### Algèbre de Boole
+
+#### Définition
+
+Système algébrique constitué de l'ensemble $`\{0, 1\}`$, muni des 3 opérateurs de base NON, ET, OU.
+
+#### Propriétés
+
+- __Associativité__ : Comme avec les opérations habituelles, certaines parenthèses sont inutiles. Exemple : $`( a \land b ) \land c = a \land (b \land c) = a \land b \land c`$
+- __Commutativité__ : L'ordre est sans importance. Exemple : $`a \land b = b \land a`$
+- __Distributivité__ : Exemple : $`a \lor ( b \land c ) = ( a \lor b ) \land ( a \lor c )`$
+- __Idempotence__ : Exemple : $`a \land a \land a \land \dots \land a = a`$
+
+### Forme canonique
+
+Combinaison des variables de la fonction via les opérateurs de base de l’__algèbre de Boole__.
+
+La fonction $`S`$ définie par :
+
+```math
+\begin{aligned}
+S = 1 \text{ si} \left\{
+\begin{array}{l}
+ a = 0 \text{ et } b = 1 \\
+ a = 0 \text{ et } b = 0 \\
+ a = 1 \text{ et } b = 0
+ \end{array}
+\right.
+\end{aligned}
+```
+
+$`S`$ s'écrit sous sa forme canonique : $`S= (\overline{a} \land b) \lor (\overline{a} \land \overline{b}) \lor (a \land \overline{b})`$
+
+###
+
+## Exercices
+
+### Établir des tables de vérité
+
+**Travail à effectuer** : Écrire les tables de vérité des expressions booléennes suivantes :
+
+1. $`S(a, b) = \overline{a} \land b`$
+2. $`S(a, b) = b \lor (a \land b)`$
+3. $`S(a, b) = a \land (a \lor b)`$
+4. $`S(a, b, c) = (\overline{a} \land b) \lor (a \land c)`$
+5. Communication = Émetteur ET Récepteur
+6. Décrocher = (Sonnerie ET Décision de répondre) OU décision d'appeler
+7. Bac = Avoir la moyenne OU (NON Avoir la moyenne ET rattrapage)
+
+### Équivalence d'expressions booléennes
+
+1. Montrer que $`(a \land b) = \overline{\overline{a} \lor \overline{b}}`$
+2. Montrer que $`(a \lor b) = \overline{\overline{a} \land \overline{b}}`$
+
+N.B : Deux expressions booléennes sont équivalentes si leurs tables de vérité le sont.
+
+Autrement dit, si pour toutes les entrées des tables de vérité, l'ensemble des valeurs de sorties de ces mêmes tables sont équivalentes alors les expressions booléennes sont équivalentes.
+
+### Déterminer une expression booléenne
+
+| a | b | ssi(a, b) |
+| :--: | :--: | :--: |
+| 0 | 0 | __1__ |
+| 0 | 1 | __0__ |
+| 1 | 0 | __0__ |
+| 1 | 1 | __1__ |
+
+**Travail à effectuer** : Trouver l'expression booléenne, notée ssi(a, b) à partir de la table de vérité ci-dessus.
+
+### Loi de De Morgan
+
+Les __lois de De Morgan__ sont des identités entre propositions logiques. Elles ont été formulées par le mathématicien britannique Augustus De Morgan (1806-1871).
+
+1. $`\overline{(a \lor b)} = \overline{a} \land \overline{b}`$
+2. $`\overline{(a \land b)} = \overline{a} \lor \overline{b}`$
+
+**Travail à effectuer** : Démontrer ces 2 lois.
+
diff --git a/representation_base/seance_4/exercices/README.md b/representation_base/seance_4/exercices/README.md
new file mode 100644
index 0000000..c6e2b7e
--- /dev/null
+++ b/representation_base/seance_4/exercices/README.md
@@ -0,0 +1,42 @@
+# TD : Logique combinatoire
+
+## Algèbre de Boole
+
+Q1. Simplifier les équations suivantes à l'aide des théorèmes de l'algèbre de Boole :
+
+1. $`S = (\overline{a} \lor b) \land (a \lor b)`$
+2. $`S = \overline{a} \land b \land \overline{c} \lor \overline{a} \land b \land c \lor a \land b \land \overline{c} \lor a \land b \land c`$
+3. $`S = a \land b \land c \lor b \land c \lor b \land \overline{b}`$
+4. $`S = (a \lor \overline{a} \land b) \land \overline{( a \lor b )} \lor b \land \overline{c} \lor b \land c`$
+
+## Logigrammes
+
+Q2. Établir les logigrammes réalisant les équations suivantes :
+
+5. $`S = a \lor b \land \overline{c}`$
+6. $`S = \overline{(\overline{a} \land b \lor c) \land \overline{d}}`$
+7. $`S = a \land (\overline{b} \lor c)`$
+
+Q3. Établir l'équation des sorties S3 et S4 du logigramme suivant :
+
+
+
+Q4. Établir la table de vérité de S3 et de S4 en fonction de l'état des variables d'entrée :
+
+Q5. Compléter le chronogramme de la sortie S3 ci-dessous :
+
+
+
+## Étude du fonctionnement d'une perçeuse
+
+On considère une perceuse actionnée par un moteur $`M`$. Le moteur ne peut tourner que si l’interrupteur $`C`$ est actionné et si toutes les conditions de sécurité suivantes sont respectées :
+
+- La protection de sécurité $`P`$ est en place
+- Le courant de surcharge $`I`$ n’est pas dépassé
+
+Outre ces conditions normales de fonctionnement, une clé $`K`$ permet de faire tourner le moteur sans aucune condition de sécurité.
+
+Q6. En supposant que chaque variable $`C, P, I`$ et $`K`$ vaut 1 lorsque la condition de fonctionnement est respectée, donner la table de vérité du moteur $`M`$.
+
+Q7. Donner l’équation et le logigramme.
+
diff --git a/representation_base/seance_4/exercices/README_2.md b/representation_base/seance_4/exercices/README_2.md
new file mode 100644
index 0000000..61ff726
--- /dev/null
+++ b/representation_base/seance_4/exercices/README_2.md
@@ -0,0 +1,74 @@
+# TD : Logique combinatoire
+
+## Exercice 1
+
+Q1. En utilisant les propriétés de l’algèbre de Boole, simplifier les équations logiques suivantes :
+
+1. $`S = a \land(a \lor \overline{b})`$
+2. $`S = (\overline{a} \lor b) \land (\overline{a} \lor \overline{b})`$
+3. $`S = a \lor (\overline{a} \land \overline{b})`$
+4. $`S = a \land (\overline{a} \lor b)`$
+
+## Exercice 2
+
+Q2. Faire le logigramme des fonctions suivantes en utilisant que des portes logiques à 2 entrées :
+
+1. $`S = a\land b \lor \overline{b} \land c`$
+2. $`S = \overline{(a \lor b) \land c}`$
+3. $`S = \overline{(a \lor \overline{b}) \land (d \lor \overline{c})}`$
+
+## Exercice 3
+
+Q3. Pour le logigramme suivant, donner l’équation logique de la sortie $`S`$ en fonction des entrées $`a, b`$ et $`c`$ :
+
+
+
+Q4. Simplifier l’équation logique $`S`$.
+
+Q5. Dessiner le nouveau logigramme simplifié de l’équation logique $`S`$.
+
+## Exercice 4
+
+Q6. Pour le logigramme suivant, donner l’équation logique de la sortie $`T`$ en fonction des entrées $`a, b, c`$ et $`d`$ :
+
+Q7. Simplifier l’équation logique $`T`$.
+
+Q8 : Dessiner le nouveau logigramme simplifié de l’équation logique $`T`$.
+
+## Exercice 5
+
+Q9. À partir de la table de vérité ci-dessous, déterminer l’équation logique $`S`$.
+
+| $`a`$ | $`b`$ | $`c`$ | $`S`$ |
+| :--: | :--: | :--: | :--: |
+| 0 | 0 | 0 | __1__ |
+| 0 | 0 | 1 | __1__ |
+| 0 | 1 | 0 | __1__ |
+| 0 | 1 | 1 | __0__ |
+| 1 | 0 | 0 | __0__ |
+| 1 | 0 | 1 | __0__ |
+| 1 | 1 | 0 | __1__ |
+| 1 | 1 | 1 | __0__ |
+
+Q10. Simplifier l'équation logique $`S`$
+
+Q11. Compléter les chronogrammes ci-dessous.
+
+
+
+## Exercice 6
+
+Un parking souterrain est géré grâce à un gardien et à partir de capteurs de détection de véhicules.
+Un capteur $`p`$ dans le sol détectera la présence d'un véhicule à l'entrée du parking ($`p = 1`$).
+Un capteur $`h`$ en hauteur détectera la présence d'un véhicule de plus de 2 mètres ($`h = 1`$). Pour une hauteur supérieure à 2 mètres l'entrée dans le parking est interdite.
+De plus, le gardien du parking aura la possibilité de fermer un contact $`g`$ ($` g = 1`$) si le parking est plein, pour ne pas autoriser l'entrée de véhicules supplémentaires.
+L'autorisation de pénétrer sera visualisée sur un feu bicolore :
+
+- Si le feu est vert la barrière s'ouvrira et le véhicule pourra
+- Si le feu est rouge la barrière restera fermée
+
+Q12. Donnez la table de vérité du système. Pour les combinaisons matériellement impossibles, le feu rouge restera allumé.
+
+Q13. En déduire les équations Logiques de "Vert" et "Rouge".
+
+Q14. Réalisez le schéma à l’aide de portes logiques
diff --git a/representation_base/seance_4/exercices/assets/exercice_2_q3.svg b/representation_base/seance_4/exercices/assets/exercice_2_q3.svg
new file mode 100644
index 0000000..c6fb2b1
--- /dev/null
+++ b/representation_base/seance_4/exercices/assets/exercice_2_q3.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/representation_base/seance_4/exercices/assets/exercice_2_q5.svg b/representation_base/seance_4/exercices/assets/exercice_2_q5.svg
new file mode 100644
index 0000000..99ec3cb
--- /dev/null
+++ b/representation_base/seance_4/exercices/assets/exercice_2_q5.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/representation_base/seance_4/exercices/assets/exercice_3.svg b/representation_base/seance_4/exercices/assets/exercice_3.svg
new file mode 100644
index 0000000..0025d41
--- /dev/null
+++ b/representation_base/seance_4/exercices/assets/exercice_3.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/representation_base/seance_4/exercices/assets/exercice_5.svg b/representation_base/seance_4/exercices/assets/exercice_5.svg
new file mode 100644
index 0000000..523fd4f
--- /dev/null
+++ b/representation_base/seance_4/exercices/assets/exercice_5.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/representation_base/seance_4/tp/README.md b/representation_base/seance_4/tp/README.md
new file mode 100644
index 0000000..c5c203a
--- /dev/null
+++ b/representation_base/seance_4/tp/README.md
@@ -0,0 +1,109 @@
+# Mystère
+
+## Description
+
+L'idée de ce TP est de manipuler les expressions booléennes.
+
+Pour cela, vous allez devoir programmer des fonctions booléennes.
+
+A chaque fonction `mystere` suivante, sont données des doctests.
+Ces doctests correspondent aux valeurs des tables de vérités.
+
+## Consignes
+
+Recopier le bloc de code suivant dans un fichier `mystere.py`
+
+Vous devez écrire le corps de la fonction sous la forme d'une expression booléenne, dont les variables correspondent aux paramètres d'entrée fournis.
+
+```python
+def mystere1(a):
+ '''
+ >>> mystere1(True)
+ False
+ >>> mystere1(False)
+ True
+ '''
+ pass
+
+def mystere2(a, b):
+ '''
+ >>> mystere2(True, True)
+ True
+ >>> mystere2(True, False)
+ True
+ >>> mystere2(False, True)
+ True
+ >>> mystere2(False, False)
+ False
+ '''
+ pass
+
+def mystere3(a, b):
+ '''
+ >>> mystere3(True, True)
+ False
+ >>> mystere3(True, False)
+ True
+ >>> mystere3(False, True)
+ True
+ >>> mystere3(False, False)
+ False
+ '''
+ pass
+
+def mystere4(a, b):
+ '''
+ >>> mystere4(True, True)
+ False
+ >>> mystere4(True, False)
+ False
+ >>> mystere4(False, True)
+ False
+ >>> mystere4(False, False)
+ True
+ '''
+ pass
+
+def mystere5(a, b):
+ '''
+ >>> mystere5(True, True)
+ True
+ >>> mystere5(True, False)
+ False
+ >>> mystere5(False, True)
+ False
+ >>> mystere5(False, False)
+ True
+ '''
+ pass
+
+def mystere6(a, b):
+ '''
+ >>> mystere6(True, True)
+ False
+ >>> mystere6(True, False)
+ True
+ >>> mystere6(False, True)
+ False
+ >>> mystere6(False, False)
+ False
+ '''
+ pass
+
+def mystere7(a, b):
+ '''
+ >>> mystere7(True, True)
+ False
+ >>> mystere7(True, False)
+ True
+ >>> mystere7(False, True)
+ False
+ >>> mystere7(False, False)
+ True
+ '''
+ pass
+
+if __name__ == '__main__':
+ import doctest
+ doctest.testmod(verbose=False)
+```
\ No newline at end of file
diff --git a/representation_base/seance_5/README.md b/representation_base/seance_5/README.md
new file mode 100644
index 0000000..fe9d510
--- /dev/null
+++ b/representation_base/seance_5/README.md
@@ -0,0 +1,283 @@
+# Représentation d'un texte en machine
+
+## Attendus
+
+| Contenus | Capacités attendues |
+| :--: | :-- |
+| Représentation d’un texte en machine. Exemples des encodages ASCII, ISO-8859-1, Unicode | Identifier l’intérêt des différents systèmes d’encodage. Convertir un fichier texte dans différents formats d’encodage. |
+
+## Contexte
+
+
+
+Source : http://www.retourdemartine.free.fr/
+
+
+Prenons l'alphabet courant `A`, `B`, `C`, ... `Z` et plaçons le dans un tableau.
+
+
+
+
A
+
B
+
C
+
D
+
E
+
F
+
G
+
H
+
I
+
J
+
K
+
L
+
M
+
N
+
O
+
P
+
Q
+
R
+
S
+
T
+
U
+
V
+
W
+
X
+
Y
+
Z
+
+
+
+Regardons les indices associés à chaque lettre.
+
+
+
+
0
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
+
+
A
+
B
+
C
+
D
+
E
+
F
+
G
+
H
+
I
+
J
+
K
+
L
+
M
+
N
+
O
+
P
+
Q
+
R
+
S
+
T
+
U
+
V
+
W
+
X
+
Y
+
Z
+
+
+
+À un indice correspond une lettre et à une lettre est associée un et un seul indice.
+
+## Définition
+
+En généralisant à l'ensemble des caractères (`,`, `é`, `%`, ...), un caractère peut être représenté par un entier, donc avoir une représentation binaire en machine.
+
+___Définition___
+
+> L'entier associé à un caractère est appelé ___point de code___ de ce caractère (0 est le point de code de `A`. 25 le point de code de `Z`.)
+
+___Définition___
+
+> On parle ainsi d'___encodage de caractères___ : mécanisme qui gère les points de code en octets dans la mémoire de l’ordinateur, puis lit les octets à nouveau en points de code.
+
+Il a existé et existe plusieurs encodages.
+
+## Encodage ASCII
+
+En 1960, l'organisation internationale de normalisation (ISO) décide de créer la norme ASCII (American Standard Code for Information Interchange).
+
+À chaque caractère est associé un nombre binaire sur 7 bits.
+
+
+
+Source : Wikipédia
+
+Comme vous pouvez le constater dans le tableau ci-dessus, au "A" majuscule correspond le code binaire $`(1000001)_2`$ $`(65)_{10}`$ ou $`(41)_{16}`$
+
+___Question___
+
+> Combien de points de code (et donc de caractères) peuvent être représentés grâce à l'encodage ASCII ?"
+
+___Solution___
+
+> Avec 7 bits, on peut coder $`2^7`$ points de code, donc 128 caractères.
+
+___Travail à effectuer___
+
+> 1. Quel est le point de code et la représentation en binaire, du caractère `a` ?
+> 2. Comment grâce à la représentation, en binaire, peut-on savoir si une lettre est en majuscule ou minuscule ?
+
+___Solution___
+
+> 1. Le caractère `a` a pour point de code 97, soit $`(1100001)_2`$.
+> 2. Le bit de rang 5 est égal à :
+> - 1 si la lettre est en minuscule,
+> - 0 si la lettre est en majuscule.
+
+La norme ASCII convient bien à la langue anglaise, mais pose des problèmes dans d'autres langues, par exemple le français.
+
+En effet, l'ASCII ne prévoit pas d'encoder les lettres accentuées.
+
+## Encodage ISO-8859-1
+
+Cette norme reprend les mêmes principes que l'ASCII, mais les points de code associés à chaque caractère sont codés sur 8 bits.
+
+___Question___
+
+> Combien de points de code (et donc de caractères) peuvent être représentés grâce à l'encodage ISO-8859-1 ?
+
+___Soution____
+
+> Sur 8 bits, on peut représenter $`2^8`$ points de code, soit 256 caractères... 2 fois plus que l'encodage ASCII.
+
+Cette norme va être principalement utilisée dans les pays européens puisqu'elle permet d'encoder les caractères utilisés dans les principales langues européennes (la norme ISO-8859-1 est aussi appelée "latin1" car elle permet d'encoder les caractères de l'alphabet dit "latin").
+
+Problème, il existe beaucoup d'autres langues dans le monde qui n'utilisent pas l'alphabet dit "latin", par exemple le chinois ou le japonais ! D'autres normes ont donc dû voir le jour.
+
+Des changements de configuration sont nécessaires pour afficher un texte dans l'encodage adéquat.
+
+## Encodage Unicode
+
+Pour éviter ces problèmes, en 1991, une nouvelle norme a vu le jour : Unicode.
+
+Unicode a pour ambition de rassembler tous les caractères existant afin qu'une personne utilisant Unicode puisse, sans changer la configuration de son traitement de texte, à la fois lire des textes en français ou en japonais.
+
+Unicode est une table qui regroupe tous les caractères existant au monde. Unicode accepte plusieurs systèmes de codage : UTF-8, UTF-16, UTF-32.
+
+Le plus utilisé, notamment sur le Web, est UTF-8.
+
+### Nombre s'octets en UTF-8
+
+Pour encoder les caractères Unicode, UTF-8 utilise un nombre variable d'octets (jusque 4) :
+
+- Les caractères de numéro 0 à 127 sont codés sur un octet dont le bit de poids fort est toujours nul,
+- Les caractères de numéro supérieur à 127 sont codés sur plusieurs octets.
+- Dans ce cas, les bits de poids fort du premier octet forment une suite de 1 de longueur égale au nombre d'octets utilisés pour coder le caractère, les octets suivants ayant 10 comme bits de poids fort.
+
+
+
Définition du nombre d'octets utilisés
+
+
Représentation binaire en UTF-8
Signification
+
+
+
0xxxxxxx
1 octet codant 1 à 7 bits
+
110xxxxx 10xxxxxx
2 octets codant 8 à 11 bits
+
1110xxxx 10xxxxxx 10xxxxxx
3 octets codant 12 à 16 bits
+
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
4 octets codant 17 à 21 bits
+
+
+
+### Méthode pour obtenir la représentation binaire en UTF-8 d'un caractère
+
+1. Représenter le point de code associé au caractère en binaire
+2. En fonction du nombre de bits, définir le nombre d'octets nécessaires pour une représentation en UTF-8
+3. Découper les blocs de bits en autant d'octets nécessaires.
+
+Exemple : le caractère `A` a pour point de code 65 dans la table Unicode.
+
+1. Représentation binaire de 65 : 100 0001
+2. 7 bits sont nécessaires $`\rightarrow`$ 1 octet nécessaire pour le représenter en UTF-8
+3. Représentation en UTF-8 : 01000001 ou $`(41)_{16}`$
+
+Exemple : le caractère œ a pour point de code 339 dans la table Unicode.
+
+1. Représentation binaire de 339 : 1 0101 0011
+2. 9 bits sont nécessaires $`\rightarrow`$ 2 octets nécessaires pour le représenter en UTF-8
+3. l'octet de poids faible codant les 6 bits de poids faible, l'octet poids fort codant les 3 bits de poids forts
+4. Représentation en UTF-8 : 1100101 10010011 ou $`(\text{C}5\,93)_{16}`$
+
+___Travail à effectuer___
+
+> 1. Quelle est la représentation binaire du caractère `b` (point de code : 98) en UTF-8 ?
+> 2. Quel est le point de code représenté par $`(\text{C}2\,80)_{16}`$ en UTF-8 ?
+
+___Solution___
+
+> 1. Le point de code 98 a comme représentatio binaire : $`(1100010)_`$
+> - 7 bits sont nécessaires ⇒ 1 octet nécessaire pour le réprésenter en UTF-8
+> - Représentation en UTF-8 : 01100010 ou $`(62)_{16}`$
+> 2. $`(\text{C}2\,80)_{16} = (11000010\,10000000)_{16}`$
+
+Le point de code est représenté par les bits 11000010 10000000. Soit $`(10000000)_2 = (128)_{10}`$
+
+