diff --git a/novice/git/01-backup.md b/novice/git/01-backup.md
index bb82d5ee7..c78b90f32 100644
--- a/novice/git/01-backup.md
+++ b/novice/git/01-backup.md
@@ -870,6 +870,12 @@ nothing to commit, working directory clean
+#### Concept Map
+
+
+
+#### Challenges
+
Create a new Git repository on your computer called `bio`.
Write a three-line biography for yourself in a file called `me.txt`,
diff --git a/novice/git/02-collab.md b/novice/git/02-collab.md
index cc06c6a12..2620a94b8 100644
--- a/novice/git/02-collab.md
+++ b/novice/git/02-collab.md
@@ -264,6 +264,12 @@ to share work between different people and machines.
+#### Concept Map
+
+
+
+#### Challenges
+
Create a repository on GitHub,
clone it,
diff --git a/novice/git/03-conflict.md b/novice/git/03-conflict.md
index 319f573fd..3950a2523 100644
--- a/novice/git/03-conflict.md
+++ b/novice/git/03-conflict.md
@@ -315,6 +315,12 @@ or find a way to divide the work up differently.
+#### Concept Map
+
+
+
+#### Challenges
+
Clone the repository created by your instructor.
Add a new file to it,
diff --git a/novice/git/img/01-backup.gv b/novice/git/img/01-backup.gv
new file mode 100644
index 000000000..a49b24942
--- /dev/null
+++ b/novice/git/img/01-backup.gv
@@ -0,0 +1,13 @@
+graph G {
+ repository [style=bold];
+ commit [style=bold];
+ git -- repository;
+ repository -- commit;
+ commit -- "commit message";
+ commit -- identifier;
+ repository -- "staging area" -- "working files";
+ repository -- log -- commit;
+ git -- "git diff";
+ git -- "git checkout";
+ repository -- ".gitignore";
+}
\ No newline at end of file
diff --git a/novice/git/img/01-backup.gv.svg b/novice/git/img/01-backup.gv.svg
new file mode 100644
index 000000000..2739d5239
--- /dev/null
+++ b/novice/git/img/01-backup.gv.svg
@@ -0,0 +1,112 @@
+
+
+
+
+
diff --git a/novice/git/img/02-collab.gv b/novice/git/img/02-collab.gv
new file mode 100644
index 000000000..74b2fa1d2
--- /dev/null
+++ b/novice/git/img/02-collab.gv
@@ -0,0 +1,9 @@
+digraph G {
+ local [shape=rect, label="local repository"];
+ otherlocal [shape=rect, label="collaborator's local repository"];
+ remote [shape=rect, label="remote repository"];
+ remote -> local [label="clone"];
+ remote -> local [label="pull"];
+ local -> remote [label="push"];
+ remote -> otherlocal [label="clone"];
+}
\ No newline at end of file
diff --git a/novice/git/img/02-collab.gv.svg b/novice/git/img/02-collab.gv.svg
new file mode 100644
index 000000000..58c6b0393
--- /dev/null
+++ b/novice/git/img/02-collab.gv.svg
@@ -0,0 +1,52 @@
+
+
+
+
+
diff --git a/novice/git/img/03-conflict.gv b/novice/git/img/03-conflict.gv
new file mode 100644
index 000000000..74b2fa1d2
--- /dev/null
+++ b/novice/git/img/03-conflict.gv
@@ -0,0 +1,9 @@
+digraph G {
+ local [shape=rect, label="local repository"];
+ otherlocal [shape=rect, label="collaborator's local repository"];
+ remote [shape=rect, label="remote repository"];
+ remote -> local [label="clone"];
+ remote -> local [label="pull"];
+ local -> remote [label="push"];
+ remote -> otherlocal [label="clone"];
+}
\ No newline at end of file
diff --git a/novice/git/img/03-conflict.gv.svg b/novice/git/img/03-conflict.gv.svg
new file mode 100644
index 000000000..58c6b0393
--- /dev/null
+++ b/novice/git/img/03-conflict.gv.svg
@@ -0,0 +1,52 @@
+
+
+
+
+
diff --git a/novice/shell/00-intro.md b/novice/shell/00-intro.md
index 77d838ce1..9cbbc327d 100644
--- a/novice/shell/00-intro.md
+++ b/novice/shell/00-intro.md
@@ -135,3 +135,7 @@ being able to drive them is becoming a necessary skill.
and how cryptic its commands and operation can be.
+
+#### Concept Map
+
+
diff --git a/novice/shell/01-filedir.md b/novice/shell/01-filedir.md
index a2957dd9a..c10bb6fbc 100644
--- a/novice/shell/01-filedir.md
+++ b/novice/shell/01-filedir.md
@@ -230,6 +230,10 @@ rather than from the root of the file system.
> most people use them interchangeably or inconsistently,
> so we will too.
+#### Concept Map
+
+
+
If we run `ls -F /data` (*with* a leading slash) we get a different answer,
because `/data` is an [absolute path](../../gloss.html#absolute-path):
@@ -469,6 +473,12 @@ and we will see it in many other tools as we go on.
+#### Concept Map
+
+
+
+#### Challenges
+
What is the output of the closing `ls` command in the sequence shown below?
diff --git a/novice/shell/03-pipefilter.md b/novice/shell/03-pipefilter.md
index 64fca0402..c6f8edcbc 100644
--- a/novice/shell/03-pipefilter.md
+++ b/novice/shell/03-pipefilter.md
@@ -398,6 +398,16 @@ so this matches all the valid data files she has.
If we run `sort` on this file:
diff --git a/novice/shell/04-loop.md b/novice/shell/04-loop.md
index 939ad89b6..fd898acbe 100644
--- a/novice/shell/04-loop.md
+++ b/novice/shell/04-loop.md
@@ -411,6 +411,12 @@ so she decides to get some coffee and catch up on her reading.
+#### Concept Map
+
+
+
+#### Challenges
+
Suppose that `ls` initially displays:
diff --git a/novice/shell/05-script.md b/novice/shell/05-script.md
index 9f4759b4d..d1ec3564c 100644
--- a/novice/shell/05-script.md
+++ b/novice/shell/05-script.md
@@ -294,6 +294,9 @@ we have a completely accurate record of how we created that figure.
> history | tail -5
> history | tail -5 | colrm 1 7
> ~~~
+>
+> The `colrm` may not be installed on every computer, and specifically on Windows computers.
+> `cut` and `awk` are two other tools that can achieve a similar purpose.
In practice, most people develop shell scripts by running commands at the shell prompt a few times
to make sure they're doing the right thing,
@@ -382,6 +385,12 @@ Of course, this introduces another tradeoff between flexibility and complexity.
+#### Concept Map
+
+
+
+#### Challenges
+
Leah has several hundred data files, each of which is formatted like this:
diff --git a/novice/shell/06-find.md b/novice/shell/06-find.md
index fda7007ac..e029498b8 100644
--- a/novice/shell/06-find.md
+++ b/novice/shell/06-find.md
@@ -444,6 +444,12 @@ about them."