diff --git a/config.json b/config.json
index e526ff9..b25d616 100644
--- a/config.json
+++ b/config.json
@@ -1,10 +1,10 @@
{
"publicProps": {
- "title": "Add a title for your lesson/project",
+ "title": "Digital Skills Slides",
"baseURL": "digital-skills-slides",
"repoName": "digital-skills-slides",
"repoOwner": "esciencecenter-digital-skills",
"organization": "Netherlands eScience Center",
- "categoryOrder": ["Category1", "Category2"]
+ "categoryOrder": ["Good Practices"]
}
}
diff --git a/modules/git-lesson/git-slides.md b/modules/git-lesson/git-slides.md
new file mode 100644
index 0000000..7e75b3c
--- /dev/null
+++ b/modules/git-lesson/git-slides.md
@@ -0,0 +1,162 @@
+---
+title: Git and GitHub
+type: slides
+order: 1
+---
+
+
+
+# Automated Version Control
+
+What is version control and why should I use it?
+
+Note:
+- Git all set up?
+- SSH working?
+- Otherwise: breakout room
+
+===
+
+
+
+
+“Piled Higher and Deeper” by Jorge Cham, http://www.phdcomics.com
+
+===
+
+
+## Documents are...
+
+ a series of changes
+
+
+
+===
+
+
+## Collaboration
+
+ independent changes
+
+
+
+ can be merged
+
+
+
+===
+
+
+## Version Control: Key Points
+
+- Version control is track changes on steroids.
+- Version control is like an unlimited **undo**.
+- Version control also allows many people to work in parallel.
+
+===
+
+
+## The Holy Realms of Git
+
+
+
+
+
workspace 📂
+
+
Your filesystem
+
+
index 🕒
+
+
Staging area
+
Files wait patiently to be committed
+
+
+
local repository 🗂️
+
+
Contains branches, commits, history, etc.
+
+
+
+
+===
+
+
+## Crowded Staging Area / Index
+
+
+
+The Staging Area / Index can hold many files and folders.
+
+===
+
+
+## Quiz 1/2
+
+
+Which commit message should I choose?
+
+
“Changes”
+
“Added line ‘This project started as a joke’ to myfile.txt”
+
“Discuss origin of the project”
+
+
+
+
+Make it short, descriptive, and imperative 🐺
+
+
+So yeah, the last one is good! 🐺
+
+
+===
+
+
+## Quiz 2/2
+
+
+Which command saves myfile.txt to my Git repo?
+
+
+ $ git commit -m myfile.txt "my recent changes"
+
+
+
+
+
+
+3. adds your file to the index, and then commits it. That's the one.
+🐺
+
+
+
+===
+
+
+## Tracking Changes: Key Points
+
+- Files can be stored in
+ - **working directory**: the files you can see
+ - **staging area / index**: files about to be committed
+ - **local repository**: the permanent record
+- **git status** shows the status of a repository
+- **git add** puts files in the staging area
+- **git commit** saves the staged content as a new commit in the local repository
+- Write short, descriptive, and imperative commit messages
diff --git a/modules/git-lesson/index.md b/modules/git-lesson/index.md
new file mode 100644
index 0000000..4214c3e
--- /dev/null
+++ b/modules/git-lesson/index.md
@@ -0,0 +1,11 @@
+---
+id: 0
+category: Good Practices
+title: Version control with Git and GitHub
+author: eScience Center
+thumbnail: "version-control-thumbnail.jpg"
+visibility: visible
+---
+
+Photo by Wesley Tingey on Unsplash
+
\ No newline at end of file
diff --git a/modules/git-lesson/info.md b/modules/git-lesson/info.md
new file mode 100644
index 0000000..1a8e1de
--- /dev/null
+++ b/modules/git-lesson/info.md
@@ -0,0 +1,13 @@
+---
+title: Info
+type: info
+order: 0
+---
+
+## Collaborative version control with Git and GitHub
+This workshop introduces version control with Git and teaches you how to collaborate using Git and GitHub.
+
+Knowing how to use Git and GitHub will allow you to keep track of changes in your software project, publish your code online, collaborate with several people in the same project, and contribute to projects as an external collaborator.
+
+## The content
+This website hosts only the slides for the workshop. For the lesson content and exercises, see this [workbench lesson](https://esciencecenter-digital-skills.github.io/git-lesson/) or associated [GitHub repository](https://github.com/esciencecenter-digital-skills/git-lesson).
\ No newline at end of file
diff --git a/modules/git-lesson/media/TUSAIL_logo.svg b/modules/git-lesson/media/TUSAIL_logo.svg
new file mode 100644
index 0000000..9cf1ef6
--- /dev/null
+++ b/modules/git-lesson/media/TUSAIL_logo.svg
@@ -0,0 +1,23 @@
+
+
+
\ No newline at end of file
diff --git a/modules/git-lesson/media/adan-creation-g5381c6989_1920.jpg b/modules/git-lesson/media/adan-creation-g5381c6989_1920.jpg
new file mode 100644
index 0000000..fd2493b
Binary files /dev/null and b/modules/git-lesson/media/adan-creation-g5381c6989_1920.jpg differ
diff --git a/modules/git-lesson/media/book-wall-g2e1ec5a05_1920.jpg b/modules/git-lesson/media/book-wall-g2e1ec5a05_1920.jpg
new file mode 100644
index 0000000..d646cf0
Binary files /dev/null and b/modules/git-lesson/media/book-wall-g2e1ec5a05_1920.jpg differ
diff --git a/modules/git-lesson/media/boy-g17e8683be_1920.jpg b/modules/git-lesson/media/boy-g17e8683be_1920.jpg
new file mode 100644
index 0000000..746b334
Binary files /dev/null and b/modules/git-lesson/media/boy-g17e8683be_1920.jpg differ
diff --git a/modules/git-lesson/media/cut_e.svg b/modules/git-lesson/media/cut_e.svg
new file mode 100644
index 0000000..bf0ac8f
--- /dev/null
+++ b/modules/git-lesson/media/cut_e.svg
@@ -0,0 +1,89 @@
+
+
diff --git a/modules/git-lesson/media/desk-593327_1920.jpg b/modules/git-lesson/media/desk-593327_1920.jpg
new file mode 100644
index 0000000..5b12841
Binary files /dev/null and b/modules/git-lesson/media/desk-593327_1920.jpg differ
diff --git a/modules/git-lesson/media/e-logo.svg b/modules/git-lesson/media/e-logo.svg
new file mode 100644
index 0000000..2ce9ef2
--- /dev/null
+++ b/modules/git-lesson/media/e-logo.svg
@@ -0,0 +1,32 @@
+
+
\ No newline at end of file
diff --git a/modules/git-lesson/media/favicon-32x32.png b/modules/git-lesson/media/favicon-32x32.png
new file mode 100644
index 0000000..108414c
Binary files /dev/null and b/modules/git-lesson/media/favicon-32x32.png differ
diff --git a/modules/module1/media/fig-dummy.jpeg b/modules/git-lesson/media/fig-dummy.jpeg
similarity index 100%
rename from modules/module1/media/fig-dummy.jpeg
rename to modules/git-lesson/media/fig-dummy.jpeg
diff --git a/modules/git-lesson/media/footprint-g55586a507_1920.jpg b/modules/git-lesson/media/footprint-g55586a507_1920.jpg
new file mode 100644
index 0000000..4b57fd8
Binary files /dev/null and b/modules/git-lesson/media/footprint-g55586a507_1920.jpg differ
diff --git a/modules/git-lesson/media/hands-g5b2300b1e_1920.jpg b/modules/git-lesson/media/hands-g5b2300b1e_1920.jpg
new file mode 100644
index 0000000..bd0d15b
Binary files /dev/null and b/modules/git-lesson/media/hands-g5b2300b1e_1920.jpg differ
diff --git a/modules/git-lesson/media/hd-wallpaper-g72e534791_1920.jpg b/modules/git-lesson/media/hd-wallpaper-g72e534791_1920.jpg
new file mode 100644
index 0000000..5e73188
Binary files /dev/null and b/modules/git-lesson/media/hd-wallpaper-g72e534791_1920.jpg differ
diff --git a/modules/git-lesson/media/lamp-g95a0e35a2_1920.jpg b/modules/git-lesson/media/lamp-g95a0e35a2_1920.jpg
new file mode 100644
index 0000000..8478dcc
Binary files /dev/null and b/modules/git-lesson/media/lamp-g95a0e35a2_1920.jpg differ
diff --git a/modules/git-lesson/media/letter-e.svg b/modules/git-lesson/media/letter-e.svg
new file mode 100644
index 0000000..06ba68b
--- /dev/null
+++ b/modules/git-lesson/media/letter-e.svg
@@ -0,0 +1,3 @@
+
diff --git a/modules/git-lesson/media/logo-fc-part-white.svg b/modules/git-lesson/media/logo-fc-part-white.svg
new file mode 100644
index 0000000..739dd43
--- /dev/null
+++ b/modules/git-lesson/media/logo-fc-part-white.svg
@@ -0,0 +1,164 @@
+
+
diff --git a/modules/git-lesson/media/logo-fc-white.svg b/modules/git-lesson/media/logo-fc-white.svg
new file mode 100644
index 0000000..eb1858a
--- /dev/null
+++ b/modules/git-lesson/media/logo-fc-white.svg
@@ -0,0 +1,169 @@
+
+
diff --git a/modules/git-lesson/media/logo-fc.svg b/modules/git-lesson/media/logo-fc.svg
new file mode 100644
index 0000000..96a1561
--- /dev/null
+++ b/modules/git-lesson/media/logo-fc.svg
@@ -0,0 +1,147 @@
+
+
diff --git a/modules/git-lesson/media/merge.svg b/modules/git-lesson/media/merge.svg
new file mode 100644
index 0000000..41f6b00
--- /dev/null
+++ b/modules/git-lesson/media/merge.svg
@@ -0,0 +1,485 @@
+
+
diff --git a/modules/module1/media/nlesc-dummy.png b/modules/git-lesson/media/nlesc-dummy.png
similarity index 100%
rename from modules/module1/media/nlesc-dummy.png
rename to modules/git-lesson/media/nlesc-dummy.png
diff --git a/modules/git-lesson/media/port-g38ab8a46f_1920.jpg b/modules/git-lesson/media/port-g38ab8a46f_1920.jpg
new file mode 100644
index 0000000..dae5bbd
Binary files /dev/null and b/modules/git-lesson/media/port-g38ab8a46f_1920.jpg differ
diff --git a/modules/git-lesson/media/seagull-ga3abb7684_1920.jpg b/modules/git-lesson/media/seagull-ga3abb7684_1920.jpg
new file mode 100644
index 0000000..81bd3f8
Binary files /dev/null and b/modules/git-lesson/media/seagull-ga3abb7684_1920.jpg differ
diff --git a/modules/git-lesson/media/version-control-thumbnail.jpg b/modules/git-lesson/media/version-control-thumbnail.jpg
new file mode 100644
index 0000000..8d74618
Binary files /dev/null and b/modules/git-lesson/media/version-control-thumbnail.jpg differ
diff --git a/modules/git-lesson/media/versions.svg b/modules/git-lesson/media/versions.svg
new file mode 100644
index 0000000..ab0ef41
--- /dev/null
+++ b/modules/git-lesson/media/versions.svg
@@ -0,0 +1,785 @@
+
+
diff --git a/modules/good-practices-lesson/ci-slides.md b/modules/good-practices-lesson/ci-slides.md
new file mode 100644
index 0000000..839f53c
--- /dev/null
+++ b/modules/good-practices-lesson/ci-slides.md
@@ -0,0 +1,147 @@
+---
+title: CI
+type: slides
+order: 5
+author: Ole Mussman
+description: Day 3 Code Refinery
+---
+
+
+
+
+# Continuous Integration
+
+note:
+
+
+===
+
+
+
+# Continuous Integration
+
+
+===
+
+
+
+
+
+# Continuous _What_ Now...?
+
+===
+
+
+
+
+
+# Continuous _What_ Now...?
+
+
+ Automating the integration of code changes from multiple contributors into a single software project.
+
+
+===
+
+
+
+## What Is It Good For?
+- Linting
+- Automated testing
+- Security analyses
+- Send messages
+ - Slack, Discord, Matrix, Mastodon, email, ...
+- Building & compiling
+ - Code, Documentation, ...
+- Deploying (PyPi, Kubernetes, GitHub Pages)
+ - Just like these slides
+
+===
+
+
+
+## Take-away
+
+- Best practices are a time-investment _with returns_
+- CI saves time and keeps your project clean
+- What improvements could your project benefit from?
+- What's nice to know, but overkill for your current work?
+
+===
+
+
+
+## Hands-On
+
+
+
+
Person A: Ensure your repository has tests
+
Person A: Set up Continuous Integration (automatic testing)
+
Person A: Verify that tests ran
+
Person A: Add a test that fails
+
Person A: Open an issue
+
Person B: Fork ⚠️ and clone person A's repo
+
Person B: Fix the broken test
+
Person B: Open a pull request linked to the issue
+
Person B: Verify that tests now run
+
Person A: Accept Person B's pull request
+
+
+
+
+
diff --git a/modules/good-practices-lesson/documentation-slides.md b/modules/good-practices-lesson/documentation-slides.md
new file mode 100644
index 0000000..d78977b
--- /dev/null
+++ b/modules/good-practices-lesson/documentation-slides.md
@@ -0,0 +1,206 @@
+---
+title: Documentation
+type: slides
+order: 3
+author: Luisa Orozco, Barbara Vreede
+description: Day 3 Code Refinery
+---
+
+
+
+# Documentation
+
+===
+
+
+
+
+
+===
+
+
+
+## Examples of documentation
+
++ Think of projects with good documentation.
+ _What do you like about them?_
++ Think of projects with less good documentation.
+ _What don't you like about them? Are you missing anything?_
+
+NB: You can choose a mature library with lots of users, but try to also think of less mature projects you had to collaborate on, or papers you had to reproduce.
+
+===
+
+
+
+## Types of documentation
+
+
+
+===
+
+
+
+## A good README file
+
++ README file is first thing a user/collaborator sees
++ What should be included in README files?
+
+
...
+
...
+
...
+
...
+
...
+
...
+
...
+
+
+
+Note:
++ A descriptive project title
++ Motivation (why the project exists) and basics
++ Installation / How to setup
++ Copy-pasteable quick start code example
++ Usage reference (if not elsewhere)
++ Recommended citation if someone uses it
++ Other related tools ("see also")
++ Contact information for the developer(s)
++ License information
++ Contributing guidelines
+
+===
+
+
+
+## Why write in-code documentation?
+
+In-code documentation:
+
++ Makes code more understandable
++ Explains decisions we made
+
+===
+
+
+
+## When **not** to use in-code documentation?
+
++ When the code is self-explanatory
++ To replace good variable/function names
++ To replace version control
++ To keep old (zombie) code around
+
+===
+
+
+
+## Readable code vs commented code
+
+```python=
+# convert from degrees celsius to fahrenheit
+def convert(d):
+ return d * 5 / 9 + 32
+```
+vs
+```python=
+def celsius_to_fahrenheit(degrees):
+ return degrees * 5 / 9 + 32
+```
+
+===
+
+
+
+## What makes a good comment?
+
+**Comment A**
+
+
+# Now we check if temperature is larger than -50:
+if temperature > -50:
+ print('do something')
+
+
+**Comment B**
+
+
+# We regard temperatures below -50 degrees as measurement errors
+if temperature > -50:
+ print('do something')
+
+
+How are these different? Which one do you prefer?
+
+===
+
+
+
+## Docstrings: a special kind of comment
+
+```python=
+def celsius_to_fahrenheit(degrees):
+ """Convert degrees Celsius to degrees Fahrenheit."""
+ return degrees * 5 / 9 + 32
+```
+
+Why is this OK?
+
+Note:
+Docstrings can be used to generate user documentation.
+They are accessible outside the code.
+They follow a standardized syntax.
+
+===
+
+
+
+## In-code commenting: key points
+
++ Explicit, descriptive naming already provides important documentation.
++ Comments should describe the why for your code, not the what.
++ Writing docstrings is an easy way to write documentation while you code, as they are accessible outside the code itself.
+
+===
+
+
+
+## User/API documentation
+
++ What if a README file is not enough?
++ How do I easily create user documentation?
+
+===
+
+
+
+## Tools
+
++ **Sphinx** (documentation generator)
+ - creates nicely-formatted HTML pages out of .md or .rst files
+ - programming language independent
++ **Github pages** (deploy your documentation)
+ - set up inside your GitHub repository
+ - automatically deploys your Sphinx-generated documentation
+
+===
+
+
+
+## Take-home message
+
++ Depending on the purpose and state of the project documentation needs to meet different criteria.
++ Documentation can take different shapes:
+ + Readable code
+ + In-code comments
+ + Docstrings
+ + README files
+ + Tutorials/notebooks
++ Documentation is a vital part of a project, and should be kept and created alongside the corresponding code.
\ No newline at end of file
diff --git a/modules/good-practices-lesson/good-practices-slides.md b/modules/good-practices-lesson/good-practices-slides.md
new file mode 100644
index 0000000..2772d7e
--- /dev/null
+++ b/modules/good-practices-lesson/good-practices-slides.md
@@ -0,0 +1,201 @@
+---
+title: Good Practices
+type: slides
+order: 1
+author: Ole Mussmann
+description: Getting more professional
+---
+
+
+
+# Good Practices for Research Software Development
+
+note:
+
+===
+
+
+
+
+
+
+## Programming vs Software Engineering
+
+
+
+ Software engineering is programming integrated over time.
+
—Titus Winters, Google C++ devlead
+
+
+
+Note:
+What's the difference between programming and software engineering?
+
+===
+
+
+
+
+
+===
+
+
+
+## Development Speed ⚡
+
+
+
+
Red curve
+
+
Writing code
+
+
Blue curve
+
+
Version Control
+
Collaborative development
+
Code review
+
Testing
+
Modular code
+
Documentation
+
+
+
+
+===
+
+
+
+## Projects are Different
+
+
+
+===
+
+
+
+## What to Use When?
+
+
+
+
+
⏱️ lifetime
+
use
+
+
+
1-shot
+
🚫
+
+
+
week+
+
Git & GitHub
+
+
+
3 months+
+
Testing
+
+
+
6 months+
+
Documentation, automate testing
+
+
+
+
+
+
+
+
🧑🧑 users
+
use
+
+
+
1
+
Push to main
+
+
+
2+
+
Branches, merging
+
+
+
2+ (+students)
+
Code review
+
+
+
2+ (+external)
+
Release branch, & everything else
+
+
+
+
+Note:
+- Train these tools
+- Experience their effect
+- Use own judgement, but
+- avoid "but in my project..."
+
+===
+
+
+
+## Good practices are investments
+
+Profits come in
+
+- Development efficiency
+- Reproducibility
+- Reusability
+- Faster debugging
+- Robustness, fewer errors
+- Fewer headaches!
\ No newline at end of file
diff --git a/modules/good-practices-lesson/index.md b/modules/good-practices-lesson/index.md
new file mode 100644
index 0000000..164bb6c
--- /dev/null
+++ b/modules/good-practices-lesson/index.md
@@ -0,0 +1,11 @@
+---
+id: 2
+category: Good Practices
+title: Good Practices in Research Software Engineering
+author: eScience Center
+thumbnail: "good-practices-thumbnail.png"
+visibility: visible
+---
+
+Photo by OCG Saving The Ocean on Unsplash
+
diff --git a/modules/good-practices-lesson/info.md b/modules/good-practices-lesson/info.md
new file mode 100644
index 0000000..24cfb21
--- /dev/null
+++ b/modules/good-practices-lesson/info.md
@@ -0,0 +1,17 @@
+---
+title: Info
+type: info
+order: 0
+---
+
+## Good Practices in Research Software development
+The key objective of this workshop is to grow researchers' software skills necessary to apply good practices that enable open and reproducible research.
+The workshop focuses on building modular, reusable, maintainable, sustainable, reproducible, testable, and robust software.
+This will allow you to more easily organize, maintain and share your data.
+The participants should be familiar with programming and regularly write code for their research, but no extensive expertise or knowledge of specific tools are required.
+The main themes that are addressed are generically applicable, but please note that a lot of the exercises and demonstrations are in Python.
+
+This workshop is inspired by and based on [CodeRefinery](https://coderefinery.org/lessons/) training materials.
+
+## The content
+This website hosts only the slides for the workshop. For the lesson content and exercises, see this [workbench lesson](https://esciencecenter-digital-skills.github.io/good-practices-lesson/) or associated [GitHub repository](https://github.com/esciencecenter-digital-skills/good-practices-lesson).
\ No newline at end of file
diff --git a/modules/good-practices-lesson/media/ci/amsterdam-3736145_1920.jpg b/modules/good-practices-lesson/media/ci/amsterdam-3736145_1920.jpg
new file mode 100644
index 0000000..9aed1b1
Binary files /dev/null and b/modules/good-practices-lesson/media/ci/amsterdam-3736145_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/ci/automate.jpg b/modules/good-practices-lesson/media/ci/automate.jpg
new file mode 100644
index 0000000..1b52d53
Binary files /dev/null and b/modules/good-practices-lesson/media/ci/automate.jpg differ
diff --git a/modules/good-practices-lesson/media/ci/cat.jpg b/modules/good-practices-lesson/media/ci/cat.jpg
new file mode 100644
index 0000000..6957ed0
Binary files /dev/null and b/modules/good-practices-lesson/media/ci/cat.jpg differ
diff --git a/modules/good-practices-lesson/media/ci/cat2.jpg b/modules/good-practices-lesson/media/ci/cat2.jpg
new file mode 100644
index 0000000..8186ae1
Binary files /dev/null and b/modules/good-practices-lesson/media/ci/cat2.jpg differ
diff --git a/modules/good-practices-lesson/media/ci/cut_e.svg b/modules/good-practices-lesson/media/ci/cut_e.svg
new file mode 100644
index 0000000..bf0ac8f
--- /dev/null
+++ b/modules/good-practices-lesson/media/ci/cut_e.svg
@@ -0,0 +1,89 @@
+
+
diff --git a/modules/good-practices-lesson/media/ci/desk-593327_1920.jpg b/modules/good-practices-lesson/media/ci/desk-593327_1920.jpg
new file mode 100644
index 0000000..5b12841
Binary files /dev/null and b/modules/good-practices-lesson/media/ci/desk-593327_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/ci/dna-3539309_1920.jpg b/modules/good-practices-lesson/media/ci/dna-3539309_1920.jpg
new file mode 100644
index 0000000..4ace7d8
Binary files /dev/null and b/modules/good-practices-lesson/media/ci/dna-3539309_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/ci/e-logo.svg b/modules/good-practices-lesson/media/ci/e-logo.svg
new file mode 100644
index 0000000..2ce9ef2
--- /dev/null
+++ b/modules/good-practices-lesson/media/ci/e-logo.svg
@@ -0,0 +1,32 @@
+
+
\ No newline at end of file
diff --git a/modules/good-practices-lesson/media/ci/favicon-32x32.png b/modules/good-practices-lesson/media/ci/favicon-32x32.png
new file mode 100644
index 0000000..108414c
Binary files /dev/null and b/modules/good-practices-lesson/media/ci/favicon-32x32.png differ
diff --git a/modules/good-practices-lesson/media/ci/full-cycle-ci.png b/modules/good-practices-lesson/media/ci/full-cycle-ci.png
new file mode 100644
index 0000000..a0d7e37
Binary files /dev/null and b/modules/good-practices-lesson/media/ci/full-cycle-ci.png differ
diff --git a/modules/good-practices-lesson/media/ci/header-bg.svg b/modules/good-practices-lesson/media/ci/header-bg.svg
new file mode 100644
index 0000000..73fe494
--- /dev/null
+++ b/modules/good-practices-lesson/media/ci/header-bg.svg
@@ -0,0 +1,3 @@
+
diff --git a/modules/good-practices-lesson/media/ci/header-illustration-color.svg b/modules/good-practices-lesson/media/ci/header-illustration-color.svg
new file mode 100644
index 0000000..47bbc3f
--- /dev/null
+++ b/modules/good-practices-lesson/media/ci/header-illustration-color.svg
@@ -0,0 +1,119 @@
+
diff --git a/modules/good-practices-lesson/media/ci/header-illustration-frontpage-mobile.svg b/modules/good-practices-lesson/media/ci/header-illustration-frontpage-mobile.svg
new file mode 100644
index 0000000..3ee9e1b
--- /dev/null
+++ b/modules/good-practices-lesson/media/ci/header-illustration-frontpage-mobile.svg
@@ -0,0 +1,76 @@
+
diff --git a/modules/good-practices-lesson/media/ci/header-illustration.svg b/modules/good-practices-lesson/media/ci/header-illustration.svg
new file mode 100644
index 0000000..0b9dd2a
--- /dev/null
+++ b/modules/good-practices-lesson/media/ci/header-illustration.svg
@@ -0,0 +1,105 @@
+
+
\ No newline at end of file
diff --git a/modules/good-practices-lesson/media/ci/header-shape-left.svg b/modules/good-practices-lesson/media/ci/header-shape-left.svg
new file mode 100644
index 0000000..7fd7e20
--- /dev/null
+++ b/modules/good-practices-lesson/media/ci/header-shape-left.svg
@@ -0,0 +1,10 @@
+
+
+
diff --git a/modules/good-practices-lesson/media/ci/header-shape-right.svg b/modules/good-practices-lesson/media/ci/header-shape-right.svg
new file mode 100644
index 0000000..07b8ef1
--- /dev/null
+++ b/modules/good-practices-lesson/media/ci/header-shape-right.svg
@@ -0,0 +1,3 @@
+
diff --git a/modules/good-practices-lesson/media/ci/letter-e.svg b/modules/good-practices-lesson/media/ci/letter-e.svg
new file mode 100644
index 0000000..06ba68b
--- /dev/null
+++ b/modules/good-practices-lesson/media/ci/letter-e.svg
@@ -0,0 +1,3 @@
+
diff --git a/modules/good-practices-lesson/media/ci/like_ppt.xcf b/modules/good-practices-lesson/media/ci/like_ppt.xcf
new file mode 100644
index 0000000..59b7dfe
Binary files /dev/null and b/modules/good-practices-lesson/media/ci/like_ppt.xcf differ
diff --git a/modules/good-practices-lesson/media/ci/logo-fc-part-white.svg b/modules/good-practices-lesson/media/ci/logo-fc-part-white.svg
new file mode 100644
index 0000000..739dd43
--- /dev/null
+++ b/modules/good-practices-lesson/media/ci/logo-fc-part-white.svg
@@ -0,0 +1,164 @@
+
+
diff --git a/modules/good-practices-lesson/media/ci/logo-fc-white.svg b/modules/good-practices-lesson/media/ci/logo-fc-white.svg
new file mode 100644
index 0000000..eb1858a
--- /dev/null
+++ b/modules/good-practices-lesson/media/ci/logo-fc-white.svg
@@ -0,0 +1,169 @@
+
+
diff --git a/modules/good-practices-lesson/media/ci/logo-fc.svg b/modules/good-practices-lesson/media/ci/logo-fc.svg
new file mode 100644
index 0000000..96a1561
--- /dev/null
+++ b/modules/good-practices-lesson/media/ci/logo-fc.svg
@@ -0,0 +1,147 @@
+
+
diff --git a/modules/good-practices-lesson/media/ci/purple_blob.svg b/modules/good-practices-lesson/media/ci/purple_blob.svg
new file mode 100644
index 0000000..a3e5917
--- /dev/null
+++ b/modules/good-practices-lesson/media/ci/purple_blob.svg
@@ -0,0 +1,71 @@
+
+
diff --git a/modules/good-practices-lesson/media/ci/purple_strip.svg b/modules/good-practices-lesson/media/ci/purple_strip.svg
new file mode 100644
index 0000000..aad8218
--- /dev/null
+++ b/modules/good-practices-lesson/media/ci/purple_strip.svg
@@ -0,0 +1,72 @@
+
+
diff --git a/modules/good-practices-lesson/media/ci/reload-97640.svg b/modules/good-practices-lesson/media/ci/reload-97640.svg
new file mode 100644
index 0000000..e24ed64
--- /dev/null
+++ b/modules/good-practices-lesson/media/ci/reload-97640.svg
@@ -0,0 +1,59 @@
+
+
diff --git a/modules/good-practices-lesson/media/ci/steampunk-85358.mp4 b/modules/good-practices-lesson/media/ci/steampunk-85358.mp4
new file mode 100644
index 0000000..64fc20b
Binary files /dev/null and b/modules/good-practices-lesson/media/ci/steampunk-85358.mp4 differ
diff --git a/modules/good-practices-lesson/media/ci/telescopic-mirror-74034_1920.jpg b/modules/good-practices-lesson/media/ci/telescopic-mirror-74034_1920.jpg
new file mode 100644
index 0000000..7f7e8ea
Binary files /dev/null and b/modules/good-practices-lesson/media/ci/telescopic-mirror-74034_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/ci/yellow_strip.svg b/modules/good-practices-lesson/media/ci/yellow_strip.svg
new file mode 100644
index 0000000..ac6387e
--- /dev/null
+++ b/modules/good-practices-lesson/media/ci/yellow_strip.svg
@@ -0,0 +1,72 @@
+
+
diff --git a/modules/good-practices-lesson/media/documentation/amsterdam-3736145_1920.jpg b/modules/good-practices-lesson/media/documentation/amsterdam-3736145_1920.jpg
new file mode 100644
index 0000000..9aed1b1
Binary files /dev/null and b/modules/good-practices-lesson/media/documentation/amsterdam-3736145_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/documentation/cat.jpg b/modules/good-practices-lesson/media/documentation/cat.jpg
new file mode 100644
index 0000000..6957ed0
Binary files /dev/null and b/modules/good-practices-lesson/media/documentation/cat.jpg differ
diff --git a/modules/good-practices-lesson/media/documentation/cat2.jpg b/modules/good-practices-lesson/media/documentation/cat2.jpg
new file mode 100644
index 0000000..8186ae1
Binary files /dev/null and b/modules/good-practices-lesson/media/documentation/cat2.jpg differ
diff --git a/modules/good-practices-lesson/media/documentation/cut_e.svg b/modules/good-practices-lesson/media/documentation/cut_e.svg
new file mode 100644
index 0000000..bf0ac8f
--- /dev/null
+++ b/modules/good-practices-lesson/media/documentation/cut_e.svg
@@ -0,0 +1,89 @@
+
+
diff --git a/modules/good-practices-lesson/media/documentation/desk-593327_1920.jpg b/modules/good-practices-lesson/media/documentation/desk-593327_1920.jpg
new file mode 100644
index 0000000..5b12841
Binary files /dev/null and b/modules/good-practices-lesson/media/documentation/desk-593327_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/documentation/dev_speed_time_2.svg b/modules/good-practices-lesson/media/documentation/dev_speed_time_2.svg
new file mode 100644
index 0000000..da392c5
--- /dev/null
+++ b/modules/good-practices-lesson/media/documentation/dev_speed_time_2.svg
@@ -0,0 +1,204 @@
+
+
diff --git a/modules/good-practices-lesson/media/documentation/development_speed_vs_time.png b/modules/good-practices-lesson/media/documentation/development_speed_vs_time.png
new file mode 100644
index 0000000..d009303
Binary files /dev/null and b/modules/good-practices-lesson/media/documentation/development_speed_vs_time.png differ
diff --git a/modules/good-practices-lesson/media/documentation/dna-3539309_1920.jpg b/modules/good-practices-lesson/media/documentation/dna-3539309_1920.jpg
new file mode 100644
index 0000000..4ace7d8
Binary files /dev/null and b/modules/good-practices-lesson/media/documentation/dna-3539309_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/documentation/e-logo.svg b/modules/good-practices-lesson/media/documentation/e-logo.svg
new file mode 100644
index 0000000..2ce9ef2
--- /dev/null
+++ b/modules/good-practices-lesson/media/documentation/e-logo.svg
@@ -0,0 +1,32 @@
+
+
\ No newline at end of file
diff --git a/modules/good-practices-lesson/media/documentation/favicon-32x32.png b/modules/good-practices-lesson/media/documentation/favicon-32x32.png
new file mode 100644
index 0000000..108414c
Binary files /dev/null and b/modules/good-practices-lesson/media/documentation/favicon-32x32.png differ
diff --git a/modules/good-practices-lesson/media/documentation/header-bg.svg b/modules/good-practices-lesson/media/documentation/header-bg.svg
new file mode 100644
index 0000000..73fe494
--- /dev/null
+++ b/modules/good-practices-lesson/media/documentation/header-bg.svg
@@ -0,0 +1,3 @@
+
diff --git a/modules/good-practices-lesson/media/documentation/header-illustration-color.svg b/modules/good-practices-lesson/media/documentation/header-illustration-color.svg
new file mode 100644
index 0000000..47bbc3f
--- /dev/null
+++ b/modules/good-practices-lesson/media/documentation/header-illustration-color.svg
@@ -0,0 +1,119 @@
+
diff --git a/modules/good-practices-lesson/media/documentation/header-illustration-frontpage-mobile.svg b/modules/good-practices-lesson/media/documentation/header-illustration-frontpage-mobile.svg
new file mode 100644
index 0000000..3ee9e1b
--- /dev/null
+++ b/modules/good-practices-lesson/media/documentation/header-illustration-frontpage-mobile.svg
@@ -0,0 +1,76 @@
+
diff --git a/modules/good-practices-lesson/media/documentation/header-illustration.svg b/modules/good-practices-lesson/media/documentation/header-illustration.svg
new file mode 100644
index 0000000..0b9dd2a
--- /dev/null
+++ b/modules/good-practices-lesson/media/documentation/header-illustration.svg
@@ -0,0 +1,105 @@
+
+
\ No newline at end of file
diff --git a/modules/good-practices-lesson/media/documentation/header-shape-left.svg b/modules/good-practices-lesson/media/documentation/header-shape-left.svg
new file mode 100644
index 0000000..7fd7e20
--- /dev/null
+++ b/modules/good-practices-lesson/media/documentation/header-shape-left.svg
@@ -0,0 +1,10 @@
+
+
+
diff --git a/modules/good-practices-lesson/media/documentation/header-shape-right.svg b/modules/good-practices-lesson/media/documentation/header-shape-right.svg
new file mode 100644
index 0000000..07b8ef1
--- /dev/null
+++ b/modules/good-practices-lesson/media/documentation/header-shape-right.svg
@@ -0,0 +1,3 @@
+
diff --git a/modules/good-practices-lesson/media/documentation/letter-e.svg b/modules/good-practices-lesson/media/documentation/letter-e.svg
new file mode 100644
index 0000000..06ba68b
--- /dev/null
+++ b/modules/good-practices-lesson/media/documentation/letter-e.svg
@@ -0,0 +1,3 @@
+
diff --git a/modules/good-practices-lesson/media/documentation/like_ppt.xcf b/modules/good-practices-lesson/media/documentation/like_ppt.xcf
new file mode 100644
index 0000000..59b7dfe
Binary files /dev/null and b/modules/good-practices-lesson/media/documentation/like_ppt.xcf differ
diff --git a/modules/good-practices-lesson/media/documentation/logo-fc-part-white.svg b/modules/good-practices-lesson/media/documentation/logo-fc-part-white.svg
new file mode 100644
index 0000000..739dd43
--- /dev/null
+++ b/modules/good-practices-lesson/media/documentation/logo-fc-part-white.svg
@@ -0,0 +1,164 @@
+
+
diff --git a/modules/good-practices-lesson/media/documentation/logo-fc-white.svg b/modules/good-practices-lesson/media/documentation/logo-fc-white.svg
new file mode 100644
index 0000000..eb1858a
--- /dev/null
+++ b/modules/good-practices-lesson/media/documentation/logo-fc-white.svg
@@ -0,0 +1,169 @@
+
+
diff --git a/modules/good-practices-lesson/media/documentation/logo-fc.svg b/modules/good-practices-lesson/media/documentation/logo-fc.svg
new file mode 100644
index 0000000..96a1561
--- /dev/null
+++ b/modules/good-practices-lesson/media/documentation/logo-fc.svg
@@ -0,0 +1,147 @@
+
+
diff --git a/modules/good-practices-lesson/media/documentation/paint.png b/modules/good-practices-lesson/media/documentation/paint.png
new file mode 100644
index 0000000..99b6744
Binary files /dev/null and b/modules/good-practices-lesson/media/documentation/paint.png differ
diff --git a/modules/good-practices-lesson/media/documentation/purple_blob.svg b/modules/good-practices-lesson/media/documentation/purple_blob.svg
new file mode 100644
index 0000000..a3e5917
--- /dev/null
+++ b/modules/good-practices-lesson/media/documentation/purple_blob.svg
@@ -0,0 +1,71 @@
+
+
diff --git a/modules/good-practices-lesson/media/documentation/purple_strip.svg b/modules/good-practices-lesson/media/documentation/purple_strip.svg
new file mode 100644
index 0000000..aad8218
--- /dev/null
+++ b/modules/good-practices-lesson/media/documentation/purple_strip.svg
@@ -0,0 +1,72 @@
+
+
diff --git a/modules/good-practices-lesson/media/documentation/telescopic-mirror-74034_1920.jpg b/modules/good-practices-lesson/media/documentation/telescopic-mirror-74034_1920.jpg
new file mode 100644
index 0000000..7f7e8ea
Binary files /dev/null and b/modules/good-practices-lesson/media/documentation/telescopic-mirror-74034_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/documentation/whitebg.png b/modules/good-practices-lesson/media/documentation/whitebg.png
new file mode 100644
index 0000000..ff5c105
Binary files /dev/null and b/modules/good-practices-lesson/media/documentation/whitebg.png differ
diff --git a/modules/good-practices-lesson/media/documentation/yellow_strip.svg b/modules/good-practices-lesson/media/documentation/yellow_strip.svg
new file mode 100644
index 0000000..ac6387e
--- /dev/null
+++ b/modules/good-practices-lesson/media/documentation/yellow_strip.svg
@@ -0,0 +1,72 @@
+
+
diff --git a/modules/module2/media/fig-dummy.jpeg b/modules/good-practices-lesson/media/fig-dummy.jpeg
similarity index 100%
rename from modules/module2/media/fig-dummy.jpeg
rename to modules/good-practices-lesson/media/fig-dummy.jpeg
diff --git a/modules/good-practices-lesson/media/good-practices-thumbnail.png b/modules/good-practices-lesson/media/good-practices-thumbnail.png
new file mode 100644
index 0000000..51064bf
Binary files /dev/null and b/modules/good-practices-lesson/media/good-practices-thumbnail.png differ
diff --git a/modules/good-practices-lesson/media/good-practices/TUSAIL_logo.svg b/modules/good-practices-lesson/media/good-practices/TUSAIL_logo.svg
new file mode 100644
index 0000000..9cf1ef6
--- /dev/null
+++ b/modules/good-practices-lesson/media/good-practices/TUSAIL_logo.svg
@@ -0,0 +1,23 @@
+
+
+
\ No newline at end of file
diff --git a/modules/good-practices-lesson/media/good-practices/amsterdam-3736145_1920.jpg b/modules/good-practices-lesson/media/good-practices/amsterdam-3736145_1920.jpg
new file mode 100644
index 0000000..9aed1b1
Binary files /dev/null and b/modules/good-practices-lesson/media/good-practices/amsterdam-3736145_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/good-practices/branching.png b/modules/good-practices-lesson/media/good-practices/branching.png
new file mode 100644
index 0000000..2183bbb
Binary files /dev/null and b/modules/good-practices-lesson/media/good-practices/branching.png differ
diff --git a/modules/good-practices-lesson/media/good-practices/cat.jpg b/modules/good-practices-lesson/media/good-practices/cat.jpg
new file mode 100644
index 0000000..6957ed0
Binary files /dev/null and b/modules/good-practices-lesson/media/good-practices/cat.jpg differ
diff --git a/modules/good-practices-lesson/media/good-practices/cat2.jpg b/modules/good-practices-lesson/media/good-practices/cat2.jpg
new file mode 100644
index 0000000..8186ae1
Binary files /dev/null and b/modules/good-practices-lesson/media/good-practices/cat2.jpg differ
diff --git a/modules/good-practices-lesson/media/good-practices/cut_e.svg b/modules/good-practices-lesson/media/good-practices/cut_e.svg
new file mode 100644
index 0000000..bf0ac8f
--- /dev/null
+++ b/modules/good-practices-lesson/media/good-practices/cut_e.svg
@@ -0,0 +1,89 @@
+
+
diff --git a/modules/good-practices-lesson/media/good-practices/desk-593327_1920.jpg b/modules/good-practices-lesson/media/good-practices/desk-593327_1920.jpg
new file mode 100644
index 0000000..5b12841
Binary files /dev/null and b/modules/good-practices-lesson/media/good-practices/desk-593327_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/good-practices/development-speed.svg b/modules/good-practices-lesson/media/good-practices/development-speed.svg
new file mode 100644
index 0000000..e5dcfde
--- /dev/null
+++ b/modules/good-practices-lesson/media/good-practices/development-speed.svg
@@ -0,0 +1,146 @@
+
+
+
+
\ No newline at end of file
diff --git a/modules/good-practices-lesson/media/good-practices/dna-3539309_1920.jpg b/modules/good-practices-lesson/media/good-practices/dna-3539309_1920.jpg
new file mode 100644
index 0000000..4ace7d8
Binary files /dev/null and b/modules/good-practices-lesson/media/good-practices/dna-3539309_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/good-practices/e-logo.svg b/modules/good-practices-lesson/media/good-practices/e-logo.svg
new file mode 100644
index 0000000..2ce9ef2
--- /dev/null
+++ b/modules/good-practices-lesson/media/good-practices/e-logo.svg
@@ -0,0 +1,32 @@
+
+
\ No newline at end of file
diff --git a/modules/good-practices-lesson/media/good-practices/favicon-32x32.png b/modules/good-practices-lesson/media/good-practices/favicon-32x32.png
new file mode 100644
index 0000000..108414c
Binary files /dev/null and b/modules/good-practices-lesson/media/good-practices/favicon-32x32.png differ
diff --git a/modules/good-practices-lesson/media/good-practices/header-bg.svg b/modules/good-practices-lesson/media/good-practices/header-bg.svg
new file mode 100644
index 0000000..73fe494
--- /dev/null
+++ b/modules/good-practices-lesson/media/good-practices/header-bg.svg
@@ -0,0 +1,3 @@
+
diff --git a/modules/good-practices-lesson/media/good-practices/header-illustration-color.svg b/modules/good-practices-lesson/media/good-practices/header-illustration-color.svg
new file mode 100644
index 0000000..47bbc3f
--- /dev/null
+++ b/modules/good-practices-lesson/media/good-practices/header-illustration-color.svg
@@ -0,0 +1,119 @@
+
diff --git a/modules/good-practices-lesson/media/good-practices/header-illustration-frontpage-mobile.svg b/modules/good-practices-lesson/media/good-practices/header-illustration-frontpage-mobile.svg
new file mode 100644
index 0000000..3ee9e1b
--- /dev/null
+++ b/modules/good-practices-lesson/media/good-practices/header-illustration-frontpage-mobile.svg
@@ -0,0 +1,76 @@
+
diff --git a/modules/good-practices-lesson/media/good-practices/header-illustration.svg b/modules/good-practices-lesson/media/good-practices/header-illustration.svg
new file mode 100644
index 0000000..0b9dd2a
--- /dev/null
+++ b/modules/good-practices-lesson/media/good-practices/header-illustration.svg
@@ -0,0 +1,105 @@
+
+
\ No newline at end of file
diff --git a/modules/good-practices-lesson/media/good-practices/header-shape-left.svg b/modules/good-practices-lesson/media/good-practices/header-shape-left.svg
new file mode 100644
index 0000000..7fd7e20
--- /dev/null
+++ b/modules/good-practices-lesson/media/good-practices/header-shape-left.svg
@@ -0,0 +1,10 @@
+
+
+
diff --git a/modules/good-practices-lesson/media/good-practices/header-shape-right.svg b/modules/good-practices-lesson/media/good-practices/header-shape-right.svg
new file mode 100644
index 0000000..07b8ef1
--- /dev/null
+++ b/modules/good-practices-lesson/media/good-practices/header-shape-right.svg
@@ -0,0 +1,3 @@
+
diff --git a/modules/good-practices-lesson/media/good-practices/letter-e.svg b/modules/good-practices-lesson/media/good-practices/letter-e.svg
new file mode 100644
index 0000000..06ba68b
--- /dev/null
+++ b/modules/good-practices-lesson/media/good-practices/letter-e.svg
@@ -0,0 +1,3 @@
+
diff --git a/modules/good-practices-lesson/media/good-practices/like_ppt.xcf b/modules/good-practices-lesson/media/good-practices/like_ppt.xcf
new file mode 100644
index 0000000..59b7dfe
Binary files /dev/null and b/modules/good-practices-lesson/media/good-practices/like_ppt.xcf differ
diff --git a/modules/good-practices-lesson/media/good-practices/logo-fc-part-white.svg b/modules/good-practices-lesson/media/good-practices/logo-fc-part-white.svg
new file mode 100644
index 0000000..739dd43
--- /dev/null
+++ b/modules/good-practices-lesson/media/good-practices/logo-fc-part-white.svg
@@ -0,0 +1,164 @@
+
+
diff --git a/modules/good-practices-lesson/media/good-practices/logo-fc-white.svg b/modules/good-practices-lesson/media/good-practices/logo-fc-white.svg
new file mode 100644
index 0000000..eb1858a
--- /dev/null
+++ b/modules/good-practices-lesson/media/good-practices/logo-fc-white.svg
@@ -0,0 +1,169 @@
+
+
diff --git a/modules/good-practices-lesson/media/good-practices/logo-fc.svg b/modules/good-practices-lesson/media/good-practices/logo-fc.svg
new file mode 100644
index 0000000..96a1561
--- /dev/null
+++ b/modules/good-practices-lesson/media/good-practices/logo-fc.svg
@@ -0,0 +1,147 @@
+
+
diff --git a/modules/good-practices-lesson/media/good-practices/purple_blob.svg b/modules/good-practices-lesson/media/good-practices/purple_blob.svg
new file mode 100644
index 0000000..a3e5917
--- /dev/null
+++ b/modules/good-practices-lesson/media/good-practices/purple_blob.svg
@@ -0,0 +1,71 @@
+
+
diff --git a/modules/good-practices-lesson/media/good-practices/purple_strip.svg b/modules/good-practices-lesson/media/good-practices/purple_strip.svg
new file mode 100644
index 0000000..aad8218
--- /dev/null
+++ b/modules/good-practices-lesson/media/good-practices/purple_strip.svg
@@ -0,0 +1,72 @@
+
+
diff --git a/modules/good-practices-lesson/media/good-practices/telescopic-mirror-74034_1920.jpg b/modules/good-practices-lesson/media/good-practices/telescopic-mirror-74034_1920.jpg
new file mode 100644
index 0000000..7f7e8ea
Binary files /dev/null and b/modules/good-practices-lesson/media/good-practices/telescopic-mirror-74034_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/good-practices/whitebg.png b/modules/good-practices-lesson/media/good-practices/whitebg.png
new file mode 100644
index 0000000..ff5c105
Binary files /dev/null and b/modules/good-practices-lesson/media/good-practices/whitebg.png differ
diff --git a/modules/good-practices-lesson/media/good-practices/workspace-1280538_1280.jpg b/modules/good-practices-lesson/media/good-practices/workspace-1280538_1280.jpg
new file mode 100644
index 0000000..179969b
Binary files /dev/null and b/modules/good-practices-lesson/media/good-practices/workspace-1280538_1280.jpg differ
diff --git a/modules/good-practices-lesson/media/good-practices/yellow_strip.svg b/modules/good-practices-lesson/media/good-practices/yellow_strip.svg
new file mode 100644
index 0000000..ac6387e
--- /dev/null
+++ b/modules/good-practices-lesson/media/good-practices/yellow_strip.svg
@@ -0,0 +1,72 @@
+
+
diff --git a/modules/good-practices-lesson/media/modular-code/amsterdam-3736145_1920.jpg b/modules/good-practices-lesson/media/modular-code/amsterdam-3736145_1920.jpg
new file mode 100644
index 0000000..9aed1b1
Binary files /dev/null and b/modules/good-practices-lesson/media/modular-code/amsterdam-3736145_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/modular-code/cat.jpg b/modules/good-practices-lesson/media/modular-code/cat.jpg
new file mode 100644
index 0000000..6957ed0
Binary files /dev/null and b/modules/good-practices-lesson/media/modular-code/cat.jpg differ
diff --git a/modules/good-practices-lesson/media/modular-code/cat2.jpg b/modules/good-practices-lesson/media/modular-code/cat2.jpg
new file mode 100644
index 0000000..8186ae1
Binary files /dev/null and b/modules/good-practices-lesson/media/modular-code/cat2.jpg differ
diff --git a/modules/good-practices-lesson/media/modular-code/cut_e.svg b/modules/good-practices-lesson/media/modular-code/cut_e.svg
new file mode 100644
index 0000000..bf0ac8f
--- /dev/null
+++ b/modules/good-practices-lesson/media/modular-code/cut_e.svg
@@ -0,0 +1,89 @@
+
+
diff --git a/modules/good-practices-lesson/media/modular-code/desk-593327_1920.jpg b/modules/good-practices-lesson/media/modular-code/desk-593327_1920.jpg
new file mode 100644
index 0000000..5b12841
Binary files /dev/null and b/modules/good-practices-lesson/media/modular-code/desk-593327_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/modular-code/development-speed.svg b/modules/good-practices-lesson/media/modular-code/development-speed.svg
new file mode 100644
index 0000000..e5dcfde
--- /dev/null
+++ b/modules/good-practices-lesson/media/modular-code/development-speed.svg
@@ -0,0 +1,146 @@
+
+
+
+
\ No newline at end of file
diff --git a/modules/good-practices-lesson/media/modular-code/dna-3539309_1920.jpg b/modules/good-practices-lesson/media/modular-code/dna-3539309_1920.jpg
new file mode 100644
index 0000000..4ace7d8
Binary files /dev/null and b/modules/good-practices-lesson/media/modular-code/dna-3539309_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/modular-code/e-logo.svg b/modules/good-practices-lesson/media/modular-code/e-logo.svg
new file mode 100644
index 0000000..2ce9ef2
--- /dev/null
+++ b/modules/good-practices-lesson/media/modular-code/e-logo.svg
@@ -0,0 +1,32 @@
+
+
\ No newline at end of file
diff --git a/modules/good-practices-lesson/media/modular-code/favicon-32x32.png b/modules/good-practices-lesson/media/modular-code/favicon-32x32.png
new file mode 100644
index 0000000..108414c
Binary files /dev/null and b/modules/good-practices-lesson/media/modular-code/favicon-32x32.png differ
diff --git a/modules/good-practices-lesson/media/modular-code/header-bg.svg b/modules/good-practices-lesson/media/modular-code/header-bg.svg
new file mode 100644
index 0000000..73fe494
--- /dev/null
+++ b/modules/good-practices-lesson/media/modular-code/header-bg.svg
@@ -0,0 +1,3 @@
+
diff --git a/modules/good-practices-lesson/media/modular-code/header-illustration-color.svg b/modules/good-practices-lesson/media/modular-code/header-illustration-color.svg
new file mode 100644
index 0000000..47bbc3f
--- /dev/null
+++ b/modules/good-practices-lesson/media/modular-code/header-illustration-color.svg
@@ -0,0 +1,119 @@
+
diff --git a/modules/good-practices-lesson/media/modular-code/header-illustration-frontpage-mobile.svg b/modules/good-practices-lesson/media/modular-code/header-illustration-frontpage-mobile.svg
new file mode 100644
index 0000000..3ee9e1b
--- /dev/null
+++ b/modules/good-practices-lesson/media/modular-code/header-illustration-frontpage-mobile.svg
@@ -0,0 +1,76 @@
+
diff --git a/modules/good-practices-lesson/media/modular-code/header-illustration.svg b/modules/good-practices-lesson/media/modular-code/header-illustration.svg
new file mode 100644
index 0000000..0b9dd2a
--- /dev/null
+++ b/modules/good-practices-lesson/media/modular-code/header-illustration.svg
@@ -0,0 +1,105 @@
+
+
\ No newline at end of file
diff --git a/modules/good-practices-lesson/media/modular-code/header-shape-left.svg b/modules/good-practices-lesson/media/modular-code/header-shape-left.svg
new file mode 100644
index 0000000..7fd7e20
--- /dev/null
+++ b/modules/good-practices-lesson/media/modular-code/header-shape-left.svg
@@ -0,0 +1,10 @@
+
+
+
diff --git a/modules/good-practices-lesson/media/modular-code/header-shape-right.svg b/modules/good-practices-lesson/media/modular-code/header-shape-right.svg
new file mode 100644
index 0000000..07b8ef1
--- /dev/null
+++ b/modules/good-practices-lesson/media/modular-code/header-shape-right.svg
@@ -0,0 +1,3 @@
+
diff --git a/modules/good-practices-lesson/media/modular-code/letter-e.svg b/modules/good-practices-lesson/media/modular-code/letter-e.svg
new file mode 100644
index 0000000..06ba68b
--- /dev/null
+++ b/modules/good-practices-lesson/media/modular-code/letter-e.svg
@@ -0,0 +1,3 @@
+
diff --git a/modules/good-practices-lesson/media/modular-code/like_ppt.xcf b/modules/good-practices-lesson/media/modular-code/like_ppt.xcf
new file mode 100644
index 0000000..59b7dfe
Binary files /dev/null and b/modules/good-practices-lesson/media/modular-code/like_ppt.xcf differ
diff --git a/modules/good-practices-lesson/media/modular-code/logo-fc-part-white.svg b/modules/good-practices-lesson/media/modular-code/logo-fc-part-white.svg
new file mode 100644
index 0000000..739dd43
--- /dev/null
+++ b/modules/good-practices-lesson/media/modular-code/logo-fc-part-white.svg
@@ -0,0 +1,164 @@
+
+
diff --git a/modules/good-practices-lesson/media/modular-code/logo-fc-white.svg b/modules/good-practices-lesson/media/modular-code/logo-fc-white.svg
new file mode 100644
index 0000000..eb1858a
--- /dev/null
+++ b/modules/good-practices-lesson/media/modular-code/logo-fc-white.svg
@@ -0,0 +1,169 @@
+
+
diff --git a/modules/good-practices-lesson/media/modular-code/logo-fc.svg b/modules/good-practices-lesson/media/modular-code/logo-fc.svg
new file mode 100644
index 0000000..96a1561
--- /dev/null
+++ b/modules/good-practices-lesson/media/modular-code/logo-fc.svg
@@ -0,0 +1,147 @@
+
+
diff --git a/modules/good-practices-lesson/media/modular-code/modularity_meme.png b/modules/good-practices-lesson/media/modular-code/modularity_meme.png
new file mode 100644
index 0000000..37500ca
Binary files /dev/null and b/modules/good-practices-lesson/media/modular-code/modularity_meme.png differ
diff --git a/modules/good-practices-lesson/media/modular-code/modules-bad-connection.png b/modules/good-practices-lesson/media/modular-code/modules-bad-connection.png
new file mode 100644
index 0000000..0878b55
Binary files /dev/null and b/modules/good-practices-lesson/media/modular-code/modules-bad-connection.png differ
diff --git a/modules/good-practices-lesson/media/modular-code/modules-good-connection.png b/modules/good-practices-lesson/media/modular-code/modules-good-connection.png
new file mode 100644
index 0000000..936ed84
Binary files /dev/null and b/modules/good-practices-lesson/media/modular-code/modules-good-connection.png differ
diff --git a/modules/good-practices-lesson/media/modular-code/purple_blob.svg b/modules/good-practices-lesson/media/modular-code/purple_blob.svg
new file mode 100644
index 0000000..a3e5917
--- /dev/null
+++ b/modules/good-practices-lesson/media/modular-code/purple_blob.svg
@@ -0,0 +1,71 @@
+
+
diff --git a/modules/good-practices-lesson/media/modular-code/purple_strip.svg b/modules/good-practices-lesson/media/modular-code/purple_strip.svg
new file mode 100644
index 0000000..aad8218
--- /dev/null
+++ b/modules/good-practices-lesson/media/modular-code/purple_strip.svg
@@ -0,0 +1,72 @@
+
+
diff --git a/modules/good-practices-lesson/media/modular-code/reuse_module.png b/modules/good-practices-lesson/media/modular-code/reuse_module.png
new file mode 100644
index 0000000..4e40033
Binary files /dev/null and b/modules/good-practices-lesson/media/modular-code/reuse_module.png differ
diff --git a/modules/good-practices-lesson/media/modular-code/scalability.png b/modules/good-practices-lesson/media/modular-code/scalability.png
new file mode 100644
index 0000000..a5d9500
Binary files /dev/null and b/modules/good-practices-lesson/media/modular-code/scalability.png differ
diff --git a/modules/good-practices-lesson/media/modular-code/telescopic-mirror-74034_1920.jpg b/modules/good-practices-lesson/media/modular-code/telescopic-mirror-74034_1920.jpg
new file mode 100644
index 0000000..7f7e8ea
Binary files /dev/null and b/modules/good-practices-lesson/media/modular-code/telescopic-mirror-74034_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/modular-code/testing_module.png b/modules/good-practices-lesson/media/modular-code/testing_module.png
new file mode 100644
index 0000000..7ad8672
Binary files /dev/null and b/modules/good-practices-lesson/media/modular-code/testing_module.png differ
diff --git a/modules/good-practices-lesson/media/modular-code/testing_module_maintenance.png b/modules/good-practices-lesson/media/modular-code/testing_module_maintenance.png
new file mode 100644
index 0000000..ac75fc9
Binary files /dev/null and b/modules/good-practices-lesson/media/modular-code/testing_module_maintenance.png differ
diff --git a/modules/good-practices-lesson/media/modular-code/tetris_innovation.png b/modules/good-practices-lesson/media/modular-code/tetris_innovation.png
new file mode 100644
index 0000000..5bdbc95
Binary files /dev/null and b/modules/good-practices-lesson/media/modular-code/tetris_innovation.png differ
diff --git a/modules/good-practices-lesson/media/modular-code/whitebg.png b/modules/good-practices-lesson/media/modular-code/whitebg.png
new file mode 100644
index 0000000..ff5c105
Binary files /dev/null and b/modules/good-practices-lesson/media/modular-code/whitebg.png differ
diff --git a/modules/good-practices-lesson/media/modular-code/yellow_strip.svg b/modules/good-practices-lesson/media/modular-code/yellow_strip.svg
new file mode 100644
index 0000000..ac6387e
--- /dev/null
+++ b/modules/good-practices-lesson/media/modular-code/yellow_strip.svg
@@ -0,0 +1,72 @@
+
+
diff --git a/modules/module2/media/nlesc-dummy.png b/modules/good-practices-lesson/media/nlesc-dummy.png
similarity index 100%
rename from modules/module2/media/nlesc-dummy.png
rename to modules/good-practices-lesson/media/nlesc-dummy.png
diff --git a/modules/good-practices-lesson/media/testing/606762245.mp4 b/modules/good-practices-lesson/media/testing/606762245.mp4
new file mode 100644
index 0000000..d05d915
Binary files /dev/null and b/modules/good-practices-lesson/media/testing/606762245.mp4 differ
diff --git a/modules/good-practices-lesson/media/testing/Python_logo_icon.png b/modules/good-practices-lesson/media/testing/Python_logo_icon.png
new file mode 100644
index 0000000..89cffdd
Binary files /dev/null and b/modules/good-practices-lesson/media/testing/Python_logo_icon.png differ
diff --git a/modules/good-practices-lesson/media/testing/amsterdam-3736145_1920.jpg b/modules/good-practices-lesson/media/testing/amsterdam-3736145_1920.jpg
new file mode 100644
index 0000000..9aed1b1
Binary files /dev/null and b/modules/good-practices-lesson/media/testing/amsterdam-3736145_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/testing/box-write-in-it-5279529_1280.jpg b/modules/good-practices-lesson/media/testing/box-write-in-it-5279529_1280.jpg
new file mode 100644
index 0000000..833a291
Binary files /dev/null and b/modules/good-practices-lesson/media/testing/box-write-in-it-5279529_1280.jpg differ
diff --git a/modules/good-practices-lesson/media/testing/car-5500794_1280.jpg b/modules/good-practices-lesson/media/testing/car-5500794_1280.jpg
new file mode 100644
index 0000000..9311ebe
Binary files /dev/null and b/modules/good-practices-lesson/media/testing/car-5500794_1280.jpg differ
diff --git a/modules/good-practices-lesson/media/testing/cat.jpg b/modules/good-practices-lesson/media/testing/cat.jpg
new file mode 100644
index 0000000..6957ed0
Binary files /dev/null and b/modules/good-practices-lesson/media/testing/cat.jpg differ
diff --git a/modules/good-practices-lesson/media/testing/cat2.jpg b/modules/good-practices-lesson/media/testing/cat2.jpg
new file mode 100644
index 0000000..8186ae1
Binary files /dev/null and b/modules/good-practices-lesson/media/testing/cat2.jpg differ
diff --git a/modules/good-practices-lesson/media/testing/cut_e.svg b/modules/good-practices-lesson/media/testing/cut_e.svg
new file mode 100644
index 0000000..bf0ac8f
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/cut_e.svg
@@ -0,0 +1,89 @@
+
+
diff --git a/modules/good-practices-lesson/media/testing/desk-593327_1920.jpg b/modules/good-practices-lesson/media/testing/desk-593327_1920.jpg
new file mode 100644
index 0000000..5b12841
Binary files /dev/null and b/modules/good-practices-lesson/media/testing/desk-593327_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/testing/dev_speed_time.svg b/modules/good-practices-lesson/media/testing/dev_speed_time.svg
new file mode 100644
index 0000000..5cfa31c
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/dev_speed_time.svg
@@ -0,0 +1,230 @@
+
+
diff --git a/modules/good-practices-lesson/media/testing/dev_speed_time_1.svg b/modules/good-practices-lesson/media/testing/dev_speed_time_1.svg
new file mode 100644
index 0000000..df80e13
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/dev_speed_time_1.svg
@@ -0,0 +1,226 @@
+
+
diff --git a/modules/good-practices-lesson/media/testing/dev_speed_time_2.svg b/modules/good-practices-lesson/media/testing/dev_speed_time_2.svg
new file mode 100644
index 0000000..da392c5
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/dev_speed_time_2.svg
@@ -0,0 +1,204 @@
+
+
diff --git a/modules/good-practices-lesson/media/testing/dna-3539309_1920.jpg b/modules/good-practices-lesson/media/testing/dna-3539309_1920.jpg
new file mode 100644
index 0000000..4ace7d8
Binary files /dev/null and b/modules/good-practices-lesson/media/testing/dna-3539309_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/testing/e-logo.svg b/modules/good-practices-lesson/media/testing/e-logo.svg
new file mode 100644
index 0000000..2ce9ef2
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/e-logo.svg
@@ -0,0 +1,32 @@
+
+
\ No newline at end of file
diff --git a/modules/good-practices-lesson/media/testing/favicon-32x32.png b/modules/good-practices-lesson/media/testing/favicon-32x32.png
new file mode 100644
index 0000000..108414c
Binary files /dev/null and b/modules/good-practices-lesson/media/testing/favicon-32x32.png differ
diff --git a/modules/good-practices-lesson/media/testing/fizz_buzz.svg b/modules/good-practices-lesson/media/testing/fizz_buzz.svg
new file mode 100644
index 0000000..0ff6636
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/fizz_buzz.svg
@@ -0,0 +1,31750 @@
+
+
diff --git a/modules/good-practices-lesson/media/testing/fizz_buzz_1.svg b/modules/good-practices-lesson/media/testing/fizz_buzz_1.svg
new file mode 100644
index 0000000..7cfe1eb
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/fizz_buzz_1.svg
@@ -0,0 +1,2548 @@
+
+
diff --git a/modules/good-practices-lesson/media/testing/fizz_buzz_2.svg b/modules/good-practices-lesson/media/testing/fizz_buzz_2.svg
new file mode 100644
index 0000000..18e1ea2
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/fizz_buzz_2.svg
@@ -0,0 +1,2532 @@
+
+
diff --git a/modules/good-practices-lesson/media/testing/fizz_buzz_3.svg b/modules/good-practices-lesson/media/testing/fizz_buzz_3.svg
new file mode 100644
index 0000000..d286b90
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/fizz_buzz_3.svg
@@ -0,0 +1,8236 @@
+
+
diff --git a/modules/good-practices-lesson/media/testing/fizz_buzz_4.svg b/modules/good-practices-lesson/media/testing/fizz_buzz_4.svg
new file mode 100644
index 0000000..a750f0c
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/fizz_buzz_4.svg
@@ -0,0 +1,2666 @@
+
+
diff --git a/modules/good-practices-lesson/media/testing/fizz_buzz_5.svg b/modules/good-practices-lesson/media/testing/fizz_buzz_5.svg
new file mode 100644
index 0000000..9df1ff0
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/fizz_buzz_5.svg
@@ -0,0 +1,19932 @@
+
+
diff --git a/modules/good-practices-lesson/media/testing/fizz_buzz_6.svg b/modules/good-practices-lesson/media/testing/fizz_buzz_6.svg
new file mode 100644
index 0000000..ce86fb8
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/fizz_buzz_6.svg
@@ -0,0 +1,8476 @@
+
+
diff --git a/modules/good-practices-lesson/media/testing/header-bg.svg b/modules/good-practices-lesson/media/testing/header-bg.svg
new file mode 100644
index 0000000..73fe494
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/header-bg.svg
@@ -0,0 +1,3 @@
+
diff --git a/modules/good-practices-lesson/media/testing/header-illustration-color.svg b/modules/good-practices-lesson/media/testing/header-illustration-color.svg
new file mode 100644
index 0000000..47bbc3f
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/header-illustration-color.svg
@@ -0,0 +1,119 @@
+
diff --git a/modules/good-practices-lesson/media/testing/header-illustration-frontpage-mobile.svg b/modules/good-practices-lesson/media/testing/header-illustration-frontpage-mobile.svg
new file mode 100644
index 0000000..3ee9e1b
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/header-illustration-frontpage-mobile.svg
@@ -0,0 +1,76 @@
+
diff --git a/modules/good-practices-lesson/media/testing/header-illustration.svg b/modules/good-practices-lesson/media/testing/header-illustration.svg
new file mode 100644
index 0000000..0b9dd2a
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/header-illustration.svg
@@ -0,0 +1,105 @@
+
+
\ No newline at end of file
diff --git a/modules/good-practices-lesson/media/testing/header-shape-left.svg b/modules/good-practices-lesson/media/testing/header-shape-left.svg
new file mode 100644
index 0000000..7fd7e20
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/header-shape-left.svg
@@ -0,0 +1,10 @@
+
+
+
diff --git a/modules/good-practices-lesson/media/testing/header-shape-right.svg b/modules/good-practices-lesson/media/testing/header-shape-right.svg
new file mode 100644
index 0000000..07b8ef1
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/header-shape-right.svg
@@ -0,0 +1,3 @@
+
diff --git a/modules/good-practices-lesson/media/testing/lab-gbbd4af2a9_1280.jpg b/modules/good-practices-lesson/media/testing/lab-gbbd4af2a9_1280.jpg
new file mode 100644
index 0000000..69ff3f4
Binary files /dev/null and b/modules/good-practices-lesson/media/testing/lab-gbbd4af2a9_1280.jpg differ
diff --git a/modules/good-practices-lesson/media/testing/letter-e.svg b/modules/good-practices-lesson/media/testing/letter-e.svg
new file mode 100644
index 0000000..06ba68b
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/letter-e.svg
@@ -0,0 +1,3 @@
+
diff --git a/modules/good-practices-lesson/media/testing/like_ppt.xcf b/modules/good-practices-lesson/media/testing/like_ppt.xcf
new file mode 100644
index 0000000..59b7dfe
Binary files /dev/null and b/modules/good-practices-lesson/media/testing/like_ppt.xcf differ
diff --git a/modules/good-practices-lesson/media/testing/logo-fc-part-white.svg b/modules/good-practices-lesson/media/testing/logo-fc-part-white.svg
new file mode 100644
index 0000000..739dd43
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/logo-fc-part-white.svg
@@ -0,0 +1,164 @@
+
+
diff --git a/modules/good-practices-lesson/media/testing/logo-fc-white.svg b/modules/good-practices-lesson/media/testing/logo-fc-white.svg
new file mode 100644
index 0000000..eb1858a
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/logo-fc-white.svg
@@ -0,0 +1,169 @@
+
+
diff --git a/modules/good-practices-lesson/media/testing/logo-fc.svg b/modules/good-practices-lesson/media/testing/logo-fc.svg
new file mode 100644
index 0000000..96a1561
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/logo-fc.svg
@@ -0,0 +1,147 @@
+
+
diff --git a/modules/good-practices-lesson/media/testing/purple_blob.svg b/modules/good-practices-lesson/media/testing/purple_blob.svg
new file mode 100644
index 0000000..a3e5917
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/purple_blob.svg
@@ -0,0 +1,71 @@
+
+
diff --git a/modules/good-practices-lesson/media/testing/purple_strip.svg b/modules/good-practices-lesson/media/testing/purple_strip.svg
new file mode 100644
index 0000000..aad8218
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/purple_strip.svg
@@ -0,0 +1,72 @@
+
+
diff --git a/modules/good-practices-lesson/media/testing/pytest_logo.svg b/modules/good-practices-lesson/media/testing/pytest_logo.svg
new file mode 100644
index 0000000..e05ceb1
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/pytest_logo.svg
@@ -0,0 +1,29 @@
+
+
+
diff --git a/modules/good-practices-lesson/media/testing/scale-ga51297104_640.png b/modules/good-practices-lesson/media/testing/scale-ga51297104_640.png
new file mode 100644
index 0000000..328b7a0
Binary files /dev/null and b/modules/good-practices-lesson/media/testing/scale-ga51297104_640.png differ
diff --git a/modules/good-practices-lesson/media/testing/telescopic-mirror-74034_1920.jpg b/modules/good-practices-lesson/media/testing/telescopic-mirror-74034_1920.jpg
new file mode 100644
index 0000000..7f7e8ea
Binary files /dev/null and b/modules/good-practices-lesson/media/testing/telescopic-mirror-74034_1920.jpg differ
diff --git a/modules/good-practices-lesson/media/testing/water-1761027_1280.jpg b/modules/good-practices-lesson/media/testing/water-1761027_1280.jpg
new file mode 100644
index 0000000..d3e2029
Binary files /dev/null and b/modules/good-practices-lesson/media/testing/water-1761027_1280.jpg differ
diff --git a/modules/good-practices-lesson/media/testing/whitebg.png b/modules/good-practices-lesson/media/testing/whitebg.png
new file mode 100644
index 0000000..ff5c105
Binary files /dev/null and b/modules/good-practices-lesson/media/testing/whitebg.png differ
diff --git a/modules/good-practices-lesson/media/testing/yellow_strip.svg b/modules/good-practices-lesson/media/testing/yellow_strip.svg
new file mode 100644
index 0000000..ac6387e
--- /dev/null
+++ b/modules/good-practices-lesson/media/testing/yellow_strip.svg
@@ -0,0 +1,72 @@
+
+
diff --git a/modules/good-practices-lesson/modular-code-slides.md b/modules/good-practices-lesson/modular-code-slides.md
new file mode 100644
index 0000000..1275bbb
--- /dev/null
+++ b/modules/good-practices-lesson/modular-code-slides.md
@@ -0,0 +1,294 @@
+---
+title: Modular Code
+type: slides
+order: 2
+author: Barbara Vreede, Ole Mussmann
+description: Day 3 Code Refinery
+---
+
+
+
+# Developing Modular Code
+
+note:
+
+
+===
+
+
+
+## What is modularity?
+
+- Software is 'built up' from smaller elements
+- Elements are self-contained and independent
+- Each element handles a specific (set of) task(s)
+
+**Simple components** build **complex behavior**.
+
+===
+
+
+
+## Modular code
+
+
+
+===
+
+
+
+## What are these blocks/elements?
+
+- functions
+- classes
+- modules
+- libraries/packages
+- programs
+
+===
+
+
+
+## Why write modular code?
+
+To increase robustness:
+
+
+
+- A well-designed module can be tested.
+- This helps keep the codebase well-functioning and bug-free.
+
+===
+
+
+
+## Why write modular code?
+
+To make maintenance easier:
+
+
+
+- Modular code is more readable and understandable.
+- Modules can be debugged separately.
+
+===
+
+
+
+## Why write modular code?
+
+To allow reusability:
+
+
+
+- A module can live independent of its original context
+- It can be reused by another project
+
+===
+
+
+
+## Why write modular code?
+
+To facilitate scalability:
+
+
+
+
+
+
+- Complexity remains low by design
+- This creates space for scaling up
+
+
+
+===
+
+
+
+## Why write modular code?
+
+To create opportunities for innovation:
+
+
+
+- Modules increase the capabilities and power of a project
+- Rearrange old modules for new applications
+
+===
+
+
+
+
+
+
+
+
+## A good module...
+
+- performs limited and clearly defined tasks
+- has a good name
+
+- is readable
+
+
+===
+
+
+
+## Readability =/= shorter code
+
+Shorter:
+```python=
+indexATG = [n for n,i in enumerate(myList) if i == 'ATG']
+indexAAG = [n for n,i in enumerate(myList) if i == 'AAG']
+```
+
+More modular:
+```python=
+def getIndex(inputList,z):
+ zIndex = [n for n,i in enumerate(li) if i == z]
+ return zIndex
+
+indexATG = getIndex(myList,'ATG')
+indexAAG = getIndex(myList,'AAG')
+```
+
+===
+
+
+
+## A good module...
+
+- performs limited and clearly defined tasks
+- has a good name
+- is readable
+- is pure/does not have a 'state'
+
+===
+
+
+
+## A pure function
+
+has no side-effects:
+
+```python=
+def fahrenheit_to_celsius(temp_f):
+ temp_c = (temp_f - 32.0) * (5.0/9.0)
+ return temp_c
+
+>>> temp_c = fahrenheit_to_celsius(temp_f=77.0)
+>>> print(temp_c)
+25.0
+```
+
+===
+
+
+
+## A stateful function
+
+changes its environment:
+
+```python=
+def fahrenheit_to_celsius(temp_f):
+ global temp_c
+ temp_c = (temp_f - f_to_c_offset) * f_to_c_factor
+
+>>> f_to_c_offset = 32.0
+>>> f_to_c_factor = (5.0/9.0)
+>>> temp_c = 0.0
+>>> print(temp_c)
+0.0
+>>> fahrenheit_to_celsius(temp_f=77.0)
+>>> print(temp_c)
+25.0
+```
+
+===
+
+
+
+## Identifying opportunities for modularization
+
+===
+
+
+
+## Focus on readability
+
+- Modular code becomes more readable
+- Code is read more than it is written
+- Does a reader understand what the code does?
+- Bad readability can be a "code smell"
+
+===
+
+
+
+## Identify future functions
+
+- Don't Repeat Yourself (DRY): place reused code into a function
+- Identify potential functions by their _action_
+ (e.g. "plotting", "transforming", "extracting", "saving")
+
+===
+
+
+
+## Target nested code
+
+Nested code is a prime target for modularization:
+
+```python=
+def checkTemperature(degrees):
+ if degrees < 0:
+ if degrees < -273:
+ if degrees < -459:
+ print("This temperature is impossible.")
+ else:
+ print("This temperature is likely Fahrenheit.")
+ else:
+ print("This temperature is either Celsius or Fahrenheit.")
+ else:
+ print("This temperature is in Kelvin, Celsius, or Fahrhenheit.")
+```
+
+===
+
+
+
+## Reduce nestedness
+
+by extracting modules:
+
+```python=
+def validTemp(degrees):
+ if degrees < -459:
+ return FALSE
+ return TRUE
+
+def checkTemperature(degrees):
+ if not validTemp(degrees):
+ return "invalid temperature"
+ if degrees < 0:
+ if degrees < -273:
+ print("This temperature is likely Fahrenheit.")
+ else:
+ print("This temperature is either Celsius or Fahrenheit.")
+ else:
+ print("This temperature is in Kelvin, Celsius, or Fahrhenheit.")
+```
+
+===
+
+
+
+## Let tests help you
+
+- Write tests for each individual module
+- Use the test-writing procedure to look critically at the module's function:
+ - Is the input/output clear?
+ - What can you not yet test? Extract it into a new module.
+
diff --git a/modules/good-practices-lesson/testing-slides.md b/modules/good-practices-lesson/testing-slides.md
new file mode 100644
index 0000000..2620a7c
--- /dev/null
+++ b/modules/good-practices-lesson/testing-slides.md
@@ -0,0 +1,327 @@
+---
+title: Testing
+type: slides
+order: 4
+author: Ole Mussmann
+description: Getting more professional
+---
+
+
+
+# Testing
+
+note:
+
+===
+
+
+
+## Why Test?
+
+
+
Preserve functionality
+
+
Detect new errors early
+
Facilitate reproducibility for research software
+
+
Help users
+
+
Verify correct installation
+
Improve correctness for research output
+
+
Enable developers
+
+
Make refactoring easier
+
Simplify external contributions
+
+
+
+
🧮 Manage Complexity 🧩
+
+===
+
+
+
+## Test Types
+
+
+
Unit test
+
+
Smallest possible unit
+
No dependency on outside code...
+
(... replace them with mocks, stubs, etc.)
+
+
+
+
Integration test
+
+
Test unit interaction
+
Can be on small scales, or system wide
+
+
+
+
+
+===
+
+
+
+
+## How much testing is enough?
+
+Test metrics:
+
+- lines of code : lines of tests (target: 1:3)
+- test coverage [example](https://sonarcloud.io/component_measures?id=eWaterCycle_ewatercycle&metric=coverage&view=treemap&selected=eWaterCycle_ewatercycle%3Aewatercycle) (target: >= 80%)
+
+Targets are defined as *necessary*, but *not sufficient* goals.
+
+
+===
+
+
+
+# PyTest
+
+- recommended python testing framework
+- [docs.pytest.org](https://docs.pytest.org/en/7.3.x/)
+
+
+
+===
+
+
+
+## Write Code
+
+
+$ pytest example.py
+======================== test session starts =========================
+platform linux -- Python 3.6.9, pytest-7.0.1, pluggy-1.0.0
+rootdir: /home/ole/Desktop/pytest-texample
+collected 1 item
+
+example.py F [100%]
+
+============================== FAILURES ==============================
+______________________________ test_add ______________________________
+
+ def test_add():
+> assert add(2, 3) == 5
+E assert -1 == 5
+E + where -1 = add(2, 3)
+
+example.py:6: AssertionError
+====================== short test summary info =======================
+FAILED example.py::test_add - assert -1 == 5
+========================= 1 failed in 0.05s ==========================
+
+
+
+
🚀❓Functions fail on first error
+
But all test functions are executed
+
+
+===
+
+
+
+## Take-away
+
+- pytest collects and runs all test functions starting with test_
+- The tests pass when they do not throw (assertion) errors
+
+
+def last(my_array):
+ return my_array[-1]
+
+def add(a, b):
+ return a + b
+
+print(add(1, 2))
+print(3)
+
+
+
+
Pure functions are easy to understand and test!
+
+
+
+===
+
+
+
+## Take-away
+
+- Use pure functions when possible 👌
+- Testing does not have to be hard 👏
+ - You test anyways, but then throw the test away 🧐
+- You don't have to strive for 💯% test coverage
+- Aim for a balance between unit- and integration tests ⚖️
+- Testing removes the dread of refactoring 🔁
+- Your future you (and others!) will thank you 🙏
+
+===
+
+
+
+# Test-Driven Development: FizzBuzz Function
+
+
+
+
+
+
+
+
+
+
+
+
fizz_buzz() takes an integer argument and returns it, BUT
+
+
fails on zero or negative numbers
+
instead returns "Fizz" on multiples of 3
+
instead returns "Buzz" on multiples of 5
+
instead returns "FizzBuzz" on multiples of 3 and 5
+
+
+
+===
+
+
+
+## FizzBuzz Function
+
+
+
fizz_buzz() takes an integer argument and returns it, BUT
+
+
fails on zero or negative numbers
+
instead returns "Fizz" on multiples of 3
+
instead returns "Buzz" on multiples of 5
+
instead returns "FizzBuzz" on multiples of 3 and 5
+
+
Create an empty function fizz_buzz()
+
Write the tests
+
Paste your tests in the collab document, and discuss
+
Now write a function code to make your tests pass
+
+
+===
+
+
+
+## Take-away
+
+- What did you think of this style of development?
+- Was it easier or harder than just writing code?
+- Would your code look different without the tests?
+- For what kind of projects would it be (not) useful?
+
+
Test-Driven Development (TDD) is an optional tool in your toolbox 🛠️
diff --git a/modules/module1/exercises_module1.md b/modules/module1/exercises_module1.md
deleted file mode 100644
index 018457c..0000000
--- a/modules/module1/exercises_module1.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Exercises
-type: exercise
-order: 2
----
-
-# Exercises
-
-Add here your exercises...
\ No newline at end of file
diff --git a/modules/module1/further_reading_module1.md b/modules/module1/further_reading_module1.md
deleted file mode 100644
index 4661fb3..0000000
--- a/modules/module1/further_reading_module1.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Reading material
-type: reading
-order: 3
----
-
-# Reading material
-
-Add here links to relevant reading material...
\ No newline at end of file
diff --git a/modules/module1/index.md b/modules/module1/index.md
deleted file mode 100644
index 9d7b88b..0000000
--- a/modules/module1/index.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-id: 0
-trl: medium
-category: Category1
-title: Title of module 1
-author: eScience Center
-thumbnail: "nlesc-dummy.png"
-visibility: visible
----
-
-# Category 1
\ No newline at end of file
diff --git a/modules/module1/info.md b/modules/module1/info.md
deleted file mode 100644
index 756fc8a..0000000
--- a/modules/module1/info.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-title: Learning objectives
-type: info
-order: 0
----
-
-Learning objectives of Module 1
\ No newline at end of file
diff --git a/modules/module1/slides_module1.md b/modules/module1/slides_module1.md
deleted file mode 100644
index a1c23c7..0000000
--- a/modules/module1/slides_module1.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-title: Module 1
-type: slides
-order: 1
----
-
-
-
-# Module 1
-
-===
-
-
-
-## Title of the first slide
-
-
-
-
-
-Note:
-
-Add notes to the presenter...
-
-===
-
-
-
-
-www.esciencecenter.nl
-
-info@esciencecenter.nl
-
-020 - 460 47 70
diff --git a/modules/module2/exercises_module2.md b/modules/module2/exercises_module2.md
deleted file mode 100644
index 018457c..0000000
--- a/modules/module2/exercises_module2.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Exercises
-type: exercise
-order: 2
----
-
-# Exercises
-
-Add here your exercises...
\ No newline at end of file
diff --git a/modules/module2/further_reading_module2.md b/modules/module2/further_reading_module2.md
deleted file mode 100644
index 4661fb3..0000000
--- a/modules/module2/further_reading_module2.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Reading material
-type: reading
-order: 3
----
-
-# Reading material
-
-Add here links to relevant reading material...
\ No newline at end of file
diff --git a/modules/module2/index.md b/modules/module2/index.md
deleted file mode 100644
index 3c9d2fe..0000000
--- a/modules/module2/index.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-id: 1
-trl: medium
-category: Category2
-title: Title of module 2
-author: eScience Center
-thumbnail: "nlesc-dummy.png"
-visibility: visible
----
-
-# Category 2
\ No newline at end of file
diff --git a/modules/module2/info.md b/modules/module2/info.md
deleted file mode 100644
index 29696de..0000000
--- a/modules/module2/info.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-title: Learning objectives
-type: info
-order: 0
----
-
-Learning objectives of Module 2
\ No newline at end of file
diff --git a/modules/module2/slides_module2.md b/modules/module2/slides_module2.md
deleted file mode 100644
index b51ea1f..0000000
--- a/modules/module2/slides_module2.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-title: Module 2
-type: slides
-order: 1
----
-
-
-
-# Module 2
-
-===
-
-
-
-## Title of the first slide
-
-