diff --git a/content/Week_2_5/WS_2_5_solution.ipynb b/content/Week_2_5/WS_2_5_solution.ipynb
index 22ec559ad2e63a0194cb395e44f16bfb88f934dd..0c429c3ef03a11fd29e21a25c692a7fcc94f0c72 100644
--- a/content/Week_2_5/WS_2_5_solution.ipynb
+++ b/content/Week_2_5/WS_2_5_solution.ipynb
@@ -26,7 +26,7 @@
    "id": "1c4b1a7a",
    "metadata": {},
    "source": [
-    "## Overview\n",
+    "## Part 1: Overview and Mathematical Formulation\n",
     "\n",
     "A civil engineering company wants to decide on the projects that they should do. Their objective is to minimize the environmental impact of their projects while making enough profit to keep the company running.\n",
     "\n",
@@ -36,7 +36,11 @@
     "\n",
     "The profit of each project is given by $P_i$ where $i\\in [1,(...),6]$ is the index of the project: $P_i=[120,65,99,110,33,99]$\n",
     "\n",
-    "The company wants to do 3 out of the 6 projects, therefore please formulate the mathematical program that allows solving the problem, also knowing that the projects of type 2 must be at least as many as the ones of type 1 and that the profit of all projects together must be greater or equal than $250$ ($\\beta$)\n",
+    "The company is operating with the following constraints, please formulate the mathematical program that allows solving the problem:\n",
+    "\n",
+    "- The company wants to do 3 out of the 6 projects\n",
+    "- the projects of type 2 must be at least as many as the ones of type 1 \n",
+    "- the profit of all projects together must be greater or equal than $250$ ($\\beta$)\n",
     "\n",
     "<b>You are not allowed to use ChatGPT for this task otherwise you won’t learn ;)</b>"
    ]
@@ -48,7 +52,7 @@
    "source": [
     "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%\">\n",
     "<p>\n",
-    "<b>Task 1: Writting the mathematical formulation</b>   \n",
+    "<b>Task 1: Writing the mathematical formulation</b>   \n",
     "\n",
     "Write down every formulation and constrain that is relevant to solve this optimization problem.\n",
     "</p>\n",
@@ -99,7 +103,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 1,
    "id": "ae96cbb5",
    "metadata": {},
    "outputs": [],
@@ -123,7 +127,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 2,
    "id": "d5cba9fe",
    "metadata": {},
    "outputs": [],
@@ -150,9 +154,9 @@
    "id": "88d658e6",
    "metadata": {},
    "source": [
-    "## Create model with Gurobi\n",
+    "## Part 2: Create model with Gurobi\n",
     "\n",
-    "Remember that examples of using Gurobi to create and optimize a model are provided in the online textbook, and generally consist of the following steps (the first instantiates a class and the rest are executed as methods of the class):\n",
+    "**Remember that examples of using Gurobi to create and optimize a model are provided in the online textbook**, and generally consist of the following steps (the first instantiates a class and the rest are executed as methods of the class):\n",
     "\n",
     "1. Define the model (instantiate the class)\n",
     "2. Define variables\n",
@@ -205,7 +209,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 3,
    "id": "8d008ba9",
    "metadata": {},
    "outputs": [
@@ -213,8 +217,14 @@
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "Gurobi Optimizer version 9.5.1 build v9.5.1rc2 (win64)\n",
-      "Thread count: 4 physical cores, 8 logical processors, using up to 8 threads\n",
+      "Set parameter Username\n",
+      "Set parameter LicenseID to value 2588551\n",
+      "Academic license - for non-commercial use only - expires 2025-11-21\n",
+      "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (win64 - Windows 11.0 (22631.2))\n",
+      "\n",
+      "CPU model: 13th Gen Intel(R) Core(TM) i7-1365U, instruction set [SSE2|AVX|AVX2]\n",
+      "Thread count: 10 physical cores, 12 logical processors, using up to 12 threads\n",
+      "\n",
       "Optimize a model with 3 rows, 6 columns and 18 nonzeros\n",
       "Model fingerprint: 0xa9bc0e77\n",
       "Variable types: 0 continuous, 6 integer (6 binary)\n",
@@ -223,7 +233,7 @@
       "  Objective range  [5e+01, 1e+02]\n",
       "  Bounds range     [1e+00, 1e+00]\n",
       "  RHS range        [3e+00, 3e+02]\n",
-      "Presolve time: 0.00s\n",
+      "Presolve time: 0.01s\n",
       "Presolved: 3 rows, 6 columns, 17 nonzeros\n",
       "Variable types: 0 continuous, 6 integer (6 binary)\n",
       "Found heuristic solution: objective 228.0000000\n",
@@ -234,10 +244,10 @@
       "    Nodes    |    Current Node    |     Objective Bounds      |     Work\n",
       " Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time\n",
       "\n",
-      "     0     0 infeasible    0       198.00000  198.00000  0.00%     -    0s\n",
+      "     0     0     cutoff    0       198.00000  198.00000  0.00%     -    0s\n",
       "\n",
-      "Explored 1 nodes (3 simplex iterations) in 0.01 seconds (0.00 work units)\n",
-      "Thread count was 8 (of 8 available processors)\n",
+      "Explored 1 nodes (3 simplex iterations) in 0.05 seconds (0.00 work units)\n",
+      "Thread count was 12 (of 12 available processors)\n",
       "\n",
       "Solution count 2: 198 228 \n",
       "\n",
@@ -289,13 +299,12 @@
      "text": [
       "Model structure:\n",
       "Minimize\n",
-      "  <gurobi.LinExpr: 90.0 x[0] + 45.0 x[1] + 78.0 x[2] + 123.0 x[3] + 48.0 x[4] + 60.0 x[5]>\n",
+      "  90.0 x[0] + 45.0 x[1] + 78.0 x[2] + 123.0 x[3] + 48.0 x[4] + 60.0 x[5]\n",
       "Subject To\n",
-      "  Select_Projects: <gurobi.LinExpr: x[0] + x[1] + x[2] + x[3] + x[4] + x[5]> = 3\n",
-      "Type_Constraint: <gurobi.LinExpr: -1.0 x[0] + -1.0 x[1] + -1.0 x[2] + x[3] + x[4] +\n",
-      " x[5]> >= 0\n",
-      "Minimum_Profit: <gurobi.LinExpr: 120.0 x[0] + 65.0 x[1] + 99.0 x[2] + 110.0 x[3] + 33.0\n",
-      " x[4] + 99.0 x[5]> >= 250\n",
+      "  Select_Projects: x[0] + x[1] + x[2] + x[3] + x[4] + x[5] = 3\n",
+      "  Type_Constraint: -1.0 x[0] + -1.0 x[1] + -1.0 x[2] + x[3] + x[4] + x[5] >= 0\n",
+      "Minimum_Profit: 120.0 x[0] + 65.0 x[1] + 99.0 x[2] + 110.0 x[3] + 33.0 x[4] + 99.0 x[5]\n",
+      " >= 250\n",
       "Binaries\n",
       "  ['x[0]', 'x[1]', 'x[2]', 'x[3]', 'x[4]', 'x[5]']\n",
       "Optimal Solution:\n",
@@ -304,6 +313,14 @@
       "Project 6: Selected\n",
       "Optimal Objective function Value 198.0\n"
      ]
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "C:\\Users\\jdding\\AppData\\Local\\Temp\\ipykernel_12768\\2324086517.py:6: DeprecationWarning: Model.display() is deprecated\n",
+      "  model.display()\n"
+     ]
     }
    ],
    "source": [
@@ -345,7 +362,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 5,
    "id": "9f2f9b6d",
    "metadata": {},
    "outputs": [
@@ -355,7 +372,7 @@
        "<gurobi.Constr *Awaiting Model Update*>"
       ]
      },
-     "execution_count": 15,
+     "execution_count": 5,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -372,7 +389,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 6,
    "id": "19040bd6",
    "metadata": {},
    "outputs": [
@@ -380,8 +397,11 @@
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "Gurobi Optimizer version 9.5.1 build v9.5.1rc2 (win64)\n",
-      "Thread count: 4 physical cores, 8 logical processors, using up to 8 threads\n",
+      "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (win64 - Windows 11.0 (22631.2))\n",
+      "\n",
+      "CPU model: 13th Gen Intel(R) Core(TM) i7-1365U, instruction set [SSE2|AVX|AVX2]\n",
+      "Thread count: 10 physical cores, 12 logical processors, using up to 12 threads\n",
+      "\n",
       "Optimize a model with 4 rows, 6 columns and 24 nonzeros\n",
       "Model fingerprint: 0x37d09666\n",
       "Variable types: 0 continuous, 6 integer (6 binary)\n",
@@ -399,7 +419,7 @@
       "Presolve: All rows and columns removed\n",
       "\n",
       "Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)\n",
-      "Thread count was 1 (of 8 available processors)\n",
+      "Thread count was 1 (of 12 available processors)\n",
       "\n",
       "Solution count 1: 228 \n",
       "\n",
@@ -407,15 +427,14 @@
       "Best objective 2.280000000000e+02, best bound 2.280000000000e+02, gap 0.0000%\n",
       "Model structure:\n",
       "Minimize\n",
-      "  <gurobi.LinExpr: 90.0 x[0] + 45.0 x[1] + 78.0 x[2] + 123.0 x[3] + 48.0 x[4] + 60.0 x[5]>\n",
+      "  90.0 x[0] + 45.0 x[1] + 78.0 x[2] + 123.0 x[3] + 48.0 x[4] + 60.0 x[5]\n",
       "Subject To\n",
-      "  Select_Projects: <gurobi.LinExpr: x[0] + x[1] + x[2] + x[3] + x[4] + x[5]> = 3\n",
-      "Type_Constraint: <gurobi.LinExpr: -1.0 x[0] + -1.0 x[1] + -1.0 x[2] + x[3] + x[4] +\n",
-      " x[5]> >= 0\n",
-      "Minimum_Profit: <gurobi.LinExpr: 120.0 x[0] + 65.0 x[1] + 99.0 x[2] + 110.0 x[3] + 33.0\n",
-      " x[4] + 99.0 x[5]> >= 250\n",
-      "Impact_Constraint: <gurobi.LinExpr: 99960.0 x[0] + 45.0 x[1] + 78.0 x[2] + 123.0 x[3] +\n",
-      " 48.0 x[4] + 60.0 x[5]> <= 100000\n",
+      "  Select_Projects: x[0] + x[1] + x[2] + x[3] + x[4] + x[5] = 3\n",
+      "  Type_Constraint: -1.0 x[0] + -1.0 x[1] + -1.0 x[2] + x[3] + x[4] + x[5] >= 0\n",
+      "Minimum_Profit: 120.0 x[0] + 65.0 x[1] + 99.0 x[2] + 110.0 x[3] + 33.0 x[4] + 99.0 x[5]\n",
+      " >= 250\n",
+      "Impact_Constraint: 99960.0 x[0] + 45.0 x[1] + 78.0 x[2] + 123.0 x[3] + 48.0 x[4] + 60.0\n",
+      " x[5] <= 100000\n",
       "Binaries\n",
       "  ['x[0]', 'x[1]', 'x[2]', 'x[3]', 'x[4]', 'x[5]']\n",
       "Optimal Solution:\n",
@@ -424,6 +443,14 @@
       "Project 6: Selected\n",
       "Optimal Objective function Value 228.0\n"
      ]
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "C:\\Users\\jdding\\AppData\\Local\\Temp\\ipykernel_12768\\1357951651.py:8: DeprecationWarning: Model.display() is deprecated\n",
+      "  model.display()\n"
+     ]
     }
    ],
    "source": [
@@ -480,7 +507,7 @@
  ],
  "metadata": {
   "kernelspec": {
-   "display_name": "Python 3 (ipykernel)",
+   "display_name": "mude-week-2-5",
    "language": "python",
    "name": "python3"
   },
@@ -494,7 +521,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.9.18"
+   "version": "3.12.7"
   }
  },
  "nbformat": 4,