diff --git a/cmake/1_FindCUDAToolkit/CMakeLists.txt b/cmake/1_FindCUDAToolkit/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dbbc3b22540256caf234e53673430870511b02d0
--- /dev/null
+++ b/cmake/1_FindCUDAToolkit/CMakeLists.txt
@@ -0,0 +1,4 @@
+cmake_minimum_required (VERSION 3.17)
+project (HelloWorld)
+set(CUDAToolkit_ROOT "${CMAKE_BINARY_DIR}/extracted/cuda")
+find_package(CUDAToolkit)
diff --git a/cmake/1_FindCUDAToolkit/README.md b/cmake/1_FindCUDAToolkit/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..3da2977d49afa161b56ca9a84952607efe42c5e5
--- /dev/null
+++ b/cmake/1_FindCUDAToolkit/README.md
@@ -0,0 +1,20 @@
+# CMake example 1: FindCUDAToolkit
+
+FindCUDAToolkit is the recommended module for importing CUDA components into the CMake build system (3.17 and newer).
+
+The path to the extraction location can be specified with `-DCUDAToolkit_ROOT=$PWD/extracted` or the `CUDAToolkit_ROOT` environmental variable
+
+> **NOTE:** The minimum required components for the FindCUDAToolkit module are `cuda_cudart` and `cuda_nvcc`.
+
+## Commands
+
+```shell
+mkdir extracted
+cd extracted
+tar -xf cuda_nvcc-linux-x86_64-*-archive.tar.xz
+tar -xf cuda_nvcc-linux-x86_64-*-archive.tar.xz
+mkdir cuda
+rsync -av *-archive/ cuda/
+cd ..
+cmake .
+```
diff --git a/cmake/2_ExternalProject/CMakeLists.txt b/cmake/2_ExternalProject/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e32e236143d39938ade7304314efc0eda54c18b1
--- /dev/null
+++ b/cmake/2_ExternalProject/CMakeLists.txt
@@ -0,0 +1,4 @@
+cmake_minimum_required (VERSION 3.17)
+project (CUDA)
+set(CUDAToolkit_ROOT "${CMAKE_BINARY_DIR}/extracted/cuda")
+find_package(CUDAToolkit)
diff --git a/cmake/2_ExternalProject/README.md b/cmake/2_ExternalProject/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..effd87ced8d6ca3f5c5105cb4e46cbdfe7019060
--- /dev/null
+++ b/cmake/2_ExternalProject/README.md
@@ -0,0 +1,10 @@
+# CMake example 2: ExternalProject
+
+The ExternalProject_Add module downloads archives from a URL
+
+## Commands
+
+```shell
+cmake .
+make
+```