diff --git a/examples/pybind11/setup.py b/examples/pybind11/setup.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/examples/pybind11/src/cube.cpp b/examples/pybind11/src/cube.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/notebooks/1b--Introduction.ipynb b/notebooks/1b--Introduction.ipynb
index d3087d1a18d8b0174d39d65eddeae32a82d21649..7a3c4fd2e1683c7010c359fd9c9bb86d8c0f8f5b 100644
--- a/notebooks/1b--Introduction.ipynb
+++ b/notebooks/1b--Introduction.ipynb
@@ -167,10 +167,13 @@
    "source": [
     "### Option 1: Cloud-based MPCDF Jupyter notebook service (beta)\n",
     "\n",
-    "* Use the link communicated by email to access a cloud-based Jupyter service\n",
-    "* Course material *and* software are already there, you can start right away!\n",
-    "* Please note that a session is terminated after 12h\n",
-    "* Please note that the storage is temporary, i.e. download your modified notebooks in time via the JupyterLab GUI if necessary"
+    "* Use the link communicated by email to access a Jupyter service on the MPCDF HPC cloud\n",
+    "* The course material *and* software are provided via an interactive JupyterLab interface\n",
+    "* Each instance provides up to 6 virtual CPU cores and up to 12 GB RAM (0.3 cores and 1.75 GB guaranteed)\n",
+    "* Please keep the following points in mind\n",
+    "    * Use the JupyterLab menu **File $\\to$ Shut down** to free resources when finished\n",
+    "    * A session is terminated after 12h\n",
+    "    * The storage is only temporary, i.e. download your modified notebooks and data in time via the GUI"
    ]
   },
   {
diff --git a/notebooks/2d--Diffusion.ipynb b/notebooks/2d--Diffusion.ipynb
index ab8a565470a572bc9d2f4a8a2cf6d6ea97d1ad3a..c152ebe5d388d7c87073689928eb6a4509ac397f 100644
--- a/notebooks/2d--Diffusion.ipynb
+++ b/notebooks/2d--Diffusion.ipynb
@@ -5500,6 +5500,23 @@
     "* Advantage: Python code compatibility is preserved\n",
     "* Disadvantage: Debugging rather complex in case @jit does not work as expected"
    ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "## pystencils -- a high performance package for stencil computations\n",
+    "\n",
+    "* sympy-based code generator for stencil computations on NumPy arrays\n",
+    "* due to knowledge about the structure of the stencil, the code can be highly optimized and may outperform cython or Numba\n",
+    "* install via conda or pip, find more information at  \n",
+    "  https://i10git.cs.fau.de/pycodegen/pystencils\n",
+    "* optional exercise: implement the computation using pystencils"
+   ]
   }
  ],
  "metadata": {
diff --git a/notebooks/2e--Interfacing_with_C_and_F.ipynb b/notebooks/2e--Interfacing_with_C_and_F.ipynb
index 64dd80789728ee56a50a6788ad7148a1c7a7b19f..09b51f5653463e12e6238b3ada9e89b99f8e2af1 100644
--- a/notebooks/2e--Interfacing_with_C_and_F.ipynb
+++ b/notebooks/2e--Interfacing_with_C_and_F.ipynb
@@ -12,7 +12,7 @@
     "\n",
     "**Python for HPC course**\n",
     "\n",
-    "Sebastian Ohlmann, Klaus Reuter\n",
+    "2018-2021 Sebastian Ohlmann, Klaus Reuter\n",
     "\n",
     "Max Planck Computing and Data Facility, Garching"
    ]
@@ -35,7 +35,7 @@
     "\n",
     "## Steps\n",
     "\n",
-    "* create software interface between Python and C/C++/Fortran\n",
+    "* create software interface between Python/NumPy and C/C++/Fortran\n",
     "* compile and link to a Python module"
    ]
   },
@@ -49,14 +49,11 @@
    "source": [
     "## Interfacing Options\n",
     "\n",
-    "* Fortran: `f2py`\n",
-    "* C/C++/CUDA: Cython\n",
-    "    * Transparent NumPy support\n",
-    "    * Options\n",
-    "        1. compile all code into a single Python module (shared object, `.so`)\n",
-    "        2. Python (`.so`) extension contains only the interface code and links to a second shared object containing the code to be called\n",
+    "* Fortran $\\longrightarrow$ **f2py**\n",
+    "* C/C++/CUDA $\\longrightarrow$ **Cython**\n",
+    "* C++ $\\longrightarrow$ **pybind11**\n",
     "\n",
-    "Other possibilities are (not covered here):\n",
+    "Some other options (not covered here):\n",
     "\n",
     "* Swig, an interface generator\n",
     "* Boost.Python for C++ codes\n",
@@ -433,10 +430,15 @@
     }
    },
    "source": [
-    "### Thank you very much\n",
-    "\n",
-    "### Questions?"
+    "## pybind11"
    ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
   }
  ],
  "metadata": {
@@ -456,7 +458,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.8.3"
+   "version": "3.8.8"
   }
  },
  "nbformat": 4,
diff --git a/notebooks/fortran/Makefile b/notebooks/fortran/Makefile
index e0b338a3b92e36f7b5ecc457888bcf2f9fa59224..b996abfe3ce08b770c231f868d1ea7fd6ca6e1a4 100644
--- a/notebooks/fortran/Makefile
+++ b/notebooks/fortran/Makefile
@@ -1,10 +1,13 @@
+FC ?= gfortran
+MPIFC ?= mpif90
+
 all: diff.exe
 
 diff.exe: diff.F90
-	gfortran -O3 -march=native -fopt-info-vec -fopenmp -fno-strict-aliasing -o $@ $<
+	$(FC) -O3 -march=native -fopt-info-vec -fopenmp -o $@ $<
 
 diff_mpi.exe: diff_mpi.F90
-	mpif90 -O3 -march=native -fopt-info-vec -fopenmp -fno-strict-aliasing -o $@ $<
+	$(MPIFC) -O3 -march=native -fopt-info-vec -fopenmp -o $@ $<
 
 .PHONY: clean
 clean: