diff --git a/README.md b/README.md
index a361d99..a152428 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
Il suffit de taper cette commande :
```
-hugo new -k [s1-s2]/[nom_du_sujet]
+hugo new -k sujet [b1-b2-b3-b4]/[nom_du_sujet]
```
Vous pouvez ensuite vous rendre dans le dossier nouvellement créé
diff --git a/config.yml b/config.yml
index 5ff2503..e7e5e21 100644
--- a/config.yml
+++ b/config.yml
@@ -26,6 +26,8 @@ params:
imageHeight: 120
imageTitle: "logo backtobasics"
buttons:
+ - name: "Sujets B1"
+ url: b1
- name: "Sujets S1"
url: s1
- name: "Sujets S2"
@@ -44,11 +46,15 @@ params:
menu:
main:
+ - identifier: b1
+ name: "Sujets B1"
+ url: b1
+ weight: 5
- identifier: s1
name: "Sujets S1"
url: s1
- weight: 5
+ weight: 10
- identifier: s2
name: "Sujets S2"
url: s2
- weight: 10
+ weight: 15
diff --git a/content/b1/IterationEtRecursion/index.md b/content/b1/IterationEtRecursion/index.md
new file mode 100644
index 0000000..d3e175b
--- /dev/null
+++ b/content/b1/IterationEtRecursion/index.md
@@ -0,0 +1,157 @@
+---
+title: "Itératif et Récusif"
+date: 2023-10-31T10:56:56+01:00
+author: "Lenny"
+description: "Entrainements sur la récursivité et itérativité"
+---
+
+# Introduction
+
+Ce TP est un sujet d'entrainement pour les méthodes récursives et itératives.
+
+Si vous avez la moindre question, n'hésitez pas à poser vos questions sur le Si vous avez la moindre question, n'hésitez pas à poser vos questions sur le [serveur Discord](https://discord.gg/SJGWzkU2gd) de BackToBasics ! :D
+
+# Iterations.cs
+
+Le but, ici, va être de résoudre ces problèmes seulement en utilisant des boucles `while` et `for`.
+
+
+
+## ReverseInt
+```csharp
+
+///
+/// Ecrire une fonction qui prend un int (n) et renvoie ses chiffres dans le sens inverse.
+///
+///
+/// n peut être négatif.
+///
+public static int Reverseint(int n)
+
+```
+
+```csharp
+// Résultats attendus :
+
+ReversInt(4); // == 4
+ReversInt(-4); // == -4
+ReversInt(24); // == 42
+ReversInt(-123456); // == -654321
+
+```
+
+## FindSub
+
+```csharp
+
+///
+/// Ecrire une fonction qui prend une string s et une string sub,et renvoie si sub est contenue dans la string s.
+///
+///
+/// Si une des deux chaine est vide alors la méthode lève une exception de type `ArgumentException`.
+///
+public static bool FindSub(string s, string sub)
+
+```
+
+```csharp
+// Résultats attendus :
+
+FindSub("Clement est le plus beau", "moche"); // == false
+FindSub("Clement est le plus beau", "beau"); // == true
+FindSub("Je est un autre.", ""); // == ArgumentException()
+
+```
+
+## FirstUpper
+
+```csharp
+
+///
+/// Ecrire une fonction qui prend une string s renvoie la string avec toutes les premieres lettres (lettre entre a-z) de chaque mot en majuscule
+/// (un mot est précédé d'un espace).
+///
+///
+/// Attention au premier mot de chaque string.
+///
+public static bool FindSub(string s, string sub)
+
+```
+
+```csharp
+// Résultats attendus :
+
+Revers_int("Je me crois en enfer, donc j'y suis."); // == "Je Me Crois En Enfer, Donc J'y Suis."
+Revers_int(""); // == ""
+Revers_int("!abc !def ghi .klm"); // == "!abc !def Ghi .klm"
+
+```
+
+## Replace_char
+
+```csharp
+
+///
+/// Ecrire une fonction qui prend une string source, le char toReplace a remplacer par le char replace en parametre et retourne la nouvelle string
+///
+public static string Replace_char(string source,char toReplace, char replace)
+
+```
+
+```csharp
+// Résultats attendus :
+
+Revers_int("De la programmation avant toute chose.", "a", "*"); // == "De l* progr*mm*tion *v*nt toute chose."
+
+```
+
+# Recursion.cs
+
+Le but, ici, va être de résoudre ces problèmes seulement en utilisant de la récursion (pas de boucle).
+
+## is_alpahnum
+```csharp
+
+///
+/// Ecrire une fonction qui prend un int i et une string s en parametre et renvoie true si la fonctione n'a que des char alphanumériques a partir de l'index i.
+///
+///
+/// i >=0
+///
+public static bool is_alpahnum(string s, int i)
+
+```
+
+```csharp
+// Résultats attendus :
+
+is_alpahnum("abcdef132", 0); // == true
+is_alpahnum("!abcdef", 0); // == false
+is_alpahnum("!abcdef", 1); // == true
+is_alpahnum("abcdef!", 15); // == true
+
+
+```
+
+## Reverse_str
+
+```csharp
+
+///
+/// Ecrire une fonction qui prend une string source de longueur length en parametre et retourn la string inversée.
+///
+///
+/// condition: length = s.Length
+///
+public static string Reverse_str(string source, int length)
+
+```
+
+```csharp
+// Résultats attendus :
+
+Reverse_str("42",2); // == "24"
+Reverse_str("123",3); // == "321"
+Reverse_str("ABcdeF",6); // == "FedcBA"
+
+```
diff --git a/content/b1/IterationEtRecursion/resources/images/.gitkeep b/content/b1/IterationEtRecursion/resources/images/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/content/b1/IterationEtRecursion/resources/ref/.gitkeep b/content/b1/IterationEtRecursion/resources/ref/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/content/b1/_index.md b/content/b1/_index.md
new file mode 100644
index 0000000..85e7b41
--- /dev/null
+++ b/content/b1/_index.md
@@ -0,0 +1,3 @@
+---
+title: Sujets de B1
+---
diff --git a/content/b1/stream/index.md b/content/b1/stream/index.md
new file mode 100644
index 0000000..33bc58a
--- /dev/null
+++ b/content/b1/stream/index.md
@@ -0,0 +1,113 @@
+---
+title: "Stream"
+date: 2023-10-31T10:56:56+01:00
+author: "Lenny"
+description: "Entraînements sur la manipulation de fichiers en C#"
+---
+
+# Introduction
+
+Ce TP est un sujet d'entraînement pour à l'utilisation de streams et de la manipulations de fichiers en C#.
+
+Si vous avez la moindre question, n'hésitez pas à poser vos questions sur le [serveur Discord](https://discord.gg/SJGWzkU2gd) de BackToBasics ! :D
+
+Les streams nous permettent de lire et écrire dans un fichier. On parle alors de manipulation de fichiers.
+
+# Stream.cs
+
+Afin de pouvoir utiliser les fonctions pour manipuler des fichiers, n'oubliez pas de rajouter le `using` suivant :
+
+```csharp
+using System.IO;
+```
+
+## Existfile
+```csharp
+///
+/// Fonction qui vérifie si le fichier associé à `path` existe.
+///
+public static bool ExistFile(string path)
+
+```
+
+## MyReplace
+
+```csharp
+
+///
+/// Remplace chaque itération du caracètre `char` dans le fichier `path` par le caractère `replace`.
+/// Elle devra modifier le fichier inscrit dans `path` et le créer si celui-ci n'existe pas.
+///
+///
+ /// Le fichier modifié devra se finir par un retour à la ligne.
+ /// Si une erreur apparaît, renvoyer une ArgumentException avec comme message "Error".
+///
+public static void MyReplace(string path, char toReplace, char replace)
+
+```
+Prenons le fichier : *test*
+```
+Bonjour,
+Ceci est un message de test.
+J'espere que vous allez reussir vos exams :D.
+```
+
+```csharp
+MyReplace(path, 'e', 'f'); // path est le chemin de mon fichier
+```
+On aura alors le fichier *test* suivant:
+```
+Bonjour,
+Cfci fst un message de tfst.
+J'fspfrf quf vous allfz rfussir vos fxams :D.
+
+```
+
+## DeleteLines
+
+```csharp
+
+///
+/// Supprime toutes les lignes multiples de la variable `n` dans le fichier `path`.
+/// Elle devra modifier le fichier et le créer si celui-ci n'existe pas.
+///
+///
+ /// Le fichier modifié devra se finir par un retour a la ligne
+ /// Si le fichier n'existe pas alors renvoyer une ArgumentException avec comme message "Error"
+///
+public static void DeleteLines(string path, int n)
+
+```
+
+Prenons le fichier : *ToDelete*
+```
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+```
+
+```csharp
+ public static void DeleteLines(string path, int n); // path est le chemin de mon fichier
+```
+On aura alors le fichier *ToDelete* suivant:
+
+```
+1
+3
+5
+7
+9
+11
+
+```
+
diff --git a/content/b1/stream/resources/images/.gitkeep b/content/b1/stream/resources/images/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/content/b1/stream/resources/ref/.gitkeep b/content/b1/stream/resources/ref/.gitkeep
new file mode 100644
index 0000000..e69de29