From 0b0962342d38dbe4e6c37c48c5304c1c9e5bf5cc Mon Sep 17 00:00:00 2001
From: Bernd Flemisch <bernd@iws.uni-stuttgart.de>
Date: Tue, 2 Jul 2024 09:53:24 +0000
Subject: [PATCH] add prerequisites

---
 README.md        |  1 +
 prerequisites.md | 31 +++++++++++++++++++++++++++++++
 2 files changed, 32 insertions(+)
 create mode 100644 prerequisites.md

diff --git a/README.md b/README.md
index 4aaced3a..437eac3a 100644
--- a/README.md
+++ b/README.md
@@ -10,6 +10,7 @@ The material is organized as follows
 
 ## Installation of the course
 
+Before undertaking the course, please be sure to check on the expected [prerequisites](prerequisites.md).
 To get started with the course, you have two options.
 Depending on whether you already have DuMu<sup>x</sup> installed or not, choose the one that fits your needs.
 
diff --git a/prerequisites.md b/prerequisites.md
new file mode 100644
index 00000000..852f3382
--- /dev/null
+++ b/prerequisites.md
@@ -0,0 +1,31 @@
+# Prerequisites for the DuMu<sup>x</sup> course
+
+For mastering the DuMu<sup>x</sup> course, we recommend the following prerequisites:
+
+- **CLI:** Knowledge of basic Unix shell commands and interaction with a corresponding terminal is essential for the installation process as well as the compiliation and execution of the exercise programs. We can recommend this [Software Carpentry course](https://swcarpentry.github.io/shell-novice/) for learning the basics and this [cheat sheet](https://phoenixnap.com/kb/wp-content/uploads/2022/11/linuxCommandsAllUsersShouldKnow.pdf) for remembering them.
+
+- **C++:** DuMu<sup>x</sup> is a module on top of the C++ code base DUNE and itself contains several more advanced C++ language features. We recommend to be familiar with C++ templates and can recommend the following educational resources:
+ 
+  In general we recommend most CppCon Back to Basics videos, but here is a list of taylored suggestions for this course.
+  - OOP:
+    - https://www.youtube.com/watch?v=32tDTD9UJCE
+  - Compiling and Linking:
+    - https://www.youtube.com/watch?v=cpkDQaYttR4
+  - Classes:
+    - https://www.youtube.com/watch?v=motLOioLJfg&t=2685s
+    - https://www.youtube.com/watch?v=O65lEiYkkbc-
+  - Functions:
+    - https://www.youtube.com/watch?v=CpHX1Du5R0Q&list=PLHTh1InhhwT7gQEuYznhhvAYTel0qzl72&index=45
+  - Templates:
+    - https://www.youtube.com/watch?v=XN319NYEOcE&list=PLHTh1InhhwT4TJaHBVWzvBOYhp27UO7mI&index=13
+    - https://www.youtube.com/watch?v=2Y9XbltAfXs&list=PLHTh1InhhwT4TJaHBVWzvBOYhp27UO7mI&index=14
+  - Lambdas:
+    - https://www.youtube.com/watch?v=IgNUBw3vcO4&list=PLHTh1InhhwT4TJaHBVWzvBOYhp27UO7mI&index=6
+  - Smart Pointers:
+    - https://www.youtube.com/watch?v=YokY6HzLkXs
+  - Memory:
+    - https://www.youtube.com/watch?v=rqVWj0aVSxg
+  - STL:
+    - https://www.youtube.com/watch?v=tXUXl_RzkAk
+
+- **Git:** Some of the exercises require the use of Git. This [Software Carpentry course](https://swcarpentry.github.io/git-novice/) teaches Git for beginners, while this [cheat sheet](https://about.gitlab.com/images/press/git-cheat-sheet.pdf) lists the most common Git commands.
-- 
GitLab