diff --git a/datascienceintro/AutoGrad.ipynb b/datascienceintro/AutoGrad.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..62ce94339cecbb9fc28f874bb8e5585ec78f76c5
--- /dev/null
+++ b/datascienceintro/AutoGrad.ipynb
@@ -0,0 +1,379 @@
+{
+  "cells": [
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "xyl4csp7yEbk"
+      },
+      "source": [
+        "# Computing Gradients in PyTorch\n",
+        "\n",
+        "[PyTorch](https://pytorch.org/) is a comprehensive library that is primarily used for machine learning. However, it can also be used as an effective way to handle matrix operations or gradients.\n",
+        "In particular for the latter, we can exploit the fact that training neural networks requires calculating gradients efficiently as this is the backbone of the algorithms for training the networks.\n",
+        "\n",
+        "Therefore, if we can formute our problem at hand in such a way that we can use PyTorch, we can use the inbuilt methods to compute and obtain the gradients.\n",
+        "In PyTorch, this is done via [AutoGrad](https://pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html).\n",
+        "\n",
+        "In this example, we use a simple sine-function: Using such a simple function makes it easy for any neural network to learn the functional dependency. Moreover, we can compare this to the well known derivative: $\\frac{d \\sin(x)}{d x} = \\cos(x)$, which makes it immediately obvious if we have learned the correct gradient."
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": 1,
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "id": "rxyiP-tSyIPg",
+        "outputId": "05dd72f4-c7d5-4af9-ba67-2a55c08bf1b5"
+      },
+      "outputs": [
+        {
+          "name": "stdout",
+          "output_type": "stream",
+          "text": [
+            "Using cpu device\n"
+          ]
+        }
+      ],
+      "source": [
+        "import torch\n",
+        "from torch import nn\n",
+        "import torch.optim as optim\n",
+        "import torch.nn.functional as F\n",
+        "\n",
+        "\n",
+        "import matplotlib.pyplot as plt\n",
+        "import seaborn as sns\n",
+        "import numpy as np\n",
+        "\n",
+        "# Get cpu or gpu device for training.\n",
+        "device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n",
+        "print(f\"Using {device} device\")\n",
+        "\n",
+        "seed = 42\n",
+        "np.random.seed(seed)\n",
+        "torch.manual_seed(seed)\n",
+        "torch.cuda.manual_seed(seed)\n"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "KX6GlXtUysE9"
+      },
+      "source": [
+        "## Training Data\n",
+        "\n",
+        "In this simple example, we will use $f(x) = \\sin(x)$ to generate training data.\n",
+        "First of all, the releationship is very simple, i.e. even small networks will be able to learn this quickly. Additionally, we know what the gradient will look like: $\\frac{dy}{dx} = \\cos(x)$, i.e. we know immediately if the network has learned the correct gradient.\n",
+        "\n",
+        "The function [torch.linspace](https://pytorch.org/docs/stable/generated/torch.linspace.html) is the equivalent to numpy version but produces a tensor directly.\n",
+        "The part ```.view(-1,1)``` re-shapes the resulting array such that we have one feature: torch.linspace creates a tensor with shape (100), i.e. a 1D tensor with 100 elements. The ```-1``` is a placeholder to tell PyTorch to infer the length automatically from the number of elements in the original tensor. The ```1``` tells PyTorch to reformat the data such that we have one feature. The resulting tensor has a shape of (100,1), i.e. 100 rows of 1 feature each."
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "aeKM4U2ellXN"
+      },
+      "source": [
+        "**Exercise**\n",
+        "\n",
+        "Create training data ```x_train``` and ```y_train``` for a $sin(x)$ function in the interval $x_{train} \\in (0, 2\\pi)$.\n",
+        "\n",
+        "Plot the resulting training data."
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "id": "Ta5rGSisl58h"
+      },
+      "outputs": [],
+      "source": [
+        "##\n",
+        "## Your code here\n",
+        "##"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "JoWaGzuPl7tm"
+      },
+      "source": [
+        "**Solution**"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "mu-cy0lXyu7z"
+      },
+      "source": [
+        "## Network Definition and Training\n",
+        "\n",
+        "We now define a very small neural network, for example a \"shallow\" network with just three fully connected layers.\n",
+        "\n",
+        "- How many input nodes do we need?\n",
+        "- How many output nodes do we need?\n",
+        "\n",
+        "Here, we need one input node, since we pass one value at the time to the network: $y = \\sin(x)$.\n",
+        "\n",
+        "Similarly, we only need one output node as we want the network to learn a single number."
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "LKl2PBVxl_H3"
+      },
+      "source": [
+        "**Exercise**\n",
+        "\n",
+        "Write a class for a small neural network with three fully-connected (linear) layers and $\\tanh(x)$ as activatin function.\n",
+        "\n",
+        "Discuss how many input and output nodes the network needs."
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "id": "yyY9odYjmQMm"
+      },
+      "outputs": [],
+      "source": [
+        "class NeuralNetwork(nn.Module):\n",
+        "   def __init__(self):\n",
+        "        super(NeuralNetwork, self).__init__()\n",
+        "        ##\n",
+        "        ## your code here\n",
+        "        ##\n",
+        "\n",
+        "   def forward(self, x):\n",
+        "        ##\n",
+        "        ## your code here\n",
+        "        ##\n",
+        "       return x\n",
+        "\n",
+        "model = NeuralNetwork().to(device)\n",
+        "print(model)"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "id": "AxNeglAYzqzf",
+        "outputId": "3ac54803-87d8-4b10-cf43-3900fc8987e7"
+      },
+      "outputs": [
+        {
+          "name": "stdout",
+          "output_type": "stream",
+          "text": [
+            "Epoch 0/1000, Total Loss: 1.043527\n",
+            "Epoch 100/1000, Total Loss: 0.000421\n",
+            "Epoch 200/1000, Total Loss: 0.000122\n",
+            "Epoch 300/1000, Total Loss: 0.000928\n",
+            "Epoch 400/1000, Total Loss: 0.000005\n",
+            "Epoch 500/1000, Total Loss: 0.000288\n",
+            "Epoch 600/1000, Total Loss: 0.000004\n",
+            "Epoch 700/1000, Total Loss: 0.000003\n",
+            "Epoch 800/1000, Total Loss: 0.000210\n",
+            "Epoch 900/1000, Total Loss: 0.000007\n"
+          ]
+        }
+      ],
+      "source": [
+        "# Train model\n",
+        "\n",
+        "\n",
+        "# Define the optimizer and loss function\n",
+        "optimizer = # YOUR CODE HERE\n",
+        "\n",
+        "# Training loop\n",
+        "num_epochs = 1000\n",
+        "loss_history = []\n",
+        "\n",
+        "for epoch in range(num_epochs):\n",
+        "    # Enable gradient tracking for time steps\n",
+        "    x_train.requires_grad = True\n",
+        "\n",
+        "    # Forward pass: Predict\n",
+        "    predictions = # YOUR CODE HERE\n",
+        "\n",
+        "    # Compute the data loss (difference from sin(x))\n",
+        "    # using the mean squared error as a loss-function for regression\n",
+        "    data_loss = torch.mean((predictions - y_train) ** 2)\n",
+        "\n",
+        "    # Compute the gradient dt/dx using torch.autograd.grad\n",
+        "    dy_train = torch.autograd.grad(\n",
+        "        outputs=predictions,\n",
+        "        inputs=x_train,\n",
+        "        grad_outputs=torch.ones_like(predictions),\n",
+        "        create_graph=True\n",
+        "    )[0]\n",
+        "\n",
+        "    # Physics loss: Enforce the relationship dy/dx = cos(x)\n",
+        "    physics_loss = torch.mean((# YOUR CODE HERE#) ** 2)\n",
+        "\n",
+        "    # Total loss: Combine data and physics losses\n",
+        "    total_loss = data_loss + physics_loss\n",
+        "\n",
+        "    # Backward pass and optimization step\n",
+        "    # YOUR CODE HERE\n",
+        "    # YOUR CODE HERE\n",
+        "    # YOUR CODE HERE\n",
+        "\n",
+        "    # Record the loss\n",
+        "    loss_history.append(total_loss.item())\n",
+        "\n",
+        "    # Print progress every 100 epochs\n",
+        "    if epoch % 100 == 0:\n",
+        "        print(f\"Epoch {epoch}/{num_epochs}, Total Loss: {total_loss.item():.6f}\")"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": 5,
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/",
+          "height": 455
+        },
+        "id": "wpmM_03k0gZh",
+        "outputId": "98b8277d-e929-4c50-bb25-204b83fb47cd"
+      },
+      "outputs": [
+        {
+          "data": {
+            "image/png": "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t/1dd92lgoICjR49Wt99950++ugjPfXUUxo1atTZfA2/CnMc7bkh3AAAEFBn1XNzww036MYbb9Sdd96pwsJCpaenKzw8XAcOHNDUqVN11113ndH7DB48WPv379eECROUl5enbt26adGiRd5Bxjk5Od4eGklKSUnR4sWL9cADD6hLly5q0aKFRo8erTFjxpzN1/ArOz03AABYwmYYtR8UkpiYqM8//1wXXnihXnnlFT3//PNav3693n//fU2YMEFbt271R62mcLlcio2NVVFRkWJiYvz2OX+ctVrZ2/bp6Zu66JZegRnEDABAqKrN7++zuix16NAhNWrUSJL08ccf68Ybb5TdbtfFF1+sn3766WzeMuTYmS0FAIAlzirctGnTRvPnz1dubq4WL16sa6+9VpK0b98+v/aGBJMw7zo3HosrAQCgfjmrcDNhwgQ9+OCDSktLU+/evZWRkSGpshene/fuphYYrOws4gcAgCXOakDxzTffrEsvvVR79+71ua/T1VdfrUGDBplWXDAL47IUAACWOKtwI0nJyclKTk723h38vPPOO+MF/OqDqnVuWMQPAIDAOqvLUh6PR48//rhiY2PVsmVLtWzZUnFxcXriiSfkYYyJJG6/AACAVc6q52bcuHF69dVXNWXKFPXp00eStHz5ck2aNElHjhzRk08+aWqRwSjMUZkbK9yEGwAAAumsws2//vUvvfLKK967gUvyLqp39913E24kRRxdobjCTU8WAACBdFaXpQoKCtS+ffsTtrdv314FBQXnXFQoCD/ac1NGzw0AAAF1VuGma9eueuGFF07Y/sILL6hLly7nXFQoCA+rPLXl9NwAABBQZ3VZ6umnn1b//v31ySefeNe4WblypXJzc7Vw4UJTCwxWVT03hBsAAALrrHpurrjiCn333XcaNGiQCgsLVVhYqBtvvFHffPON3njjDbNrDEpVY24INwAABNZZr3PTvHnzEwYOb9y4Ua+++qpmzJhxzoUFO++YmwrG3AAAEEhn1XOD0+OyFAAA1iDc+EnVgOKyCsINAACBRLjxE8bcAABgjVqNubnxxhtPub+wsPBcagkpx9a5IdwAABBItQo3sbGxp90/bNiwcyooVDDmBgAAa9Qq3Lz++uv+qiPkRHgX8WO2FAAAgcSYGz+JoOcGAABLEG78pOqy1Kafi/R9frHF1QAAUH8Qbvwk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atu2rebPn69OnTpZ9RUAAEAdYvk6N4EW6lPBAQAIRbX5/W35CsUAAABmItwAAICQQrgBAAAhhXADAABCCuEGAACEFMINAAAIKYQbAAAQUgg3AAAgpBBuAABASCHcAACAkGL5vaUCrepuEy6Xy+JKAADAmar6vX0md42qd+GmuLhYkpSSkmJxJQAAoLaKi4sVGxt7yjb17saZHo9He/bsUaNGjWSz2Ux9b5fLpZSUFOXm5nJTTj/iPAcG5zlwONeBwXkODH+dZ8MwVFxcrObNm8tuP/WomnrXc2O323Xeeef59TNiYmL4ixMAnOfA4DwHDuc6MDjPgeGP83y6HpsqDCgGAAAhhXADAABCCuHGRE6nUxMnTpTT6bS6lJDGeQ4MznPgcK4Dg/McGHXhPNe7AcUAACC00XMDAABCCuEGAACEFMINAAAIKYQbk0ybNk1paWmKjIxUenq6Vq1aZXVJQWXy5Mnq1auXGjVqpKZNm2rgwIHavn27T5sjR45o1KhRSkhIUMOGDXXTTTcpPz/fp01OTo769++v6OhoNW3aVA899JAqKioC+VWCypQpU2Sz2XT//fd7t3GezbF79279v//3/5SQkKCoqCh17txZa9as8e43DEMTJkxQs2bNFBUVpczMTH3//fc+71FQUKChQ4cqJiZGcXFx+uMf/6iDBw8G+qvUaW63W+PHj1erVq0UFRWl888/X0888YTPEv2c69pbtmyZBgwYoObNm8tms2n+/Pk++806p5s2bdJll12myMhIpaSk6OmnnzbnCxg4Z7NnzzYiIiKM1157zfjmm2+MO+64w4iLizPy8/OtLi1o9O3b13j99deNLVu2GBs2bDCuv/56IzU11Th48KC3zZ133mmkpKQY2dnZxpo1a4yLL77YuOSSS7z7KyoqjE6dOhmZmZnG+vXrjYULFxqJiYnG2LFjrfhKdd6qVauMtLQ0o0uXLsbo0aO92znP566goMBo2bKlcfvttxtff/21sWPHDmPx4sXGDz/84G0zZcoUIzY21pg/f76xceNG47e//a3RqlUr4/Dhw942/fr1M7p27Wp89dVXxhdffGG0adPGGDJkiBVfqc568sknjYSEBOPDDz80du7cabz77rtGw4YNjX/+85/eNpzr2lu4cKExbtw4Y+7cuYYkY968eT77zTinRUVFRlJSkjF06FBjy5Ytxttvv21ERUUZL7/88jnXT7gxQe/evY1Ro0Z5X7vdbqN58+bG5MmTLawquO3bt8+QZHz++eeGYRhGYWGhER4ebrz77rveNlu3bjUkGStXrjQMo/Ivo91uN/Ly8rxtXnrpJSMmJsYoLS0N7Beo44qLi422bdsaS5YsMa644gpvuOE8m2PMmDHGpZdeetL9Ho/HSE5ONv72t795txUWFhpOp9N4++23DcMwjG+//daQZKxevdrb5r///a9hs9mM3bt3+6/4INO/f3/jD3/4g8+2G2+80Rg6dKhhGJxrMxwfbsw6py+++KIRHx/v83NjzJgxRrt27c65Zi5LnaOysjKtXbtWmZmZ3m12u12ZmZlauXKlhZUFt6KiIklS48aNJUlr165VeXm5z3lu3769UlNTved55cqV6ty5s5KSkrxt+vbtK5fLpW+++SaA1dd9o0aNUv/+/X3Op8R5NsuCBQvUs2dP/e53v1PTpk3VvXt3zZw507t/586dysvL8znPsbGxSk9P9znPcXFx6tmzp7dNZmam7Ha7vv7668B9mTrukksuUXZ2tr777jtJ0saNG7V8+XJdd911kjjX/mDWOV25cqUuv/xyRUREeNv07dtX27dv16+//npONda7e0uZ7cCBA3K73T4/6CUpKSlJ27Zts6iq4ObxeHT//ferT58+6tSpkyQpLy9PERERiouL82mblJSkvLw8b5ua/j9U7UOl2bNna926dVq9evUJ+zjP5tixY4deeuklZWVl6S9/+YtWr16t++67TxERERo+fLj3PNV0Hquf56ZNm/rsDwsLU+PGjTnP1TzyyCNyuVxq3769HA6H3G63nnzySQ0dOlSSONd+YNY5zcvLU6tWrU54j6p98fHxZ10j4QZ1zqhRo7RlyxYtX77c6lJCTm5urkaPHq0lS5YoMjLS6nJClsfjUc+ePfXUU09Jkrp3764tW7Zo+vTpGj58uMXVhZZ33nlHb775pt566y1deOGF2rBhg+6//341b96cc12PcVnqHCUmJsrhcJwwmyQ/P1/JyckWVRW87rnnHn344Yf67LPPfO7enpycrLKyMhUWFvq0r36ek5OTa/z/ULUPlZed9u3bp4suukhhYWEKCwvT559/rueee05hYWFKSkriPJugWbNm6tixo8+2Dh06KCcnR9Kx83SqnxvJycnat2+fz/6KigoVFBRwnqt5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",
+            "text/plain": [
+              "<Figure size 640x480 with 1 Axes>"
+            ]
+          },
+          "metadata": {},
+          "output_type": "display_data"
+        }
+      ],
+      "source": [
+        "sns.lineplot(loss_history, label='Training loss')\n",
+        "plt.xlabel('Epoch')\n",
+        "plt.ylabel('Loss')\n",
+        "plt.show()"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "xnVeLeA211hL"
+      },
+      "source": [
+        "# Plot the Gradient\n",
+        "\n",
+        "We now check if the network has learned the correct gradient, i.e.  $\\frac{dy}{dx} = \\cos(x)$\n",
+        "\n",
+        "We generate some independent numbers on the same domain, obtain the predictions $\\hat{y}$ and plot:\n",
+        "- the ground truth: $y = \\sin(x)$,\n",
+        "- the predictions $\\hat{y}$\n",
+        "- the gradient"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": 6,
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/",
+          "height": 506
+        },
+        "id": "jKniVE8M10qA",
+        "outputId": "f6e1fe97-f0e0-431d-8103-4c223020c24d"
+      },
+      "outputs": [
+        {
+          "name": "stderr",
+          "output_type": "stream",
+          "text": [
+            "/tmp/ipykernel_6172/235726813.py:3: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
+            "  y_test = torch.sin(torch.tensor(x_test))\n"
+          ]
+        },
+        {
+          "data": {
+            "image/png": "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",
+            "text/plain": [
+              "<Figure size 640x480 with 1 Axes>"
+            ]
+          },
+          "metadata": {},
+          "output_type": "display_data"
+        }
+      ],
+      "source": [
+        "# Prepare test data with requires_grad=True\n",
+        "x_test = torch.linspace(0, 2 * torch.pi, steps=200, device=device, requires_grad=True).view(-1, 1)\n",
+        "y_test = torch.sin(torch.tensor(x_test))\n",
+        "\n",
+        "# predictions from the trained model\n",
+        "y_hat  = model(x_test)\n",
+        "\n",
+        "#gradient\n",
+        "dy_dx = torch.autograd.grad(\n",
+        "    outputs=y_hat,\n",
+        "    inputs=x_test,\n",
+        "    grad_outputs=torch.ones_like(y_hat),\n",
+        "    create_graph=True\n",
+        ")[0]\n",
+        "\n",
+        "# detach from GPU and graph\n",
+        "x_test = x_test.detach().cpu().numpy().flatten()\n",
+        "y_test = y_test.detach().cpu().numpy().flatten()\n",
+        "y_hat = y_hat.detach().cpu().numpy().flatten()\n",
+        "dy_dx = dy_dx.detach().cpu().numpy().flatten()\n",
+        "\n",
+        "\n",
+        "\n",
+        "# Plot predictions and gradients\n",
+        "sns.lineplot(x=x_test, y=y_test, label='sin(x) (Ground Truth)')\n",
+        "sns.lineplot(x=x_test, y=y_hat, label='Prediction')\n",
+        "sns.lineplot(x=x_test, y=dy_dx, label='Predicted Gradient')\n",
+        "plt.xlabel('x')\n",
+        "plt.ylabel('y')\n",
+        "plt.legend()\n",
+        "plt.show()\n"
+      ]
+    }
+  ],
+  "metadata": {
+    "colab": {
+      "provenance": []
+    },
+    "kernelspec": {
+      "display_name": "datascienceintro-eVBNPtpL-py3.11",
+      "language": "python",
+      "name": "python3"
+    },
+    "language_info": {
+      "codemirror_mode": {
+        "name": "ipython",
+        "version": 3
+      },
+      "file_extension": ".py",
+      "mimetype": "text/x-python",
+      "name": "python",
+      "nbconvert_exporter": "python",
+      "pygments_lexer": "ipython3",
+      "version": "3.11.11"
+    }
+  },
+  "nbformat": 4,
+  "nbformat_minor": 0
+}