diff --git a/.gradle/8.8/executionHistory/executionHistory.bin b/.gradle/8.8/executionHistory/executionHistory.bin
index 002104d3253eeb3a4915674ded851812064f1733..c1eb9f213a799e442471f095a468de591861e9d1 100644
Binary files a/.gradle/8.8/executionHistory/executionHistory.bin and b/.gradle/8.8/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.8/executionHistory/executionHistory.lock b/.gradle/8.8/executionHistory/executionHistory.lock
index 680bb90eea9d459f0c26444877748f3a6d3dd03a..de0f0cc4818e9c5336c4cc682f606f302d6d676f 100644
Binary files a/.gradle/8.8/executionHistory/executionHistory.lock and b/.gradle/8.8/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.8/fileHashes/fileHashes.bin b/.gradle/8.8/fileHashes/fileHashes.bin
index 74ccaa4de4100e0b144bc437ce03e04536454070..c926d15c3ce365067c0026e4fc14e8f992a0d118 100644
Binary files a/.gradle/8.8/fileHashes/fileHashes.bin and b/.gradle/8.8/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.8/fileHashes/fileHashes.lock b/.gradle/8.8/fileHashes/fileHashes.lock
index 1dcfed109c5cd476a1e8df1e2f49e961ada4390f..288d52a5ffa5440b2cea8e98bc683c1dc0616d4d 100644
Binary files a/.gradle/8.8/fileHashes/fileHashes.lock and b/.gradle/8.8/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.8/fileHashes/resourceHashesCache.bin b/.gradle/8.8/fileHashes/resourceHashesCache.bin
index 17c8071eb2b6f554b230306a74ab8898e86fe330..2f5f484a3d77c9e1b6cad7cb8b2799431f0e8cc4 100644
Binary files a/.gradle/8.8/fileHashes/resourceHashesCache.bin and b/.gradle/8.8/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index b1e3b2f18fbc71219f21b34829cbf4e67a12739b..ec6366df6cc10781509372e9eed162705749cac1 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
index 6fc0f9cf615ff6bfa463a53f7fd8a7b9078f546e..aea4134f1fc0809934ccb6fcde7112db656aafc4 100644
Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ
diff --git a/build/classes/java/main/matrix/ListMatrix.class b/build/classes/java/main/matrix/ListMatrix.class
index a26cc8107669325fa8ce6a64eefdc4b6cb4bf6da..e60c87beca791a9a811355223e4f336d19ddeca7 100644
Binary files a/build/classes/java/main/matrix/ListMatrix.class and b/build/classes/java/main/matrix/ListMatrix.class differ
diff --git a/build/classes/java/main/matrix/Matrix.class b/build/classes/java/main/matrix/Matrix.class
index 19d764354d8b419924fd129c6f18920c18920517..164cfdd82dc5d70c66a12ef5505345961ab27add 100644
Binary files a/build/classes/java/main/matrix/Matrix.class and b/build/classes/java/main/matrix/Matrix.class differ
diff --git a/build/classes/java/main/matrix/SubMatrixInitializer.class b/build/classes/java/main/matrix/SubMatrixInitializer.class
new file mode 100644
index 0000000000000000000000000000000000000000..7e9a44ddfd6c762d72a0003dc931090c1e4d2c93
Binary files /dev/null and b/build/classes/java/main/matrix/SubMatrixInitializer.class differ
diff --git a/build/classes/java/main/model/Cell.class b/build/classes/java/main/model/Cell.class
index d09c8ecdfcbaa06e6fe470f77822326f2a5e571b..ff54bf87cd3b03b63c7ea9b8a8248506a3c69a92 100644
Binary files a/build/classes/java/main/model/Cell.class and b/build/classes/java/main/model/Cell.class differ
diff --git a/build/classes/java/main/model/automata/GameOfLifeAutomaton.class b/build/classes/java/main/model/automata/GameOfLifeAutomaton.class
index 6bd36f42deaaa9459be2cbcbd62ab2e47a4d957e..d8039840795b827f8a28d7ee92614cc242d1bbdc 100644
Binary files a/build/classes/java/main/model/automata/GameOfLifeAutomaton.class and b/build/classes/java/main/model/automata/GameOfLifeAutomaton.class differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CellularAutomatonSimulation.class.uniqueId3 b/build/tmp/compileJava/compileTransaction/stash-dir/CellularAutomatonSimulation.class.uniqueId3
new file mode 100644
index 0000000000000000000000000000000000000000..666eee34be1ba6a3882b4a01d6f8c4b665a305ca
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/CellularAutomatonSimulation.class.uniqueId3 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ConstantCellInitializer.class.uniqueId6 b/build/tmp/compileJava/compileTransaction/stash-dir/ConstantCellInitializer.class.uniqueId6
new file mode 100644
index 0000000000000000000000000000000000000000..603836f0726f5e36360c4e9845e56ce22da0e958
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/ConstantCellInitializer.class.uniqueId6 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ConstantMatrixInitializer.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/ConstantMatrixInitializer.class.uniqueId0
deleted file mode 100644
index 2f16ea4c75ab73551466ffcc6ea2bc92abdcd589..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ConstantMatrixInitializer.class.uniqueId0 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ConstantMatrixInitializer.class.uniqueId5 b/build/tmp/compileJava/compileTransaction/stash-dir/ConstantMatrixInitializer.class.uniqueId5
new file mode 100644
index 0000000000000000000000000000000000000000..51348c6e9e0dcdba09358bfd0f8cee84d7b4360a
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/ConstantMatrixInitializer.class.uniqueId5 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ListMatrix.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/ListMatrix.class.uniqueId1
deleted file mode 100644
index a26cc8107669325fa8ce6a64eefdc4b6cb4bf6da..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ListMatrix.class.uniqueId1 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ListMatrix.class.uniqueId7 b/build/tmp/compileJava/compileTransaction/stash-dir/ListMatrix.class.uniqueId7
new file mode 100644
index 0000000000000000000000000000000000000000..e60c87beca791a9a811355223e4f336d19ddeca7
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/ListMatrix.class.uniqueId7 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Matrix.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/Matrix.class.uniqueId0
new file mode 100644
index 0000000000000000000000000000000000000000..19d764354d8b419924fd129c6f18920c18920517
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/Matrix.class.uniqueId0 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/MatrixInitializer.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/MatrixInitializer.class.uniqueId2
new file mode 100644
index 0000000000000000000000000000000000000000..9bc1c897ff3cddf97bb07832e4fde607b397cfa9
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/MatrixInitializer.class.uniqueId2 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/MatrixIterator.class.uniqueId4 b/build/tmp/compileJava/compileTransaction/stash-dir/MatrixIterator.class.uniqueId4
new file mode 100644
index 0000000000000000000000000000000000000000..1c1d116d29e6152d3c9fd224885ac802b81ee476
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/MatrixIterator.class.uniqueId4 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/NextGenerationInitializer.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/NextGenerationInitializer.class.uniqueId1
new file mode 100644
index 0000000000000000000000000000000000000000..80c0fcd224a6291ccca3999b938dd923af0c1789
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/NextGenerationInitializer.class.uniqueId1 differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index 2fb9efa91e5ea4a6b34bd01510136cf77bfe6520..0b70f22a32045d9505e87c2ad93febbc0f0fb193 100644
Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ
diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/CellularAutomatonSimulationTest.class.uniqueId2 b/build/tmp/compileTestJava/compileTransaction/stash-dir/CellularAutomatonSimulationTest.class.uniqueId2
deleted file mode 100644
index 3dc3e8333d0ef9449ab895c39eb6aa4b39acc3c9..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileTestJava/compileTransaction/stash-dir/CellularAutomatonSimulationTest.class.uniqueId2 and /dev/null differ
diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/ConstantMatrixInitializerTest.class.uniqueId0 b/build/tmp/compileTestJava/compileTransaction/stash-dir/ConstantMatrixInitializerTest.class.uniqueId0
new file mode 100644
index 0000000000000000000000000000000000000000..cde4b6594d2a1ff59ef83f819d769bcea647ca47
Binary files /dev/null and b/build/tmp/compileTestJava/compileTransaction/stash-dir/ConstantMatrixInitializerTest.class.uniqueId0 differ
diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/GameOfLifeStateTest.class.uniqueId1 b/build/tmp/compileTestJava/compileTransaction/stash-dir/GameOfLifeStateTest.class.uniqueId1
deleted file mode 100644
index e06eff8f2660041a36cf720e528bcbabe7ee5edb..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileTestJava/compileTransaction/stash-dir/GameOfLifeStateTest.class.uniqueId1 and /dev/null differ
diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/ListMatrixTest.class.uniqueId1 b/build/tmp/compileTestJava/compileTransaction/stash-dir/ListMatrixTest.class.uniqueId1
new file mode 100644
index 0000000000000000000000000000000000000000..40a8c0c74fdc4d7c6ae6a9740afabb180109cbc4
Binary files /dev/null and b/build/tmp/compileTestJava/compileTransaction/stash-dir/ListMatrixTest.class.uniqueId1 differ
diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/NextGenerationInitializerTest.class.uniqueId0 b/build/tmp/compileTestJava/compileTransaction/stash-dir/NextGenerationInitializerTest.class.uniqueId0
deleted file mode 100644
index 2e7d38fee51e70409a33d1548ec57fd3a51570dc..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileTestJava/compileTransaction/stash-dir/NextGenerationInitializerTest.class.uniqueId0 and /dev/null differ
diff --git a/build/tmp/compileTestJava/previous-compilation-data.bin b/build/tmp/compileTestJava/previous-compilation-data.bin
index f0ffb969ed6cb6f01762c672e07b5f69250f8a1b..ab38118fbbff4ce536680120c3cc273e54593135 100644
Binary files a/build/tmp/compileTestJava/previous-compilation-data.bin and b/build/tmp/compileTestJava/previous-compilation-data.bin differ
diff --git a/src/main/java/matrix/ListMatrix.java b/src/main/java/matrix/ListMatrix.java
index 98538f5ebb53ded141b9be8931194248bbd80c6a..407b2dbc3557abdb4e2ae98c351a3aafa9cd5892 100644
--- a/src/main/java/matrix/ListMatrix.java
+++ b/src/main/java/matrix/ListMatrix.java
@@ -40,7 +40,7 @@ public class ListMatrix<T> implements Matrix<T> {
     for (int y =0; y<height ;y++){
       List<T> row =new ArrayList<>(width);
       for(int x=0; x<width; x++){
-        row.add(initializer.initialValueAt((new Coordinate(x, y))));
+        row.add(initializer.initialValueAt(new Coordinate(x, y)));
       }
       matrix.add(row);
     }
@@ -57,18 +57,15 @@ public class ListMatrix<T> implements Matrix<T> {
 
   @Override
   public T get(int x, int y) {
-    if(x<0 || x>= width || y<0 ||y>=height ){
-      throw new IndexOutOfBoundsException("Invalid coordinate: ("+ x+","+y+")");
-    }
+    
     return matrix.get(y).get(x);
   }
 
 
+
   @Override
   public void set(int x, int y, T newValue) {
-    if (x<0 || x>= width ||y<0 || y>= height){
-      throw new IndexOutOfBoundsException("Invalid coordinate: ("+ x + ","+y+")");
-    }
+    
     matrix.get(y).set(x, newValue);
       }
 
diff --git a/src/main/java/matrix/Matrix.java b/src/main/java/matrix/Matrix.java
index f2c908e63e1e44a2552bbf98a946fba6ba6bee6b..012e3d1fe7a1b3d09cb130d884db29da0fb79783 100644
--- a/src/main/java/matrix/Matrix.java
+++ b/src/main/java/matrix/Matrix.java
@@ -58,7 +58,7 @@ public interface Matrix<T> extends Iterable<T> {
   }
 
   default Matrix<T> subMatrix(Coordinate corner, int width, int height){
-    return null ;
+    return new ListMatrix<>(width, height, new SubMatrixInitializer<>(this, corner.x(),corner.y())); 
   }
 
 
diff --git a/src/main/java/matrix/MatrixInitializer.java b/src/main/java/matrix/MatrixInitializer.java
index 492d15c3453095569dd901b763f83337d854cae8..f93e5aebd37b0644d548260de0393f1376c934d0 100644
--- a/src/main/java/matrix/MatrixInitializer.java
+++ b/src/main/java/matrix/MatrixInitializer.java
@@ -15,4 +15,7 @@ public interface MatrixInitializer<T> {
      * @return The initial value for the specified cell.
      */
     T initialValueAt(Coordinate coordinate);
-}
+
+    
+      }
+
diff --git a/src/main/java/matrix/SubMatrixInitializer.java b/src/main/java/matrix/SubMatrixInitializer.java
new file mode 100644
index 0000000000000000000000000000000000000000..8533c62c5df656ebac71d2e1826971a8ee86edca
--- /dev/null
+++ b/src/main/java/matrix/SubMatrixInitializer.java
@@ -0,0 +1,21 @@
+package matrix;
+
+public class SubMatrixInitializer<T> implements MatrixInitializer<T> {
+    private final Matrix<T> originMatrix;
+    private final int x0;
+    private final int y0;
+
+    public SubMatrixInitializer(Matrix<T> originMatrix,int x0, int y0){
+        this.originMatrix=originMatrix;
+        this.x0=x0;
+        this.y0=y0;
+    }
+
+    @Override
+    public T initialValueAt(Coordinate coordinate){
+        int x= coordinate.x()+x0;
+        int y = coordinate.y()+y0;
+        return originMatrix.get(x,y);
+    }
+
+}
diff --git a/src/main/java/model/Cell.java b/src/main/java/model/Cell.java
index f7f62749df1c3193503dce5e366a671762967f21..d62b6057dee5f28ae640357679af0946617750e7 100644
--- a/src/main/java/model/Cell.java
+++ b/src/main/java/model/Cell.java
@@ -11,7 +11,7 @@ import java.util.List;
  */
 public class Cell<T> implements Lens<T> {
 
-    //TODO: ajouter la ou les propriétés nécessaires
+    private T value;
 
     // la liste des objets écoutant les modifications du contenu de la cellule
     private final List<OnChangeListener<T>> listeners = new ArrayList<>();
@@ -21,8 +21,8 @@ public class Cell<T> implements Lens<T> {
      * @param initialContent the value initially stored by the cell.
      */
     public Cell(T initialContent) {
-        //TODO: à compléter
-    }
+        this.value= initialContent;
+        }
 
     /** Add a {@link OnChangeListener} to react to any change of value in the cell.
      *
@@ -40,8 +40,10 @@ public class Cell<T> implements Lens<T> {
      * @param value the new content of this {@link Cell}
      */
     public void set(T value) {
-        //TODO: modifier le contenu de la cellule, puis appeler les méthodes valueChanged des
-        // listeners
+        this.value=value;
+        for (OnChangeListener<T> listener :listeners){
+            listener.valueChanged(value,value);
+        }
     }
 
     /**
@@ -50,7 +52,6 @@ public class Cell<T> implements Lens<T> {
      * @return the current content of this {@link Cell}
      */
     public T get(){
-        //TODO: à compléter
-        return null;
+        return value;
     }
 }