diff --git "a/infobank/Articles/\303\230ving 9.pdf" "b/infobank/Articles/\303\230ving 9.pdf"
new file mode 100644
index 0000000000000000000000000000000000000000..27a3d3e4df6a5b7cb9be4ca5054e53b53e492e26
Binary files /dev/null and "b/infobank/Articles/\303\230ving 9.pdf" differ
diff --git a/templates/_folder_Exercises/O09/MyArray.cpp b/templates/_folder_Exercises/O09/MyArray.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ddddc2946f5e2086305bd41d7121ef813081e029
--- /dev/null
+++ b/templates/_folder_Exercises/O09/MyArray.cpp
@@ -0,0 +1,5 @@
+#include "MyArray.h"
+
+// BEGIN 5d
+
+// END 5d
\ No newline at end of file
diff --git a/templates/_folder_Exercises/O09/MyArray.h b/templates/_folder_Exercises/O09/MyArray.h
new file mode 100644
index 0000000000000000000000000000000000000000..52b370f66c00e6b8949c6625389a0633d39ea044
--- /dev/null
+++ b/templates/_folder_Exercises/O09/MyArray.h
@@ -0,0 +1,22 @@
+#pragma once
+#include <iostream>
+#include <exception>
+
+// BEGIN 5a
+
+// END 5a
+class MyArray
+{
+    private:
+        // BEGIN 5b
+
+        // END 5b
+    public:
+        // BEGIN 5c
+
+        // END 5c
+};
+
+// BEGIN 5d
+
+// END 5d
\ No newline at end of file
diff --git a/templates/_folder_Exercises/O09/Stopwatch.cpp b/templates/_folder_Exercises/O09/Stopwatch.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a4be1c713aee747fd38ae5ad501e6a18470ac223
--- /dev/null
+++ b/templates/_folder_Exercises/O09/Stopwatch.cpp
@@ -0,0 +1,12 @@
+#include "Stopwatch.h"
+
+void Stopwatch::start() {
+    startTime = std::chrono::steady_clock::now();
+}
+
+double Stopwatch::stop() {
+    std::chrono::time_point endTime = std::chrono::steady_clock::now();
+    long durationInMicroseconds = std::chrono::duration_cast<std::chrono::microseconds>(endTime - startTime).count();
+    double durationInSeconds = double(durationInMicroseconds)/1000000.0;
+    return durationInSeconds;
+}
\ No newline at end of file
diff --git a/templates/_folder_Exercises/O09/Stopwatch.h b/templates/_folder_Exercises/O09/Stopwatch.h
new file mode 100644
index 0000000000000000000000000000000000000000..5d7b1c36ed69d9685d1072f1fcc8b332dd7d18b6
--- /dev/null
+++ b/templates/_folder_Exercises/O09/Stopwatch.h
@@ -0,0 +1,19 @@
+#pragma once
+#include <chrono>
+
+// This class abstracts some (somewhat) nasty code that is
+// definitely outside the scope of this course.
+// Its main purpose is to return the amount of time 
+// taken by the program in main.cpp
+
+// Calling start() starts the stopwatch
+// Calling stop() stops it and returns the amount of time
+// that has elapsed since start() was called in seconds
+
+class Stopwatch {
+    std::chrono::time_point<std::chrono::steady_clock> startTime;
+
+public:
+    void start();
+    double stop();
+};
\ No newline at end of file
diff --git a/templates/_folder_Exercises/O09/main.cpp b/templates/_folder_Exercises/O09/main.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a646b8266d9aa6b67e5f2af5362f1f3ee2f246cf
--- /dev/null
+++ b/templates/_folder_Exercises/O09/main.cpp
@@ -0,0 +1,29 @@
+#include "Stopwatch.h"
+#include "measurePerformance.h"
+#include "optimizeVector.h"
+#include "optimizationTask.h"
+#include "templatefunctions.h"
+#include "MyArray.h"
+
+
+
+int main() {
+    // Oppgave 1
+    //measurePerformanceUnique();
+    //measurePerformanceShared();
+    //measurePerformanceStack();
+    //measurePerformanceHeap();
+
+    // Oppgave 2
+    //optimizeVector();
+
+    // Oppgave 3
+    //optimizationTask();
+
+    // Oppgave 4
+    //testTemplateFunctions();
+    
+    // Oppgave 5
+    //testMyArray();
+    return 0;
+}
\ No newline at end of file
diff --git a/templates/_folder_Exercises/O09/measurePerformance.cpp b/templates/_folder_Exercises/O09/measurePerformance.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e1117bdfaf793d55f2ec43dbf368fca45ae676ac
--- /dev/null
+++ b/templates/_folder_Exercises/O09/measurePerformance.cpp
@@ -0,0 +1,9 @@
+#include "Stopwatch.h"
+#include <memory>
+#include <array>
+#include <iostream>
+
+
+// BEGIN 1a
+
+// END 1a
\ No newline at end of file
diff --git a/templates/_folder_Exercises/O09/measurePerformance.h b/templates/_folder_Exercises/O09/measurePerformance.h
new file mode 100644
index 0000000000000000000000000000000000000000..aa67ec7ec9782e452c81de4d85d965d52fca5d45
--- /dev/null
+++ b/templates/_folder_Exercises/O09/measurePerformance.h
@@ -0,0 +1,7 @@
+#pragma once
+
+double measurePerformanceUnique();
+double measurePerformanceShared();
+
+double measurePerformanceStack();
+double measurePerformanceHeap();
diff --git a/templates/_folder_Exercises/O09/optimizationTask.cpp b/templates/_folder_Exercises/O09/optimizationTask.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8516f47fb939cac82d2b1474628b7151655161be
--- /dev/null
+++ b/templates/_folder_Exercises/O09/optimizationTask.cpp
@@ -0,0 +1,49 @@
+#include "Stopwatch.h"
+#include <vector>
+#include <iostream>
+
+// Utdelt program til oppgave 3
+
+// BEGIN 3b
+double sumMatrix(std::vector<std::vector<double>> matrix){ 
+    double sum = 0;
+    for (int row = 0; row < matrix.size(); row++){
+        for (int col = 0; col < matrix.size(); col++){
+            double value = matrix.at(row).at(col);
+            sum += value;            
+        }
+    }
+    return sum;
+}
+
+void setDiagonalValue(std::vector<std::vector<double>>& matrix, double newValue){
+    for (int row = 0; row < matrix.size(); row++){
+        for (int col = 0; col < matrix.size(); col++){
+            bool isDiagonal = (row == col); 
+            if (isDiagonal){
+                matrix.at(row).at(col) = newValue;
+            }
+        }
+    }
+}
+
+void optimizationTask(){
+    Stopwatch stopwatch;
+    stopwatch.start();
+    const int matrixSize = 10000;
+
+    // Oppretter nullmatrisen direkte ved bruk av konstruktøren som tar inn antall og verdi.
+    std::vector<std::vector<double>> matrix(matrixSize, std::vector<double>(matrixSize, 0.0));
+
+    // Setter alle elementer på diagonalen til 0.41
+    setDiagonalValue(matrix, 0.41);
+    
+    // Summerer alle elementene i matrisen
+    double total = sumMatrix(matrix);
+
+    double coolerNumber = total + 2;
+    std::cout << "TDT" << coolerNumber << std::endl;
+
+    std::cout << "Time taken: " << stopwatch.stop() << "seconds" << std::endl;
+}
+// END 3b
\ No newline at end of file
diff --git a/templates/_folder_Exercises/O09/optimizationTask.h b/templates/_folder_Exercises/O09/optimizationTask.h
new file mode 100644
index 0000000000000000000000000000000000000000..cf78e2f295e4dbccd2a5dcf9a2440a12811cf83e
--- /dev/null
+++ b/templates/_folder_Exercises/O09/optimizationTask.h
@@ -0,0 +1,3 @@
+#pragma once
+
+void optimizationTask();
\ No newline at end of file
diff --git a/templates/_folder_Exercises/O09/optimizeVector.cpp b/templates/_folder_Exercises/O09/optimizeVector.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..408642e87e50b2c0fbdc535b467b688bbb31b281
--- /dev/null
+++ b/templates/_folder_Exercises/O09/optimizeVector.cpp
@@ -0,0 +1,20 @@
+#include "Stopwatch.h"
+#include "optimizeVector.h"
+#include <vector>
+#include <iostream>
+
+
+// BEGIN 2a
+
+// END 2a
+
+
+void optimizeVector(){
+    // BEGIN 2d
+    
+    // END 2d
+
+    // BEGIN 2e
+    
+    // END 2e   
+}
\ No newline at end of file
diff --git a/templates/_folder_Exercises/O09/optimizeVector.h b/templates/_folder_Exercises/O09/optimizeVector.h
new file mode 100644
index 0000000000000000000000000000000000000000..2bb4d01a5eece9adeda8ca5d82a03dd32d4d0b97
--- /dev/null
+++ b/templates/_folder_Exercises/O09/optimizeVector.h
@@ -0,0 +1,4 @@
+#pragma once
+
+void testVector();
+void optimizeVector();
\ No newline at end of file
diff --git a/templates/_folder_Exercises/O09/templatefunctions.cpp b/templates/_folder_Exercises/O09/templatefunctions.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..dc4e46d785d36d49cf67d4c9a395f32297ca51a6
--- /dev/null
+++ b/templates/_folder_Exercises/O09/templatefunctions.cpp
@@ -0,0 +1,5 @@
+#include "templatefunctions.h"
+
+void testTemplateFunctions(){
+    // Her kan du teste templatefunksjonene dine
+}
diff --git a/templates/_folder_Exercises/O09/templatefunctions.h b/templates/_folder_Exercises/O09/templatefunctions.h
new file mode 100644
index 0000000000000000000000000000000000000000..dbbbc813a1dc102da91eed689532079f67f7c8ec
--- /dev/null
+++ b/templates/_folder_Exercises/O09/templatefunctions.h
@@ -0,0 +1,15 @@
+#pragma once
+#include <random>
+#include <iostream>
+#include <string>
+#include <vector>
+
+// BEGIN 4a
+
+// END 4a
+
+// BEGIN 4b
+
+// END 4b
+
+void testTemplateFunctions();
\ No newline at end of file