diff --git a/console_toolkit/source/exercises/Makefile b/console_toolkit/source/exercises/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..e5ed4c88f0517ee4d5b7599791ff71f0dfa51bbe
--- /dev/null
+++ b/console_toolkit/source/exercises/Makefile
@@ -0,0 +1,34 @@
+TEX=latexmk
+TEXOPTS=-output-directory=build \
+		-pdf \
+		-latexoption=-interaction=nonstopmode \
+		-latexoption=-file-line-error
+
+# Set PREVIEW=1 to enable preview. Make sure an appropriate viewer is
+# configured in $HOME/.latexmkrc.
+# Example usage: make PREVIEW=1 opendata
+ifdef PREVIEW
+PREVIEWOPTS=-pvc
+endif
+
+defaul: exercises
+
+# To include the current git revision in the header, write it to 'GIT_TAG'
+# file, which the LaTeX source can include.
+gitrev:
+	@printf "r%s.%s" "$$(git rev-list --count HEAD)" "$$(git rev-parse --short HEAD)" > GIT_TAG
+
+# Create build directory if it doesnt exist
+builddir:
+	@[ -d build ] || mkdir build
+
+# All documents need to be compiled twice.
+# This is because some necessary information is only available after
+# the first compiler run, like \pageref{LastPage}.
+exercises: exercises.tex gitrev builddir
+	@$(TEX) $(TEXOPTS) $(PREVIEWOPTS) $<
+	mv build/exercises.pdf .
+
+clean:
+	@rm -rf build/*
+
diff --git a/console_toolkit/source/exercises/TheAlternativeCourse.cls b/console_toolkit/source/exercises/TheAlternativeCourse.cls
new file mode 100644
index 0000000000000000000000000000000000000000..d9c64a177f045eb3a9ff0c7ffb6f1bc25f533166
--- /dev/null
+++ b/console_toolkit/source/exercises/TheAlternativeCourse.cls
@@ -0,0 +1,87 @@
+% vim: set ft=tex:
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{TheAlternativeCourse}
+
+% packages
+\LoadClass[11pt]{scrartcl}          % Base class: KOMA script article
+\RequirePackage[utf8]{inputenc}     % Support for german 'umlaut' (ä, ö, ü)
+\RequirePackage{lastpage}           % \pageref{LastPage}
+\RequirePackage{scrlayer-scrpage}   % KOMA Script header/footer package
+\RequirePackage{graphicx}           % \includegraphics{...}
+\RequirePackage[showseconds=false,showzone=false]{datetime2}
+\RequirePackage[table]{xcolor}
+\RequirePackage[most]{tcolorbox}
+\RequirePackage{hyperref}
+
+% helvetica font
+% \RequirePackage[scaled]{helvet}
+% \RequirePackage[T1]{fontenc}
+% \renewcommand\familydefault{\sfdefault}
+
+% header / footer
+\KOMAoptions{headsepline,headheight=27.5pt}
+\setkomafont{pagehead}{\normalfont\normalcolor} % non-italic header font
+\setkomafont{pagefoot}{\normalfont\normalcolor} % non-italic footer font
+\newcommand{\builddate}{\footnotesize Revision: \input{GIT_TAG} \\ Build: \DTMNow}
+\newcommand{\thealtlogo}{\includegraphics[width=4.5cm]{assets/logo.png}}
+\lohead[\thealtlogo]{\thealtlogo}
+\rohead[\builddate]{\builddate}
+\cofoot[\footnotesize \thepage~/~\pageref{LastPage}]{\thepage~/~\pageref{LastPage}}
+\recalctypearea%
+
+\setlength{\voffset}{-1.2cm} % space before header
+\setlength{\textheight}{1.15\textheight} % height of text
+
+\definecolor{ldorange}{HTML}{F18A20}
+\definecolor{ldblue}{HTML}{254471}
+\definecolor{grey1}{HTML}{aaaaaa}
+\definecolor{grey2}{HTML}{efefef}
+\definecolor{lightblue}{HTML}{d9edfc}
+\definecolor{exclamred}{HTML}{db1515}
+
+\colorlet{lightyellow}{yellow!6!white}
+\colorlet{darkeryellow}{red!15!yellow!40!white}
+
+\newtcolorbox[auto counter, number within=section]{exercisebox}[2][]{%
+    colback=lightyellow,
+    fuzzy shadow={1mm}{-1mm}{0mm}{0.1mm}{black!50!white},
+    colframe=ldorange,
+    coltitle=black,
+    enhanced,
+    fonttitle=\bfseries,
+    title=Task~\thetcbcounter: #2,#1}
+
+\newtcolorbox{cmdbox}{%
+    colback=grey2,
+    fuzzy shadow={1mm}{-1mm}{0mm}{0.1mm}{black!50!white},
+    enhanced,
+    colframe=grey1,
+    coltitle=black,
+    enhanced}
+
+\newtcolorbox{tcbhintbox}{%
+    enhanced,
+    skin=bicolor,
+    segmentation at break=true,
+    boxrule=0.8pt,
+    left=3.5mm,
+    top=0.5mm,
+    bottom=0.5mm,
+    arc=1pt,
+    boxsep=2pt,
+    lefthand ratio=0.06,
+    sidebyside,
+    colframe=ldorange,
+    coltext=black,
+    colback=darkeryellow,
+    colbacklower=lightyellow,
+}
+
+\newcommand{\hintbox}[1]{%
+\begin{tcbhintbox}
+    \includegraphics[width=8mm]{img/light_bulb.pdf}%
+    \tcblower%
+    #1
+\end{tcbhintbox}}
+
diff --git a/console_toolkit/source/exercises/assets/CC-BY-SA_icon.pdf b/console_toolkit/source/exercises/assets/CC-BY-SA_icon.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..9d9a88f33ab59a85506d86727aaef5b2ebf4ed40
Binary files /dev/null and b/console_toolkit/source/exercises/assets/CC-BY-SA_icon.pdf differ
diff --git a/console_toolkit/source/exercises/assets/CC-BY-SA_icon.svg b/console_toolkit/source/exercises/assets/CC-BY-SA_icon.svg
new file mode 100644
index 0000000000000000000000000000000000000000..3e37597934e654c78c47687763565302230788e0
--- /dev/null
+++ b/console_toolkit/source/exercises/assets/CC-BY-SA_icon.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [<!ENTITY st0 "fill:#AAB2AB;"><!ENTITY st1 "fill:#FFF;">]>
+<svg xmlns="http://www.w3.org/2000/svg" height="31px" width="88px" version="1.1" y="0px" x="0px" viewBox="0 0 88 31">
+ <title>Creative Commons “Attribution-Share Alike” license icon</title>
+ <path d="m2.499 0.352l83.127 0.148c1.161 0 2.198-0.173 2.198 2.333l-0.102 27.552h-87.321v-27.655c0-1.235 0.119-2.378 2.098-2.378z" fill="#AAB2AB"/>
+ <path d="m25.316 14.449c0.003 5.557-4.471 10.065-9.993 10.069-5.522 0.003-10.001-4.5-10.005-10.057v-0.012c-0.003-5.558 4.471-10.066 9.994-10.069 5.522-0.004 10.001 4.5 10.005 10.057-0.001 0.003-0.001 0.007-0.001 0.012zm21.148-11.143c4.349 0 7.875 3.548 7.875 7.925s-3.526 7.926-7.875 7.926c-4.35 0-7.875-3.548-7.875-7.926-0.001-4.377 3.525-7.925 7.875-7.925zm28.632 7.751c0.003 4.314-3.47 7.814-7.757 7.818-4.286 0.003-7.765-3.492-7.769-7.806v-0.012c-0.002-4.314 3.471-7.814 7.758-7.817s7.765 3.492 7.768 7.806v0.011z" fill="#FFF"/>
+ <path d="m23.446 6.252c2.217 2.232 3.326 4.964 3.326 8.197s-1.089 5.936-3.269 8.11c-2.313 2.289-5.046 3.434-8.2 3.434-3.116 0-5.802-1.135-8.057-3.405-2.256-2.271-3.383-4.982-3.383-8.138s1.127-5.889 3.383-8.198c2.198-2.232 4.884-3.348 8.057-3.348 3.212 0 5.926 1.116 8.143 3.348zm-14.707 1.501c-1.875 1.905-2.812 4.138-2.812 6.698 0 2.561 0.928 4.773 2.783 6.64s4.064 2.801 6.627 2.801 4.791-0.942 6.684-2.829c1.797-1.752 2.697-3.955 2.697-6.611 0-2.636-0.914-4.874-2.74-6.712s-4.04-2.757-6.641-2.757-4.801 0.923-6.598 2.77zm4.933 5.572c-0.287-0.628-0.715-0.942-1.287-0.942-1.011 0-1.516 0.685-1.516 2.054 0 1.37 0.505 2.055 1.516 2.055 0.667 0 1.145-0.333 1.431-1.002l1.401 0.751c-0.668 1.194-1.67 1.792-3.006 1.792-1.03 0-1.856-0.317-2.476-0.954-0.621-0.636-0.931-1.512-0.931-2.629 0-1.099 0.32-1.97 0.959-2.616s1.436-0.968 2.39-0.968c1.413 0 2.424 0.56 3.035 1.679l-1.516 0.78zm6.593 0c-0.287-0.628-0.707-0.942-1.261-0.942-1.031 0-1.547 0.685-1.547 2.054 0 1.37 0.516 2.055 1.547 2.055 0.669 0 1.137-0.333 1.404-1.002l1.433 0.751c-0.667 1.194-1.667 1.792-3.001 1.792-1.029 0-1.853-0.317-2.473-0.954-0.619-0.636-0.928-1.512-0.928-2.629 0-1.099 0.314-1.97 0.943-2.616 0.628-0.646 1.428-0.968 2.4-0.968 1.41 0 2.42 0.56 3.029 1.679l-1.546 0.78zm66.088-13.325h-84.706c-0.908 0-1.647 0.744-1.647 1.658v28.967c0 0.207 0.167 0.375 0.372 0.375h87.256c0.205 0 0.372-0.168 0.372-0.375v-28.967c0-0.914-0.739-1.658-1.647-1.658zm-84.706 0.749h84.705c0.498 0 0.903 0.408 0.903 0.909v20.109h-60.541c-2.219 4.038-6.494 6.779-11.401 6.779-4.908 0-9.183-2.738-11.4-6.779h-3.169v-20.109c0-0.501 0.405-0.909 0.903-0.909zm65.63 1.751c-2.355 0-4.349 0.827-5.98 2.481-1.675 1.712-2.512 3.737-2.512 6.077s0.837 4.351 2.512 6.034c1.674 1.683 3.668 2.524 5.98 2.524 2.342 0 4.371-0.849 6.089-2.546 1.616-1.611 2.427-3.616 2.427-6.012s-0.824-4.422-2.471-6.077c-1.645-1.654-3.66-2.481-6.045-2.481zm0.022 1.54c1.93 0 3.569 0.685 4.918 2.054 1.361 1.355 2.043 3.01 2.043 4.964 0 1.968-0.666 3.602-2.001 4.9-1.405 1.397-3.058 2.096-4.96 2.096-1.901 0-3.541-0.691-4.917-2.074-1.376-1.384-2.064-3.024-2.064-4.921s0.695-3.552 2.086-4.964c1.332-1.371 2.965-2.055 4.895-2.055zm-3.791 5.809c0.34-2.153 1.846-3.304 3.733-3.304 2.716 0 4.369 1.982 4.369 4.626 0 2.58-1.76 4.584-4.411 4.584-1.824 0-3.457-1.13-3.755-3.347h2.143c0.063 1.151 0.806 1.556 1.866 1.556 1.209 0 1.994-1.13 1.994-2.857 0-1.812-0.679-2.771-1.951-2.771-0.934 0-1.739 0.341-1.909 1.513l0.623-0.003-1.687 1.697-1.686-1.697 0.671 0.003zm-14.765-0.911c0-0.306-0.246-0.553-0.55-0.553h-3.478c-0.303 0-0.55 0.247-0.55 0.553v3.5h0.971v4.145h2.636v-4.145h0.971v-3.5zm-2.288-3.408c0.656 0 1.189 0.536 1.189 1.197s-0.533 1.197-1.189 1.197c-0.657 0-1.189-0.536-1.189-1.197s0.532-1.197 1.189-1.197zm-0.012-3.03c-2.355 0-4.349 0.827-5.981 2.481-1.675 1.711-2.512 3.737-2.512 6.076s0.837 4.351 2.512 6.034c1.674 1.683 3.668 2.524 5.981 2.524 2.342 0 4.371-0.849 6.088-2.547 1.619-1.611 2.428-3.615 2.428-6.012s-0.823-4.421-2.47-6.076c-1.645-1.654-3.661-2.48-6.046-2.48zm0.022 1.539c1.93 0 3.569 0.685 4.917 2.054 1.363 1.355 2.044 3.01 2.044 4.963 0 1.968-0.666 3.602-2.001 4.9-1.405 1.398-3.058 2.096-4.96 2.096-1.901 0-3.541-0.691-4.917-2.075-1.377-1.383-2.065-3.023-2.065-4.921 0-1.896 0.695-3.551 2.086-4.963 1.334-1.369 2.966-2.054 4.896-2.054z"/>
+ <path d="m69.277 24.171l1.816 4.888h-1.109l-0.367-1.089h-1.816l-0.381 1.089h-1.074l1.836-4.888h1.095zm0.062 2.997l-0.612-1.793h-0.014l-0.633 1.793h1.259zm-6.079 0.682c0.059 0.115 0.137 0.207 0.234 0.277 0.098 0.071 0.211 0.124 0.342 0.158 0.133 0.034 0.268 0.051 0.408 0.051 0.095 0 0.197-0.008 0.306-0.023s0.21-0.047 0.306-0.093c0.094-0.046 0.174-0.108 0.236-0.188 0.064-0.08 0.096-0.181 0.096-0.305 0-0.132-0.042-0.238-0.126-0.321-0.083-0.083-0.194-0.15-0.329-0.206-0.136-0.055-0.29-0.102-0.461-0.143-0.173-0.042-0.348-0.088-0.523-0.138-0.182-0.046-0.358-0.102-0.531-0.167-0.171-0.066-0.325-0.152-0.461-0.258-0.137-0.104-0.246-0.235-0.33-0.393-0.083-0.158-0.125-0.349-0.125-0.572 0-0.252 0.053-0.469 0.16-0.654 0.105-0.184 0.246-0.338 0.418-0.462 0.172-0.123 0.366-0.214 0.584-0.274 0.217-0.059 0.436-0.088 0.652-0.088 0.254 0 0.497 0.028 0.73 0.086 0.232 0.057 0.44 0.149 0.621 0.277 0.182 0.127 0.326 0.291 0.432 0.49 0.107 0.198 0.16 0.439 0.16 0.723h-1.036c-0.009-0.146-0.04-0.268-0.091-0.363-0.053-0.096-0.121-0.172-0.207-0.227s-0.184-0.094-0.295-0.115c-0.11-0.023-0.23-0.035-0.361-0.035-0.086 0-0.172 0.01-0.258 0.027-0.086 0.019-0.163 0.051-0.232 0.096-0.07 0.047-0.129 0.104-0.174 0.172s-0.067 0.155-0.067 0.26c0 0.096 0.019 0.174 0.054 0.232 0.037 0.061 0.109 0.115 0.215 0.165s0.254 0.101 0.441 0.151c0.188 0.049 0.434 0.113 0.736 0.191 0.092 0.018 0.217 0.051 0.377 0.1 0.161 0.047 0.32 0.123 0.479 0.229 0.159 0.105 0.296 0.246 0.412 0.422 0.115 0.176 0.173 0.4 0.173 0.674 0 0.225-0.044 0.432-0.13 0.623-0.086 0.192-0.214 0.357-0.384 0.496-0.171 0.141-0.381 0.248-0.632 0.326-0.252 0.078-0.544 0.116-0.874 0.116-0.268 0-0.527-0.033-0.779-0.1-0.251-0.065-0.474-0.171-0.667-0.312-0.192-0.143-0.346-0.323-0.459-0.543-0.113-0.219-0.168-0.479-0.163-0.78h1.036c-0.001 0.165 0.028 0.304 0.087 0.418zm-17.287-3.679h1.198l1.138 1.931 1.13-1.931h1.19l-1.803 3.012v1.876h-1.07v-1.903l-1.783-2.985zm-1.975 0c0.231 0 0.442 0.021 0.633 0.062s0.354 0.108 0.491 0.201c0.136 0.094 0.241 0.219 0.316 0.373 0.075 0.155 0.112 0.348 0.112 0.575 0 0.247-0.055 0.451-0.167 0.616-0.11 0.164-0.276 0.298-0.493 0.402 0.3 0.088 0.523 0.239 0.672 0.456 0.148 0.218 0.223 0.479 0.223 0.784 0 0.246-0.049 0.46-0.144 0.641-0.095 0.18-0.224 0.327-0.386 0.441-0.161 0.114-0.346 0.199-0.552 0.254-0.207 0.055-0.419 0.082-0.638 0.082h-2.358v-4.888h2.291v0.001zm-0.137 1.976c0.191 0 0.347-0.046 0.47-0.136 0.123-0.092 0.185-0.239 0.185-0.444 0-0.114-0.021-0.208-0.062-0.28s-0.095-0.129-0.164-0.17-0.146-0.07-0.235-0.086c-0.089-0.016-0.181-0.023-0.276-0.023h-1v1.14h1.082zm0.062 2.075c0.105 0 0.205-0.01 0.3-0.03 0.095-0.021 0.18-0.055 0.252-0.104 0.073-0.047 0.13-0.112 0.174-0.194s0.065-0.187 0.065-0.315c0-0.25-0.071-0.43-0.212-0.536-0.141-0.107-0.328-0.161-0.559-0.161h-1.166v1.341h1.146z" fill="#FFF"/>
+</svg>
diff --git a/console_toolkit/source/exercises/assets/TheAlt_original.svg b/console_toolkit/source/exercises/assets/TheAlt_original.svg
new file mode 100644
index 0000000000000000000000000000000000000000..07a81acf69a1e41d244549a0e573051a172952f7
--- /dev/null
+++ b/console_toolkit/source/exercises/assets/TheAlt_original.svg
@@ -0,0 +1,339 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="297mm"
+   height="210mm"
+   viewBox="0 0 1052.3622 744.09448"
+   id="svg5247"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="Logo_cmyk.svg">
+  <defs
+     id="defs5249">
+    <color-profile
+       name="ISO-Coated-v2-300---ECI-"
+       xlink:href="/home/alinea/.local/share/color/icc/ISOcoated_v2_300_eci.icc"
+       id="color-profile4201" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.5"
+     inkscape:cx="651.23994"
+     inkscape:cy="428.23605"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1596"
+     inkscape:window-height="864"
+     inkscape:window-x="1280"
+     inkscape:window-y="16"
+     inkscape:window-maximized="0"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-bbox="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true"
+     inkscape:snap-global="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-nodes="false">
+    <sodipodi:guide
+       position="0,0"
+       orientation="0,1052.3622"
+       id="guide8267" />
+    <sodipodi:guide
+       position="1052.3622,0"
+       orientation="-744.09449,0"
+       id="guide8269" />
+    <sodipodi:guide
+       position="1052.3622,744.09449"
+       orientation="0,-1052.3622"
+       id="guide8271" />
+    <sodipodi:guide
+       position="0,744.09449"
+       orientation="744.09449,0"
+       id="guide8273" />
+    <sodipodi:guide
+       position="0,744.09448"
+       orientation="372.04721,0"
+       id="guide8277" />
+    <sodipodi:guide
+       position="0,372.04727"
+       orientation="0,526.18109"
+       id="guide8279" />
+    <sodipodi:guide
+       position="526.1811,372.04727"
+       orientation="-372.04721,0"
+       id="guide8281" />
+    <sodipodi:guide
+       position="526.1811,744.09448"
+       orientation="0,-526.18109"
+       id="guide8283" />
+    <sodipodi:guide
+       position="627.91083,185.28604"
+       orientation="0,1"
+       id="guide8569" />
+    <sodipodi:guide
+       position="126.11443,139.94813"
+       orientation="0,1"
+       id="guide8573" />
+    <sodipodi:guide
+       position="62.769399,265.16504"
+       orientation="1,0"
+       id="guide4260" />
+    <sodipodi:guide
+       position="186.23327,567.52678"
+       orientation="1,0"
+       id="guide4262" />
+    <sodipodi:guide
+       position="186.23327,629.2587"
+       orientation="0,1"
+       id="guide4264" />
+    <sodipodi:guide
+       position="208.54007,243.79702"
+       orientation="1,0"
+       id="guide6346" />
+    <sodipodi:guide
+       position="343.6539,260.18578"
+       orientation="0,1"
+       id="guide6348" />
+    <sodipodi:guide
+       position="823.97289,500.95193"
+       orientation="1,0"
+       id="guide5551" />
+    <sodipodi:guide
+       position="987.21847,267.75"
+       orientation="1,0"
+       id="guide5553" />
+    <sodipodi:guide
+       position="1022.4764,557.33325"
+       orientation="0,1"
+       id="guide4240" />
+    <sodipodi:guide
+       position="124.50133,505.79487"
+       orientation="0,1"
+       id="guide4242" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata5252">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-308.26772)">
+    <rect
+       transform="scale(1,-1)"
+       style="display:inline;fill:#244471 icc-color(ISO-Coated-v2-300---ECI-, 0.89266804, 0.64203861, 0.1369192, 0.35045396);fill-opacity:1;fill-rule:nonzero;stroke:none"
+       id="rect5011-3"
+       width="1055.5399"
+       height="372.04724"
+       x="0.15418348"
+       y="-1052.3622" />
+    <rect
+       style="fill:#ffffff icc-color(ISO-Coated-v2-300---ECI-, 0, 0, 0, 0);fill-opacity:1;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none"
+       id="rect8365"
+       width="1052.3622"
+       height="372.04721"
+       x="-1.1368684e-13"
+       y="308.26773" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="-166.8772"
+       y="810.53168"
+       id="text6399"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6401"
+         x="-166.8772"
+         y="810.53168" /></text>
+    <g
+       id="g9826">
+      <g
+         id="g9817">
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:113.10722351px;line-height:125%;font-family:Vegur;-inkscape-font-specification:'Vegur Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#254371 icc-color(ISO-Coated-v2-300---ECI-, 0.89266807, 0.64203858, 0.1369192, 0.35045397);fill-opacity:1;fill-rule:nonzero;stroke:none;"
+           x="208.54005"
+           y="494.9006"
+           id="text17736-7-4-8"
+           sodipodi:linespacing="125%"><tspan
+             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:102.82551575px;line-height:125%;font-family:Sansation;-inkscape-font-specification:'Sansation, Bold';text-align:start;letter-spacing:2.01660895px;writing-mode:lr-tb;text-anchor:start;fill:#254371 icc-color(ISO-Coated-v2-300---ECI-, 0.89266807, 0.64203858, 0.1369192, 0.35045397);fill-opacity:1;fill-rule:nonzero;"
+             sodipodi:role="line"
+             id="tspan17738-47-7-6"
+             x="208.54005"
+             y="494.9006"
+             dx="0 0 0.048014499"
+             dy="0">The</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:113.10722351px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#f28a20 icc-color(ISO-Coated-v2-300---ECI-, 0.00866712, 0.55040818, 0.92869459, 0.00906386);fill-opacity:1;stroke:none;stroke-width:0.18092053;stroke-opacity:1"
+           x="384.63541"
+           y="495.02896"
+           id="text18508-6-4-5"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan18510-7-1-1"
+             x="384.63541"
+             y="495.02896"
+             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:102.82551575px;line-height:125%;font-family:Sansation;-inkscape-font-specification:'Sansation, Bold';text-align:start;letter-spacing:2.01660895px;writing-mode:lr-tb;text-anchor:start;fill:#f28a20 icc-color(ISO-Coated-v2-300---ECI-, 0.00866712, 0.55040818, 0.92869459, 0.00906386);fill-opacity:1;stroke:none;stroke-width:0.18092053;stroke-opacity:1">Alternative</tspan></text>
+        <g
+           id="g5905-4-0-8-8"
+           transform="matrix(0.4050561,0,0,0.4050561,513.72016,151.02668)"
+           style="fill:#244471 icc-color(ISO-Coated-v2-300---ECI-, 0.89266804, 0.64203861, 0.1369192, 0.35045396);fill-opacity:1">
+          <text
+             sodipodi:linespacing="125%"
+             id="text17736-8-2-1-1"
+             y="849.27069"
+             x="1004.0612"
+             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:140.0774231px;line-height:125%;font-family:Vegur;-inkscape-font-specification:'Vegur Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#254371 icc-color(ISO-Coated-v2-300---ECI-, 0.89266807, 0.64203858, 0.1369192, 0.35045397);fill-opacity:1;fill-rule:nonzero;stroke:none;"
+             xml:space="preserve"><tspan
+               y="849.27069"
+               x="1004.0612"
+               id="tspan17738-4-1-3-8"
+               sodipodi:role="line"
+               style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:127.34356689px;line-height:125%;font-family:Sansation;-inkscape-font-specification:'Sansation, Bold';text-align:start;letter-spacing:4.97859192px;writing-mode:lr-tb;text-anchor:start;fill:#254371 icc-color(ISO-Coated-v2-300---ECI-, 0.89266807, 0.64203858, 0.1369192, 0.35045397);fill-opacity:1;fill-rule:nonzero;">.ch</tspan></text>
+        </g>
+      </g>
+      <g
+         id="g9812">
+        <path
+           style="fill:#254371 icc-color(ISO-Coated-v2-300---ECI-, 0.89266807, 0.64203858, 0.1369192, 0.35045397);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 85.266611,423.10351 c -12.463146,0 -22.497218,10.03408 -22.497218,22.49722 l 0,78.46947 c 0,12.46313 10.034072,22.49714 22.497218,22.49714 l 78.469449,0 c 12.46313,0 22.49721,-10.03401 22.49721,-22.49714 l 0,-78.46947 c 0,-12.46314 -10.03408,-22.49722 -22.49721,-22.49722 l -78.469449,0 z m 2.302078,7.44779 70.752411,0 c 11.33741,0 20.46438,9.12693 20.46438,20.46439 l 0,70.75234 c 0,11.33742 -9.12697,20.46436 -20.46438,20.46436 l -70.752411,0 c -11.33743,0 -20.46437,-9.12694 -20.46437,-20.46436 l 0,-70.75234 c 0,-11.33746 9.12694,-20.46439 20.46437,-20.46439 z"
+           id="rect4200-0-3-7-1"
+           inkscape:connector-curvature="0" />
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-weight:normal;font-size:53.71383667px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#244471 icc-color(ISO-Coated-v2-300---ECI-, 0.89271382, 0.64199283, 0.13690394, 0.35049973);fill-opacity:1;stroke:none;stroke-width:0.06922398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;"
+           x="97.518784"
+           y="487.94351"
+           id="text4322-4-9-8-2-7-3"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan4324-5-0-9-6-4-1"
+             x="97.518784"
+             y="487.94351"
+             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:53.71375275px;line-height:125%;font-family:Sansation;-inkscape-font-specification:'Sansation, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#244471 icc-color(ISO-Coated-v2-300---ECI-, 0.89271382, 0.64199283, 0.13690394, 0.35049973);fill-opacity:1;stroke-width:0.06922398;stroke-miterlimit:4;stroke-dasharray:none;">Alt</tspan></text>
+      </g>
+      <text
+         sodipodi:linespacing="125%"
+         id="text6350"
+         y="546.64551"
+         x="225.7021"
+         style="font-style:normal;font-weight:normal;font-size:38.93792343px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#254371 icc-color(ISO-Coated-v2-300---ECI-, 0.89266807, 0.64203858, 0.1369192, 0.35045397);fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
+         xml:space="preserve"><tspan
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.93792343px;line-height:125%;font-family:Sansation;-inkscape-font-specification:'Sansation, Normal';text-align:start;letter-spacing:8.17108536px;writing-mode:lr-tb;text-anchor:start;fill:#254371 icc-color(ISO-Coated-v2-300---ECI-, 0.89266807, 0.64203858, 0.1369192, 0.35045397);fill-opacity:1;"
+           y="546.64551"
+           x="225.7021"
+           id="tspan6352"
+           sodipodi:role="line">for a sustainable digital world</tspan></text>
+    </g>
+    <g
+       id="g9856">
+      <g
+         id="g9847">
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:117.78444672px;line-height:125%;font-family:Vegur;-inkscape-font-specification:'Vegur Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#faf8f7 icc-color(ISO-Coated-v2-300---ECI-, 0.02832074, 0.03012131, 0.02754253, 0);fill-opacity:1;fill-rule:nonzero;stroke:none"
+           x="208.54005"
+           y="866.9425"
+           id="text17736-7-4-8-9"
+           sodipodi:linespacing="125%"><tspan
+             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:107.07756805px;line-height:125%;font-family:Sansation;-inkscape-font-specification:'Sansation, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#faf8f7 icc-color(ISO-Coated-v2-300---ECI-, 0.02832074, 0.03012131, 0.02754253, 0);fill-opacity:1;fill-rule:nonzero"
+             sodipodi:role="line"
+             id="tspan17738-47-7-6-2"
+             x="208.54005"
+             y="866.9425">The</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:117.78444672px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#f28a20 icc-color(ISO-Coated-v2-300---ECI-, 0.00866712, 0.55040818, 0.92869459, 0.00906386);fill-opacity:1;stroke:none;stroke-width:0.18092053;stroke-opacity:1"
+           x="387.91733"
+           y="867.07617"
+           id="text18508-6-4-5-6"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan18510-7-1-1-5"
+             x="387.91733"
+             y="867.07617"
+             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:107.07756805px;line-height:125%;font-family:Sansation;-inkscape-font-specification:'Sansation, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#f28a20 icc-color(ISO-Coated-v2-300---ECI-, 0.00866712, 0.55040818, 0.92869459, 0.00906386);fill-opacity:1;stroke:none;stroke-width:0.18092053;stroke-opacity:1">Alternative</tspan></text>
+        <g
+           id="g5905-4-0-8-8-6"
+           transform="matrix(0.42180603,0,0,0.42180603,498.34,508.84867)"
+           style="fill:#faf8f7 icc-color(ISO-Coated-v2-300---ECI-, 0.02832074, 0.03012131, 0.02754253, 0);fill-opacity:1">
+          <text
+             sodipodi:linespacing="125%"
+             id="text17736-8-2-1-1-8"
+             y="849.27069"
+             x="1004.0612"
+             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:140.0774231px;line-height:125%;font-family:Vegur;-inkscape-font-specification:'Vegur Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#faf8f7 icc-color(ISO-Coated-v2-300---ECI-, 0.02832074, 0.03012131, 0.02754253, 0);fill-opacity:1;fill-rule:nonzero;stroke:none"
+             xml:space="preserve"><tspan
+               y="849.27069"
+               x="1004.0612"
+               id="tspan17738-4-1-3-8-7"
+               sodipodi:role="line"
+               style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:127.34356689px;line-height:125%;font-family:Sansation;-inkscape-font-specification:'Sansation, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#faf8f7 icc-color(ISO-Coated-v2-300---ECI-, 0.02832074, 0.03012131, 0.02754253, 0);fill-opacity:1;fill-rule:nonzero">.ch</tspan></text>
+        </g>
+      </g>
+      <g
+         id="g9842">
+        <path
+           style="fill:#faf8f7 icc-color(ISO-Coated-v2-300---ECI-, 0.02832074, 0.03012131, 0.02754253, 0);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 87.90493,792.17645 c -12.137478,0 -21.909353,9.77189 -21.909353,21.90935 l 0,76.41898 c 0,12.1375 9.771875,21.9093 21.909353,21.9093 l 76.419,0 c 12.13745,0 21.90934,-9.7718 21.90934,-21.9093 l 0,-76.41898 c 0,-12.13746 -9.77189,-21.90935 -21.90934,-21.90935 l -76.419,0 z m 2.241923,7.25318 68.903607,0 c 11.04116,0 19.92963,8.88844 19.92963,19.92964 l 0,68.90355 c 0,11.04116 -8.88847,19.92956 -19.92963,19.92956 l -68.903607,0 c -11.041176,0 -19.929624,-8.8884 -19.929624,-19.92956 l 0,-68.90355 c 0,-11.0412 8.888448,-19.92964 19.929624,-19.92964 z"
+           id="rect4200-0-3-7-1-6"
+           inkscape:connector-curvature="0" />
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-weight:normal;font-size:53.71383667px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#faf8f7 icc-color(ISO-Coated-v2-300---ECI-, 0.02832074, 0.03012131, 0.02754253, 0);fill-opacity:1;stroke:none;stroke-width:0.06922398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           x="97.518799"
+           y="857.01648"
+           id="text4322-4-9-8-2-7-3-6"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan4324-5-0-9-6-4-1-7"
+             x="97.518799"
+             y="857.01648"
+             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:53.71375275px;line-height:125%;font-family:Sansation;-inkscape-font-specification:'Sansation, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#faf8f7 icc-color(ISO-Coated-v2-300---ECI-, 0.02832074, 0.03012131, 0.02754253, 0);fill-opacity:1;stroke-width:0.06922398;stroke-miterlimit:4;stroke-dasharray:none">Alt</tspan></text>
+      </g>
+      <text
+         sodipodi:linespacing="125%"
+         id="text6350-90"
+         y="913.07501"
+         x="226.08276"
+         style="font-style:normal;font-weight:normal;font-size:38.93792343px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#faf8f8 icc-color(ISO-Coated-v2-300---ECI-, 0.02685588, 0.02555886, 0.02499428, 0);fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
+         xml:space="preserve"><tspan
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.93792343px;line-height:125%;font-family:Sansation;-inkscape-font-specification:'Sansation, Normal';text-align:start;letter-spacing:8.17108536px;writing-mode:lr-tb;text-anchor:start;fill:#faf8f8 icc-color(ISO-Coated-v2-300---ECI-, 0.02685588, 0.02555886, 0.02499428, 0);fill-opacity:1;"
+           y="913.07501"
+           x="226.08276"
+           id="tspan6352-3"
+           sodipodi:role="line">for a sustainable digital world</tspan></text>
+    </g>
+  </g>
+</svg>
diff --git a/console_toolkit/source/exercises/assets/logo.png b/console_toolkit/source/exercises/assets/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..67fe0c54766b39016a060b5fa55cf41de5edd551
Binary files /dev/null and b/console_toolkit/source/exercises/assets/logo.png differ
diff --git a/console_toolkit/source/exercises/exercises.tex b/console_toolkit/source/exercises/exercises.tex
new file mode 100644
index 0000000000000000000000000000000000000000..66407001ff75eeb13983ce8b63dfc55e6d82fdcf
--- /dev/null
+++ b/console_toolkit/source/exercises/exercises.tex
@@ -0,0 +1,804 @@
+\documentclass{TheAlternativeCourse}
+
+\usepackage{menukeys}
+\usepackage{tabularx}
+\usepackage{float}
+\usepackage{caption}
+
+\title{Console Toolkit Exercises}
+\date{}
+\author{}
+
+\begin{document}
+\maketitle
+
+\setlength{\parindent}{0cm}
+\setlength{\parskip}{12pt}
+
+\section{Introduction}
+
+Welcome to this exercise session! This is a practical exercise on the Linux
+command line.  If you have any question about the exercises, feel free to ask
+the helpers for assistance.
+
+\subsection*{Difficulty}
+
+The exercises are designed in such a way that you will have to find solutions
+by reading the manuals and using search engines. You are expected to come up
+with appropriate solutions on your own, there will be no step-by-step guided
+exercises!
+
+There will be quite simple exercises for complete beginners at the start,
+but there are also some much more difficult ones further into the exercise.
+Feel free to skip ahead!
+
+\subsection*{Liability}
+
+By taking part in this exercise, you acknowledge that you alone are responsible
+for your computer. TheAlternative and its parent organisation, the Student
+Sustainability Commission, will not be held liable for any damages or loss of
+data.
+
+\pagebreak
+
+\section{Basics}
+
+To solve some of the exercises, you will need to download some files. Whenever
+you see an orange box like below, this means you have a task to solve.
+
+\begin{exercisebox}{Getting the repository}
+    Open a terminal and enter the following (all on one line): \\
+    \texttt{curl https://files.project21.ch/LinuxDays-Public/HS18-exercise.zip
+        -o exercises.zip} \\\\
+    Then extract the zip archive like this: \\
+    \texttt{unzip exercises.zip}
+\end{exercisebox}
+
+\subsection{Running a command}
+
+To run a command, you just type it into the console and hit enter.  Most useful
+commands require some arguments. Arguments are given after the name of the
+command, separated by spaces. There are also so-called \emph{flags}, which set
+some options to alter the behaviour of a command. They have the form
+\texttt{-x} (single letter form) or \texttt{--long-option} (long format).
+
+An example of a more involved command:
+
+\begin{cmdbox}
+\texttt{ls -l --human-readable \textasciitilde/Downloads}
+\end{cmdbox}
+
+\subsection{Getting help}
+
+\texttt{man} is a command you will need throughout the following
+exercises.  It stands for ``manual'' and shows you what almost any given
+command can do and which options are available for it.  Almost all commands
+provide such a ``manpage'', which is typically written by the developers
+themselves.
+
+\begin{exercisebox}{The manual's manual}
+    The \texttt{man} command itself has its own manpage. Type \texttt{man man}
+    to access it, use the arrow keys to scroll, and press \keys{q} to exit.
+    Have a look around, especially at the different section numbers.
+    What is the section number for system calls?
+\end{exercisebox}
+
+An alternative to using the man pages is to try and see if a command has a help
+option. This is usually displayed by appending the option \texttt{--help} after
+the name of the command, which will often display much shorter and concise
+instructions
+on how to use a command.
+
+\begin{exercisebox}{The help option}
+    Look at the help output of \texttt{ls}. What is the flag to see hidden
+    files?
+\end{exercisebox}
+
+\subsection{Navigating directories}
+
+You can navigate your file system in the terminal, just like you could with
+a graphical program. Below are the most important commands.
+
+\begin{table}[H]
+    \centering
+    \rowcolors{1}{lightblue}{white}
+    \begin{tcolorbox}[%
+        enhanced,
+        width=1.0\linewidth,
+        fuzzy shadow={1mm}{-1mm}{0mm}{0.1mm}{black!50!white},
+        tabularx={>{\centering\arraybackslash}l|>{\centering\arraybackslash}X},
+        title={Commands for navigating directories}]
+        \textbf{Command} & \textbf{Description} \\
+        \texttt{pwd} & Display the current working directory. \\
+        \texttt{tree DIR} & Get a visualization of the directory tree under
+	    \texttt{DIR}. \\
+        \texttt{ls DIR} & List all files and directories in the current
+            working directory. \\
+        \texttt{cd DIR} & Change the current working directory to the given
+            directory. \\
+    \end{tcolorbox}%
+    \label{tab1}
+\end{table}
+
+\begin{exercisebox}{Making yourself at home}
+    Have a look around your home directory and try out the mentioned commands.
+    You will most likely recognise the layout from your graphical file browser.
+    Remember you can always return to your home directory by running
+    \texttt{cd} without any arguments.
+\end{exercisebox}
+
+\subsection{Modifying directories}
+
+Just like in graphical programs, you can create and delete directories on the
+command line.
+
+\begin{table}[H]
+    \centering
+    \rowcolors{1}{lightblue}{white}
+    \begin{tcolorbox}[%
+        enhanced,
+        fuzzy shadow={1mm}{-1mm}{0mm}{0.1mm}{black!50!white},
+        width=1.0\linewidth,
+        tabularx={>{\centering\arraybackslash}l|>{\centering\arraybackslash}X},
+        title={Commands for modifying directories}]
+        \textbf{Command} & \textbf{Description} \\
+        \texttt{mkdir DIR} & Create a new directory with the given name. \\
+        \texttt{rmdir DIR} & Remove a directory. Will not work with
+            non-empty directories. \\
+        \texttt{rm -r DIR} &  Remove a directory and its contents.
+            {\color{exclamred}Attention! There is no trashcan on the command
+            line!  Files and directories will be deleted irrevocably.} \\
+        \texttt{cp -r SOURCE TARGET} &  Copy a source directory
+            (recursively with all its contents) to a target. \\
+        \texttt{mv SOURCE TARGET} & Move a file or directory.
+            Also used to rename files/directories. \\
+    \end{tcolorbox}%
+    \label{tab2}
+\end{table}
+
+\begin{exercisebox}{Creating your first directory}
+    Create a directory for the following exercises (you can call it
+    \texttt{console-toolkit}). Change into that directory and create a file
+    called \texttt{notes}. Then move the exercise file directory you downloaded
+    in task 2.1 into your newly created directory.
+\end{exercisebox}
+
+\subsection{Viewing files}
+If you want to view the contents of a text file, you have the following
+options:
+
+\begin{table}[H]
+    \centering
+    \rowcolors{1}{lightblue}{white}
+    \begin{tcolorbox}[%
+        enhanced,
+        fuzzy shadow={1mm}{-1mm}{0mm}{0.1mm}{black!50!white},
+        width=1.0\linewidth,
+        tabularx={>{\centering\arraybackslash}l|>{\centering\arraybackslash}X},
+        title={Commands for viewing files}]
+        \textbf{Command} & \textbf{Description} \\
+        \texttt{cat FILE} & Output a file to the terminal. \\
+        \texttt{head FILE} & Output the first couple of lines to the terminal. \\
+        \texttt{tail FILE} & Output the last couple of lines to the terminal. \\
+        \texttt{less FILE} & Browse a file in a visual viewer. \\
+    \end{tcolorbox}%
+    \label{tab3}
+\end{table}
+
+\begin{exercisebox}{Log files}
+    \texttt{tail} is often used to inspect errors log files. Use tail to find the
+    last three lines of \texttt{dmesg\_log} (in the exercise files).
+\end{exercisebox}
+
+\hintbox{\texttt{dmesg} is tool to view the log output of your kernel.}
+
+\subsection{Console tips \& tricks}
+
+There are many small things that can make your life when using the terminal
+little bit easier.  Following is a table with the most important keyboard
+shortcuts you can use to speed up your workflow.
+
+\begin{table}[H]
+    \centering
+    \rowcolors{1}{lightblue}{white}
+    \begin{tcolorbox}[%
+        enhanced,
+        fuzzy shadow={1mm}{-1mm}{0mm}{0.1mm}{black!50!white},
+        width=1.0\linewidth,
+        tabularx={>{\centering\arraybackslash}l|>{\centering\arraybackslash}X},
+        title={Terminal keyboard shortcuts}]
+        \keys{\ctrl}+\keys{w} & Delete one word backwards. \\
+        \keys{\ctrl}+\keys{u} & Delete the entire line. \\
+        \keys{\ctrl}+\keys{l} & Clear the terminal. \\
+        \keys{\ctrl}+\keys{a} & Go to the beginning of the line. \\
+        \keys{\ctrl}+\keys{e} & Go to the end of the line. \\
+        \keys{\ctrl}+\keys{c} & Terminate the currently runnig process. \\
+        \keys{\ctrl}+\keys{d} & Quit the shell. \\
+    \end{tcolorbox}%
+    \label{tab4}
+\end{table}
+
+\section{Files \& Permissions}
+
+This section introduces you to basic commands related to files. We will first
+look at a command that can be used for creating empty files.
+
+The \texttt{touch} command is most frequently used for creating new, empty
+files. If you check the manual, you will see that it can also change certain
+file timestamps (access and modification times).
+
+\begin{exercisebox}{The magic touch}
+    Switch to your home directory. Execute \texttt{touch file}. A new file
+    should have been created. Confirm that this is the case.
+\end{exercisebox}
+%
+We already saw \texttt{cat} in the previous section. Another tool to look at
+files is \texttt{less}. This command is great if you want to look at large
+bodies of text because unlike \texttt{cat}, it has a built-in scroll function.
+Once you are done looking at the file, you can quit with \keys{q}.
+
+\subsection{Permissions}
+
+We will now look at two commands to manage permissions.
+
+\texttt{chown} stands for ``change owner''. It is used to change the owner of a
+given file. It can also change the group ownership.
+
+\begin{exercisebox}{Get off my lawn}
+    Create a new, empty file (hint: \texttt{touch}) and use \texttt{chown} to
+    change its ownership to the \texttt{root} user (you will probably need
+    \texttt{sudo} for this). Try deleting it. Then change the ownership back to
+    your own user.
+\end{exercisebox}
+%
+A very similar command is \texttt{chmod}. \texttt{chmod} stands for ``change
+file mode bits'' and controls the following permissions on any given file:
+
+\begin{itemize}
+    \setlength\itemsep{-9pt}
+	\item Read: Who can see the file data.
+	\item Write: Who can modify the file.
+	\item Execute: Who is allowed to run the file (like a program or a script)
+\end{itemize}
+
+\hintbox{Permissions can be viewed using \texttt{ls -l}.}
+
+\begin{exercisebox}{{Read, Write, Execute}}
+    The read, write and execute permissions do different things, depending on
+    whether they are set for directories or for files. Find out what they mean
+    for files and directorues by playing around with the \texttt{chmod}
+    command, readings its manual or searching on the internet.
+\end{exercisebox}
+
+\subsection{File tools}
+
+There are a number of other commands that are frequently used to get
+information on files:
+
+\begin{table}[H]
+    \centering
+    \rowcolors{1}{lightblue}{white}
+    \begin{tcolorbox}[%
+        enhanced,
+        fuzzy shadow={1mm}{-1mm}{0mm}{0.1mm}{black!50!white},
+        width=1.0\linewidth,
+        tabularx={>{\centering\arraybackslash}l|>{\centering\arraybackslash}X},
+        title={Commands for getting information about files}]
+        \textbf{Command} & \textbf{Description} \\
+	    \texttt{wc \$file} & Display line, word, and character count of a file \\
+        \texttt{diff \$file1 \$file2} & Show differences between files \\
+	    \texttt{ln \$target \$link\_name} & Create a link \\
+        \texttt{du \$file} & Estimate file space usage \\
+        \texttt{df} & Report file system disk usage \\
+    \end{tcolorbox}%
+    \label{tab5}
+\end{table}
+
+In the next exercise we are going to read some text from the standard input
+(also called \texttt{stdin}). Reading from \texttt{stdin} means you can just
+type text into the console. When you are done, hit \keys{Enter} to enter a
+newline and then hit \keys{\ctrl}+\keys{d}. This is the universal end-of-file
+character in Unix-like systems. It signals to the command that it the input has
+finished. You can even use this key shortcut to close your terminal.
+
+\begin{exercisebox}{Cat tricks}
+    Type the command \texttt{cat -}. This starts \texttt{cat} to read from
+    \texttt{stdin}. Enter some text and observe what happens when you press
+    \keys{Enter}. \texttt{cat} will just keep reading until the end-of-file
+    character, so you can enter multiple lines of text. When you are done,
+    terminate the input as described above.
+\end{exercisebox}
+
+\begin{exercisebox}{Counting words}
+    Sometimes you might want to know the length of some text. First, consult
+    \texttt{wc}'s manual to find out how you can read from standard input. Copy
+    a line of text of your choice from the \texttt{wc} manual, then use the
+    \texttt{wc} syntax that you looked up to read from standard input. Paste
+    the text and terminate the input as before.
+\end{exercisebox}
+
+\hintbox{%
+Copying and pasting in the console usually works with
+\keys{\ctrl}+\keys{\shift}+\keys{c} and \keys{\ctrl}+\keys{\shift}+\keys{v},
+this depends on the terminal though.}
+
+\paragraph{Hardlink}
+A hardlink is a pointer to a specific, physical location on a hard disk. If the
+file name of the file that is linked to changes, the link still works. However,
+if the file is replaced by a different file with the same name, the hardlink
+will now \emph{not} point to the new file!  It will still point to the location
+of the old file.
+
+\paragraph{Symlink}
+A symlink (short for symbolic link) points to a file name, to an actual file
+path. If the data behind the file name is changed, the symbolic link will then
+point to this new file, as long as the name stays the same. This is a higher
+level concept than a hardlink, as it operates above the concept of file names.
+Most of the time, a symlink is preferrable to a hardlink.
+
+\begin{exercisebox}{Symlinks}
+    Have a look at the \texttt{ln} manual to find out how to create a symbolic
+    link. Then create a link in your home directory to a directory you use
+    frequently.
+\end{exercisebox}
+
+Lastly, two commands that are loosely related to files are \texttt{df} and
+\texttt{du}. These commands are used to find out how much space files take up.
+\texttt{df} shows coarse-grained disk usage as reported by the file system.
+\texttt{du} counts the disk usage of individual files and directories.
+
+\begin{exercisebox}{Reporting disk usage}
+    When you run \texttt{df} and \texttt{du}, the sizes of files are reported
+    in multiples of blocks. The size of a block depends on your file system,
+    but typically is between 512 bytes and 1 kilobyte. This means that you
+    would have to multiply by this size the true size, in bytes. Find out how
+    to make the output of \texttt{df} and \texttt{du} more readable for humans
+    by looking at their options in the manual (hint: the option is the same for
+    both tools).
+\end{exercisebox}
+
+\section{Leveraging the command line}
+
+\subsection{Globbing (Wildcards)}
+
+Globbing is a useful tool to work with files that share a pattern. For example,
+to refer to all \texttt{jpg} images in a directory, you can use \texttt{*.jpg}.
+The \texttt{*} means `any number of any characters', so this pattern will give
+you all files that end with \texttt{.jpg}. Similarly, \texttt{dir/*} will give
+you \emph{all} files in \texttt{dir}, \emph{except} hidden files.
+
+There are a few more useful patterns, like \texttt{?} (question mark) which
+matches any \emph{single} character, or \texttt{\string{*.jpg,*.png\string}},
+which is a list that matches both \texttt{.jpg} and \texttt{.png} files. To
+learn more, you can have a look at \texttt{man 7 glob}.
+
+\begin{exercisebox}{{Printing text, again}}
+    Ouput all \texttt{.txt} files in \texttt{notes/} to the terminal in
+    a single command. The output will tell you if you did it correctly.
+\end{exercisebox}
+
+\begin{exercisebox}{Managing cat pictures}
+    Create a new directory called \texttt{cats}. Copy all cat pictures in
+    \texttt{pictures/} (in the exercise files) to your new \texttt{cats}
+    directory, with a single command.
+\end{exercisebox}
+
+\subsection{Pipes}
+
+Pipes are useful to connect multiple commands together. One of the design
+principles of Unix was ``do one thing, and do it well''. This means, tools
+should be simple and powerful in their specific domain, but there should also
+be a mechanism to combine multiple programs in an easy way. This mechanism is
+the \emph{pipe}, the \texttt{|} symbol. It allows you to connect the output of
+one program to the input of another program.
+
+For example, we can combine \texttt{du} and \texttt{sort} to work together.
+\texttt{du} analyses the usage of disk space, and sort just sorts lines
+it is given. This pipe analyzes your home directory and tells you which
+directory uses the most space:
+
+\begin{cmdbox}
+    \texttt{du -sh * | sort -h}
+\end{cmdbox}
+
+Here the \texttt{*} globbing pattern stands for ``every file in the current
+directory''.
+
+\begin{exercisebox}{Counting lines in multiple files}
+    \texttt{wc} (word count) can be used to count the number of lines in a file
+    (\texttt{-l} flag). Use \texttt{cat} to output all files in the
+    \texttt{notes} directory (exercise files) at the same time and connect it
+    to \texttt{wc} to count the lines.
+\end{exercisebox}
+
+\subsection{Find}
+
+Looking for specific files on your system is a task that one has to do fairly
+regularly. Two very popular tool for finding files with certain properties are
+\texttt{find} and \texttt{grep}. In this section, we cover \texttt{find}.  As a
+rule of thumb, \texttt{find} is best used when you know that your file has
+certain metadata: Maybe you know approximately when you have created the file,
+when you last looked at it, how large it is etc. In contrast, \texttt{grep} is
+usually used when you want to look at \emph{the content} of a file.
+
+\texttt{find} works by essentially filtering all files through a chain of
+conditions, given by flags. Working with \texttt{find} is
+fairly straight forward and almost like verbally explaining what you are
+looking for.
+
+\begin{cmdbox}
+    \texttt{find -mtime -1 -size +100k}
+\end{cmdbox}
+
+This searches for all files that have been modified (\texttt{-mtime}) less than
+one day ago (\texttt{-1}) and have size (\texttt{-size}) larger than 100
+Kilobytes (\texttt{+100k}). \texttt{find} has a lot of conditions where it
+makes sense to specify ``greater than'' or ``smaller than''. This is specified
+by prefixing the amount with a \texttt{+} or a \texttt{-}. This is why the
+condition ``larger than 100 Kilobytes'' is written as \texttt{-size +100k}.
+
+If we additionally knew that our file was smaller than one gigabyte, we would
+type:
+\begin{cmdbox}
+    \texttt{find -mtime -1 -size +100k -size -2G}
+\end{cmdbox}
+
+It's necessary to use \texttt{-2G} here, since file sizes are rounded up.
+A file that has 800M will be rounded to 1G. The semantics of find use strictly
+smaller (\texttt{<}), therefore we have to compare to 2G.
+
+Here is an overview of options for \texttt{find} that are useful to know.
+
+\begin{table}[H]
+    \centering
+    \rowcolors{1}{lightblue}{white}
+    \begin{tcolorbox}[%
+        enhanced,
+        fuzzy shadow={1mm}{-1mm}{0mm}{0.1mm}{black!50!white},
+        width=1.0\linewidth,
+        tabularx={>{\centering\arraybackslash}l|>{\centering\arraybackslash}X},
+        title={Useful find flags}]
+        \textbf{Flag} & \textbf{Description} \\
+        \texttt{-name} & Matches the name of a file. \\
+	    \texttt{-size} & Condition on the size of a file. \\
+        \texttt{-atime} & Condition on when file was last accessed. \\
+        \texttt{-mtime} & Condition on when file was last modified. \\
+        \texttt{-type} & Specifies type of file (directory, regular file
+        \ldots). \\
+    \end{tcolorbox}%
+    \label{tab6}
+\end{table}
+
+\begin{exercisebox}{The largest cat}
+    Use \texttt{find} to find all cat pictures (\texttt{cat*}) with a size over
+    200 kilobytes in the exercise directory. There should be more than one!
+\end{exercisebox}
+
+\subsection{Grep and regular expressions}
+
+\includegraphics[width=\textwidth]{img/regex_golf.png}
+{\footnotesize xkcd 1313, https://xkcd.com/1313/}
+
+While working with many files in different folders, you can find yourself
+losing track of what is in what file. To quickly find something in one of many
+files, you can use \texttt{grep}. Grep is a tool for searching a body of text
+for a specific pattern. Those patterns are specified with a syntax called
+``Regular Expressions'' or regexes.
+
+Regexes can easily become \emph{very} complicated (there are entire books on
+this topic).  We'll have a look at the very basics here. Regexes are comprised
+of a string of characters, e.g. \texttt{foo.bar[0-9]}. Let's look at it in more
+detail:
+
+\begin{itemize}
+    \setlength\itemsep{-9pt}
+    \item{\makebox[1.5cm]{\: \texttt{foo\hfill}} Matches the literal word ``foo''.}
+    \item{\makebox[1.5cm]{\: \texttt{.\hfill}} Matches any single character.}
+    \item{\makebox[1.5cm]{\: \texttt{bar\hfill}} Matches the literal word ``bar''.}
+    \item{\makebox[1.5cm]{\: \texttt{[0-9]\hfill}} Matches a single digit between 0 and 9.}
+\end{itemize}
+
+For example, this regex \texttt{foo.bar[0-9]} would match on all of these
+strings:
+
+\begin{itemize}
+    \setlength\itemsep{-9pt}
+    \item \texttt{foo\_bar1}
+    \item \texttt{fooobar9}
+    \item \texttt{foozbar5}
+    \item \texttt{foo1bar2}
+\end{itemize}
+
+An important thing to note is that regular expressions don't have to match the
+entire string. So the example regex would also match on
+\texttt{XXXXfoo1bar2XXXX}, because \texttt{foo1bar2} is part of that string.
+
+So how do we try that on the command line? Simple, to test out \texttt{grep},
+we can use \texttt{echo} to pipe a string into grep to match. Like this:
+
+\begin{cmdbox}
+    \texttt{echo foo1bar2 | grep foo.bar[0-9]}
+\end{cmdbox}
+
+This should output \texttt{foo1bar2}, because grep outputs all lines from its
+input that match the regex.
+
+There are a few command line options that you should know about \texttt{grep}.
+These can also be combined, like so: \texttt{grep -rnoh PATTERN FILE}.
+
+\begin{table}[H]
+    \centering
+    \rowcolors{1}{lightblue}{white}
+    \begin{tcolorbox}[%
+        enhanced,
+        fuzzy shadow={1mm}{-1mm}{0mm}{0.1mm}{black!50!white},
+        width=1.0\linewidth,
+        tabularx={>{\centering\arraybackslash}l|>{\centering\arraybackslash}X},
+        title={Useful grep flags}]
+        \textbf{Command} & \textbf{Description} \\
+        \texttt{-r} & Recursively look at all files under the given directory. \\
+        \texttt{-o} & Only print the matching strings, not the entire line. \\
+        \texttt{-h} & Don't print the filename, just the matching string/line. \\
+        \texttt{-n} & Prefix the output with the linenumber where the match occured. \\
+    \end{tcolorbox}%
+    \label{tabgrepopts}
+\end{table}
+
+\begin{table}[H]
+    \centering
+    \rowcolors{1}{lightblue}{white}
+    \begin{tcolorbox}[%
+        enhanced,
+        fuzzy shadow={1mm}{-1mm}{0mm}{0.1mm}{black!50!white},
+        width=1.0\linewidth,
+        tabularx={>{\centering\arraybackslash}l|>{\centering\arraybackslash}l|>{\centering\arraybackslash}X},
+        title={Regex building blocks}]
+        \textbf{Regex} & \textbf{Example} & \textbf{Description} \\
+
+		\textbf{Match Expressions} & & \\
+        \texttt{<character literal>} & \texttt{f} &
+            Matches the character \texttt{<character literal>}.
+            The example matches on \texttt{f}. \\
+        \texttt{.} & \texttt{.} & Matches any single character. \\
+        \texttt{[<char1>-<char2>]} & \texttt{[a-z]} &
+            Matches a single character in the range from \texttt{<char1>} to
+            \texttt{<char2>} (inclusive). The example matches on any lowercase
+            character. The character range can be specified multiple times,
+            like so: \texttt{[a-zA-Z0-9]}. This would match any lower- or
+            uppercase character or digit. \\
+        \texttt{[[:alnum:]]} & \texttt{[[:alnum:]]} &
+            Alphanumeric characters (letters and digits). \\
+        \texttt{[[:alpha:]]} & \texttt{[[:alpha:]]} & Letters. \\
+        \texttt{[[:digit:]]} & \texttt{[[:digit:]]} & Digits. \\
+        \texttt{[[:xdigit:]]} & \texttt{[[:xdigit:]]} & Hexadecimal digits. \\
+        \texttt{[[:blank:]]} & \texttt{[[:blank:]]} & Blank space (spaces and tabs). \\
+        \texttt{[[:word:]]} & \texttt{[[:word:]]} & Digits, letters and underscores. \\
+
+		\textbf{Modifiers} & & \\
+        \texttt{?} & \texttt{.?} &
+            The preceding expression appears zero times or exactly once. The
+            example would match on an empty string or any string of length one. \\
+        \texttt{*} & \texttt{.*} &
+            The preceding expression appears zero, one or many times. The
+            example would match on a string of arbitrary length, including an
+            empty one.\\
+        \texttt{+} & \texttt{.+} &
+            The preceding expression appears one or many times. The example
+            matches on a string of any length greater than zero. \\
+        \texttt{\string{<num>\string}} & \texttt{\string{3\string}} &
+            Matches on a string if the preceding expression appears exactly
+            \texttt{<num>} times. \\
+        \texttt{\string{<num1>,<num2>\string}} & \texttt{\string{3,6\string}} &
+            Matches on a string if the preceding expression appears between
+            \texttt{<num1>} and \texttt{<num2>} times (inclusive). \\
+    \end{tcolorbox}%
+    \label{tabgreplarge}
+\end{table}
+
+\paragraph{Note} When using the characters \texttt{|, +, ?} with their regex
+meaning, they must be escaped with a backslash like this: \verb@\|, \+, \?@. If
+you want to use any of the ofter special characters as regular characters, i.e.
+to match a literal \texttt{.} you can use \verb@\.@
+
+\begin{exercisebox}{Finding email addresses}
+    Somewhere in the exercise files, there is an email address hidden in a text
+    file. Create a regular expression that matches email addresses that end in
+    .ch and find it!
+\end{exercisebox}
+
+\section{Remote machines}
+
+This section will be about working with remote machines. You will
+connect to one and move files from and to it. Additionally, you will set up
+your SSH so you can log in without entering a password.
+
+\texttt{ssh} (secure shell) is an extremely useful tool, as it allows you to
+manage servers, connecting to your home computer from a laptop, running
+computations on super computers, and even using graphical applications that are
+installed on a different computer. \texttt{scp} (secure copy) works just like
+\texttt{cp}, but allows you to copy files to and from remote machines.
+\texttt{scp} is based on the SSH protocol, so it works similiarly and the
+public key authentication in exercise 5.2 will automatically also apply to
+\texttt{scp}.
+
+\begin{table}[H]
+    \centering
+    \rowcolors{1}{lightblue}{white}
+    \begin{tcolorbox}[%
+        enhanced,
+        fuzzy shadow={1mm}{-1mm}{0mm}{0.1mm}{black!50!white},
+        width=1.0\linewidth,
+        tabularx={>{\centering\arraybackslash}l|>{\centering\arraybackslash}X},
+        title={Remote access tools}]
+        \texttt{ssh user@hostname} &
+            Open an SSH session with a specific user on a host. \\
+        \texttt{scp user@hostname:file.txt .} &
+            Copy a file from remote machine to the current directory. \\
+        \texttt{scp file.txt user@hostname:file.txt} &
+            Copy a file from current directory to remote host. \\
+    \end{tcolorbox}%
+    \label{tab7}
+\end{table}
+
+\hintbox{%
+If you don't have an ETH account, use\\
+\texttt{hackingsession@pterodactyl.vsos.ethz.ch} with password\\
+\texttt{BoredHacker} for the following exercises instead.}
+
+\begin{exercisebox}{Establishing an SSH connection}
+    Use SSH to connect to the Euler supercomputer at
+    \texttt{nethz-login@euler.ethz.ch}, where \texttt{nethz-login} is your
+    \emph{nethz} account name. You can login using your regular credentials.
+\end{exercisebox}
+%
+It is inconvenient that you have to enter your password every time you want to
+log in. You can set up SSH in a way where you \emph{don't} have to provide your
+password!  This is done with public key cryptography. Basically, you generate a
+public key and a private key.  The private key you keep safe and only for
+yourself. The public key you can distribute to anyone.  Now you can
+authenticate yourself for anyone that has your public key: You can create a
+signature with your private key, that can be verified using the public key.
+However, only the owner of the private key can create the signature that is
+verifiable by the public key! This can be used by an SSH server to authenticate
+clients that want to open an SSH session.
+
+\begin{exercisebox}{Generating your key}
+    Generate your private/public key pair using \texttt{ssh-keygen}.
+    Then copy your generated public key (\texttt{.ssh/id\_rsa.pub}) to
+    \texttt{.ssh/authorized\_keys} on the server. Try logging in with SSH now,
+    it should no longer require a password.
+\end{exercisebox}
+
+
+\section{Jobs \& Processes}
+
+Jobs are groups of processes that are running in the current shell. Often, a
+job only consists of one process but sometimes a job is a process
+\emph{pipeline} consisting of multiple jobs, such as
+\texttt{echo "Hello" | cat -}. Consult the \texttt{JOB CONTROL} section
+of the \texttt{bash} manual if you want to study the details.
+
+Knowing how to control jobs is essential if you want to be able to
+simultaneously run multiple processes from the same shell.
+
+\subsection{Job control}
+
+Jobs can be put into the background, started in the background, brought to the
+foreground and killed. We say a job is running in the background when it is
+currently running, but not blocking the shell. In other words, when a job is
+running in the background, you can still use your shell normally (although the
+job might produce output that will get displayed on your terminal which can be
+quite annoying).
+
+\begin{table}[H]
+    \centering
+    \rowcolors{1}{lightblue}{white}
+    \begin{tcolorbox}[%
+        enhanced,
+        fuzzy shadow={1mm}{-1mm}{0mm}{0.1mm}{black!50!white},
+        width=1.0\linewidth,
+        tabularx={>{\centering\arraybackslash}l|>{\centering\arraybackslash}X},
+        title={Working with jobs}]
+	    \texttt{jobs} & List all jobs in the current shell\\
+	    \texttt{cmd \&} & Start \texttt{cmd} in the background\\
+	    \texttt{fg} & Bring a job into the foreground\\
+	    \texttt{bg} & Bring a job into the background\\
+    \end{tcolorbox}
+    \label{tabjobcmds}
+\end{table}
+
+\begin{table}[H]
+    \centering
+    \rowcolors{1}{lightblue}{white}
+    \begin{tcolorbox}[%
+        enhanced,
+        fuzzy shadow={1mm}{-1mm}{0mm}{0.1mm}{black!50!white},
+        width=1.0\linewidth,
+        tabularx={>{\centering\arraybackslash}l|>{\centering\arraybackslash}X},
+        title={Controlling jobs}]
+		\texttt{\keys{\ctrl}+\keys{z}} & Suspend current job. Processes may ignore this.\\
+		\texttt{\keys{\ctrl}+\keys{c}} & Kill current job. Processes may ignore this.\\
+        \texttt{kill \%N} & Kill job, where N is its number as listed in
+        \texttt{jobs}.Processes may \emph{still} ignore this.\\
+	    \texttt{kill -9 \%N} & Kill job with number N for sure.\\
+    \end{tcolorbox}
+    \label{tab8}
+\end{table}
+
+You can \emph{usually} use \keys{\ctrl}+\keys{c} to terminate a job in the
+foreground and \keys{\ctrl}+\keys{z} to suspend a job in the foreground.
+Suspended jobs are paused until they are resumed with either \texttt{fg} or
+\texttt{bg}. Note that processes can choose to overwrite these shortcuts so
+they are not guaranteed to work. If they don't work, we can always use more
+drastic measures \ldots
+
+\subsection{Processes}
+
+Processes operate system-wide. Each process has a unique process ID, called the
+PID for short. You can think of processes as separate programs running
+independent of each other. For example, an \texttt{echo} command spawns a new
+process that is separated from the shell process that you are in (which is
+typically \texttt{bash}).
+
+\begin{table}[H]
+    \centering
+    \rowcolors{1}{lightblue}{white}
+    \begin{tcolorbox}[%
+        enhanced,
+        fuzzy shadow={1mm}{-1mm}{0mm}{0.1mm}{black!50!white},
+        width=1.0\linewidth,
+        tabularx={>{\centering\arraybackslash}l|>{\centering\arraybackslash}X},
+        title={Managing}]
+        \texttt{top} & Display info about all currently running processes. Quit
+        with \keys{q}\\
+        \texttt{htop} & A more modern equivalent of \texttt{top}. It is not
+        installed by default on most distributions, but can be installed it
+        with your package manager. \\
+        \texttt{kill \texttt{PID}} & Send a termination signal to the process
+        \texttt{PID}. This is the preferred way to terminate a process, as it
+        allows it to exit normally and perform clean up. \\
+        \texttt{kill -9 \texttt{PID}} & Send a killing signal to the
+        process \texttt{PID}. The process is killed by the operating system
+        immediately. Useful for unresponsive processes. \\
+        \texttt{pkill \texttt{PATTERN}} & Like \texttt{kill}, but kills
+        processes whose names match a pattern instead. \\
+	    \texttt{pkill -9 \texttt{PATTERN}} & Send a kill signal instead. \\
+        \texttt{ps} & Utility to display information about processes. Most
+        commonly used as \texttt{ps aux}. \\
+    \end{tcolorbox}%
+    \label{tab9}
+\end{table}
+
+\texttt{kill} and \texttt{pkill} actually send so-called signals to processes.
+There are many signals that all do different things. When you call \texttt{kill
+PID}, the signal \texttt{15} is sent to the process \texttt{PID}. This signal
+is called the \texttt{SIGTERM} signal and is used to \emph{ask} a process to
+terminate. When we write \texttt{kill -9 PID}, we are actually sending the
+signal \texttt{9} which is also known as \texttt{SIGKILL} and kills a process
+instantly. Read \texttt{man 7 signal} if you want to know more about signals.
+
+
+\begin{exercisebox}{Killed in their sleep}
+    Start a new process by typing \texttt{sleep 1000} in your shell. Open
+    another shell. Use \texttt{top}, \texttt{htop} or \texttt{ps} to figure out
+    the PID of the \texttt{sleep} process. Kill it.
+\end{exercisebox}
+
+\begin{exercisebox}{A job for kill}
+    \texttt{kill} also works on jobs. Start \texttt{sleep 1000} in the
+    background (or start it in the foreground, suspend it, then bring it to the
+    background). Then type \texttt{kill \%N} where \texttt{N} is the job's number
+    (probably \texttt{1}). Check the output of the \texttt{jobs} command and
+    confirm that the job is not displayed anymore.
+\end{exercisebox}
+
+\section{License}
+
+This work is licensed under a Creative Commons Attribution-ShareAlike 4.0
+International License. See also:
+\url{http://creativecommons.org/licenses/by-sa/4.0/}.
+
+\vspace{0cm}
+\includegraphics[width=3cm]{assets/CC-BY-SA_icon.pdf}
+
+\end{document}
diff --git a/console_toolkit/source/exercises/img/Light_Bulb_or_Idea_Flat_Icon_Vector.svg b/console_toolkit/source/exercises/img/Light_Bulb_or_Idea_Flat_Icon_Vector.svg
new file mode 100644
index 0000000000000000000000000000000000000000..e007b5beb522f86b68325ae8da939bfc22453112
--- /dev/null
+++ b/console_toolkit/source/exercises/img/Light_Bulb_or_Idea_Flat_Icon_Vector.svg
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 960 960" style="enable-background:new 0 0 960 960;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#E6E6E6;}
+	.st1{fill:#FBB03B;}
+	.st2{fill:#FFC06C;}
+	.st3{fill:none;stroke:#FFFFFF;stroke-width:14.9358;stroke-miterlimit:10;}
+	.st4{fill:#CCCCCC;}
+	.st5{fill:#B3B3B3;}
+	.st6{fill:none;stroke:#FBB03B;stroke-width:24.893;stroke-miterlimit:10;}
+	.st7{fill:none;}
+</style>
+<g>
+	<circle class="st0" cx="478.7" cy="792.5" r="35.9"/>
+	<path class="st1" d="M488.4,222.2c-2.7-0.1-5.3-0.2-8-0.2c-2.6,0-5.2,0.1-7.9,0.2c-130.1,5.2-227.4,145.4-170,262.3l2.7,5.4
+		c30.5,52.5,70.4,38.5,70.4,98.3v42.3h210.6v-42.8c0-59.5,36-47.4,65.6-97.5l3.1-6.4C711.2,366.8,618.1,227.4,488.4,222.2z"/>
+	<g>
+		<path class="st2" d="M488.4,222.2c-2.7-0.1-5.3-0.2-8-0.2c-2.6,0-5.2,0.1-7.9,0.2c-57.2,2.3-108,30.6-142.1,71.6
+			c31.8-26.6,72.1-43.9,116.2-45.7c2.6-0.1,5.2-0.2,7.9-0.2c2.7,0,5.3,0.1,8,0.2c129.7,5.3,222.9,144.6,166.6,261.6l-3.1,6.4
+			c-2.3,3.9-4.6,7.4-7,10.5c10.4-8.2,22.1-18.2,32.9-36.4l3.1-6.4C711.2,366.8,618.1,227.4,488.4,222.2z"/>
+	</g>
+	<path class="st3" d="M500.2,615.4c-3.8-33.6-7.5-67.3-6.2-101.1s8.1-67.8,24.2-97.5c4.1-7.5,8.9-14.9,15.9-19.9
+		c11.7-8.3,28.8-8.1,40.3,0.6s16.3,25.1,11.5,38.6c-4.8,13.3-17.2,22.3-30.1,28.2c-25.6,11.8-134.3,11.8-159.9,0
+		c-12.8-5.9-25.3-14.9-30.1-28.2c-4.9-13.5,0-29.9,11.5-38.6s28.6-8.9,40.3-0.6c7,5,11.8,12.4,15.9,19.9
+		c16.1,29.7,22.9,63.7,24.2,97.5s-2.4,67.5-6.2,101.1"/>
+	<path class="st4" d="M556.9,792.5H406.2c-12.1,0-30.9-9.4-30.9-20.9l0,0V619.9c0-8.1,6.5-14.6,14.6-14.6h183.3
+		c8.1,0,14.6,6.5,14.6,14.6V771v0.6C587.8,783.1,568.9,792.5,556.9,792.5z"/>
+	<path class="st0" d="M588.2,630.5l-225.6,27.2c-9.6,1.2-18.3-5.7-19.5-15.3l-0.4-3.4c-1.2-9.6,5.7-18.3,15.3-19.5l225.6-27.2
+		c9.6-1.2,18.3,5.7,19.5,15.3l0.4,3.4C604.7,620.6,597.8,629.3,588.2,630.5z"/>
+	<path class="st0" d="M595.9,693.9l-225.6,27.2c-9.6,1.2-18.3-5.7-19.5-15.3l-0.4-3.4c-1.2-9.6,5.7-18.3,15.3-19.5l225.6-27.2
+		c9.6-1.2,18.3,5.7,19.5,15.3l0.4,3.4C612.3,684,605.5,692.8,595.9,693.9z"/>
+	<path class="st0" d="M603.5,757.4l-225.6,27.2c-9.6,1.2-18.3-5.7-19.5-15.3l-0.4-3.4c-1.2-9.6,5.7-18.3,15.3-19.5l225.6-27.2
+		c9.6-1.2,18.3,5.7,19.5,15.3l0.4,3.4C620,747.5,613.1,756.2,603.5,757.4z"/>
+	<polygon class="st5" points="375.3,720.5 375.3,732.6 587.8,707 587.8,694.9 	"/>
+	<path class="st5" d="M586.5,630.7l-211.2,25.5v12.1l211.2-25.5c0.4-0.1,0.8-0.2,1.2-0.3v-12.1C587.3,630.5,587,630.6,586.5,630.7z"
+		/>
+	<path class="st5" d="M382.8,784c6.6,5.1,16.2,8.5,23.4,8.5h6.5l175.1-21.1V771v-11.7L382.8,784z"/>
+	<g>
+		<g>
+			<g>
+				<g>
+					<line class="st6" x1="242.2" y1="605.2" x2="298" y2="557.6"/>
+					<line class="st6" x1="242.2" y1="605.2" x2="298" y2="557.6"/>
+					<path class="st7" d="M275,466.8c0,0,0.1,0.3,0.3,0.9c0.2,0.6,0.5,1.5,0.9,2.6c0.8,2.2,1.8,5.4,3.3,9.2c0.4,0.9,0.7,1.9,1.1,2.9
+						c0.2,0.5,0.4,1,0.6,1.6c0.2,0.5,0.5,1,0.7,1.6c0.9,2.1,1.9,4.4,2.9,6.7c1.1,2.3,2.3,4.6,3.4,7c0.5,1.2,1.2,2.4,1.9,3.5
+						c0.6,1.2,1.3,2.4,1.9,3.6c5.2,9.4,11.3,18.4,16.1,24.9c2.4,3.2,4.6,5.9,6.1,7.7s2.4,2.8,2.4,2.8l-85,72.6c0,0-1.3-1.5-3.6-4.3
+						s-5.5-6.8-9.2-11.7c-1.8-2.5-3.7-5.2-5.8-8.1c-1-1.4-2.1-2.9-3.1-4.4s-2.1-3.1-3.1-4.7c-1-1.6-2.1-3.2-3.2-4.9
+						c-1.1-1.6-2.1-3.4-3.1-5.1c-1-1.7-2.1-3.5-3.1-5.2l-1.6-2.6l-1.5-2.7c-1-1.8-2-3.6-2.9-5.4c-1-1.8-2-3.6-2.8-5.4
+						c-1.8-3.6-3.5-7.2-5.2-10.7c-1.5-3.5-3-6.9-4.4-10.2c-0.3-0.8-0.7-1.6-1-2.4c-0.3-0.8-0.6-1.6-0.9-2.4c-0.6-1.5-1.2-3-1.7-4.5
+						c-2.3-5.7-3.9-10.6-5-14c-0.6-1.7-1-3-1.3-4c-0.3-0.9-0.5-1.4-0.5-1.4L275,466.8z"/>
+				</g>
+				<g>
+					<line class="st6" x1="177.9" y1="482.7" x2="248.7" y2="463.9"/>
+					<line class="st6" x1="177.9" y1="482.7" x2="248.7" y2="463.9"/>
+					<path class="st7" d="M267.3,371.9c0,0-0.2,1.3-0.4,3.7c-0.1,1.2-0.3,2.6-0.5,4.2c-0.1,0.8-0.2,1.7-0.3,2.6
+						c-0.1,0.9-0.1,1.9-0.2,2.9c-0.7,8.1-0.9,19-0.3,29.7c0.1,1.3,0.2,2.7,0.3,4c0.1,1.3,0.1,2.7,0.3,4c0.3,2.6,0.6,5.2,0.9,7.7
+						c0.8,5,1.4,9.7,2.3,13.6c0.4,2,0.7,3.8,1.1,5.4s0.7,3,1,4.1c0.6,2.3,0.9,3.6,0.9,3.6l-108.1,28.7c0,0-0.5-2-1.4-5.5
+						c-0.4-1.7-0.9-3.9-1.5-6.3s-1.1-5.2-1.7-8.2c-1.3-6-2.3-13.1-3.5-20.7c-0.4-3.8-0.9-7.8-1.3-11.8c-0.3-2-0.3-4-0.5-6.1
+						c-0.1-2-0.3-4.1-0.4-6.1c-0.9-16.4-0.6-32.7,0.5-45c0.1-1.5,0.2-3,0.3-4.4c0.2-1.4,0.3-2.7,0.4-3.9c0.3-2.5,0.5-4.6,0.8-6.4
+						c0.4-3.6,0.7-5.6,0.7-5.6L267.3,371.9z"/>
+				</g>
+				<g>
+					<line class="st6" x1="172.9" y1="344.5" x2="244.9" y2="358"/>
+					<line class="st6" x1="172.9" y1="344.5" x2="244.9" y2="358"/>
+					<path class="st7" d="M301.2,283.2c0,0-0.2,0.3-0.5,0.8s-0.8,1.3-1.5,2.3c-0.6,1-1.4,2.2-2.3,3.6c-0.4,0.7-0.9,1.4-1.4,2.2
+						c-0.5,0.8-0.9,1.6-1.4,2.5c-1,1.8-2.1,3.7-3.2,5.7c-0.6,1-1.1,2.1-1.6,3.2s-1.1,2.2-1.7,3.3c-0.6,1.1-1.2,2.3-1.7,3.4
+						c-0.6,1.2-1.1,2.4-1.6,3.6s-1.1,2.4-1.6,3.7c-0.5,1.2-1.1,2.4-1.6,3.7c-1,2.5-1.9,5-2.9,7.5c-0.5,1.2-0.9,2.5-1.3,3.7
+						s-0.8,2.5-1.2,3.7c-0.4,1.2-0.8,2.4-1.2,3.5c-0.4,1.2-0.6,2.3-1,3.4c-0.6,2.2-1.2,4.3-1.7,6.3c-0.3,1-0.5,1.9-0.7,2.8
+						s-0.4,1.8-0.6,2.6c-0.4,1.6-0.7,3-0.9,4.1c-0.3,1.2-0.5,2-0.6,2.7c-0.1,0.6-0.2,1-0.2,1L159,341.9c0,0,0.1-0.5,0.3-1.5
+						c0.1-1,0.5-2.3,0.8-4.1c0.4-1.8,0.9-3.9,1.4-6.3c0.3-1.2,0.6-2.5,0.9-3.9c0.3-1.4,0.6-2.8,1-4.3c0.8-3,1.7-6.2,2.6-9.6
+						c0.5-1.7,0.9-3.5,1.5-5.2c0.6-1.8,1.2-3.6,1.8-5.4s1.2-3.7,1.8-5.6s1.2-3.8,2-5.7c1.5-3.8,2.9-7.6,4.4-11.4
+						c0.7-1.9,1.6-3.8,2.4-5.7c0.8-1.9,1.7-3.7,2.5-5.6c0.8-1.8,1.6-3.7,2.5-5.5s1.8-3.5,2.6-5.2c0.9-1.7,1.7-3.4,2.5-5.1
+						c0.8-1.6,1.6-3.3,2.5-4.8c1.7-3.1,3.4-6,4.9-8.7c0.8-1.3,1.5-2.6,2.2-3.8s1.5-2.3,2.1-3.4c1.3-2.1,2.5-4,3.5-5.5
+						s1.7-2.7,2.2-3.5s0.8-1.2,0.8-1.2L301.2,283.2z"/>
+				</g>
+				<g>
+					<line class="st6" x1="228" y1="217.5" x2="287" y2="260.9"/>
+					<line class="st6" x1="228" y1="217.5" x2="287" y2="260.9"/>
+					<path class="st7" d="M370.2,217.7c0,0-0.3,0.2-0.8,0.5s-1.4,0.8-2.4,1.4c-2,1.3-4.8,3.1-8.2,5.3c-6.6,4.7-15.3,11.1-23.3,18.4
+						c-1,0.9-2,1.8-3,2.8c-1,0.9-1.9,1.9-2.9,2.8c-1,0.9-1.9,1.8-2.8,2.7c-0.9,1-1.8,1.9-2.6,2.8c-0.9,0.9-1.7,1.8-2.6,2.7
+						c-0.8,0.9-1.7,1.7-2.4,2.6c-1.5,1.8-2.9,3.4-4.2,5c-0.7,0.8-1.3,1.5-1.9,2.2s-1.1,1.4-1.6,2.1c-1,1.3-1.9,2.4-2.6,3.4
+						c-0.7,0.9-1.3,1.7-1.7,2.2c-0.4,0.5-0.6,0.8-0.6,0.8l-90.1-66.2c0,0,0.3-0.4,0.9-1.2c0.6-0.8,1.4-1.9,2.5-3.3
+						c1.1-1.4,2.4-3.1,4-5.1c0.8-1,1.6-2,2.4-3.1c0.9-1.1,1.9-2.2,2.8-3.4c2-2.3,4.2-4.9,6.5-7.5c1.1-1.4,2.4-2.6,3.7-4
+						c1.3-1.3,2.6-2.7,3.9-4.1c1.3-1.4,2.7-2.8,4-4.2c1.4-1.4,2.8-2.8,4.3-4.2s2.9-2.8,4.4-4.2c1.5-1.4,2.9-2.9,4.5-4.2
+						c12.1-11.1,25.3-20.9,35.3-27.9c5.2-3.4,9.4-6.1,12.5-8.1c1.5-1,2.8-1.6,3.6-2.1c0.8-0.5,1.3-0.7,1.3-0.7L370.2,217.7z"/>
+				</g>
+				<g>
+					<line class="st6" x1="332.4" y1="126.9" x2="367" y2="191.4"/>
+					<line class="st6" x1="332.4" y1="126.9" x2="367" y2="191.4"/>
+					<path class="st7" d="M460.6,188.4c0,0-1.3,0.1-3.7,0.3c-2.3,0.2-5.7,0.8-9.7,1.3c-2,0.2-4.1,0.7-6.4,1.1
+						c-1.1,0.2-2.3,0.4-3.5,0.7c-1.2,0.2-2.4,0.4-3.6,0.7c-2.5,0.6-5,1.2-7.6,1.8c-1.3,0.3-2.6,0.7-3.9,1.1
+						c-1.3,0.4-2.6,0.8-3.9,1.1c-1.3,0.4-2.6,0.7-3.9,1.1c-1.3,0.4-2.5,0.9-3.8,1.3c-1.3,0.4-2.5,0.9-3.7,1.3
+						c-1.2,0.4-2.5,0.8-3.6,1.3c-2.3,0.9-4.6,1.9-6.8,2.7c-0.5,0.2-1.1,0.4-1.6,0.6c-0.5,0.2-1,0.5-1.5,0.7c-1,0.5-1.9,0.9-2.9,1.3
+						c-1.8,0.8-3.5,1.6-5,2.3c-1.5,0.8-2.7,1.4-3.8,2c-2.1,1.1-3.3,1.7-3.3,1.7l-52.9-98.5c0,0,1.8-0.9,5-2.6c1.6-0.8,3.5-1.8,5.7-3
+						c2.3-1.1,4.8-2.2,7.6-3.5c1.4-0.6,2.9-1.3,4.4-2c0.8-0.3,1.5-0.7,2.3-1s1.6-0.7,2.4-1c3.3-1.3,6.7-2.7,10.3-4.1
+						c1.8-0.7,3.6-1.4,5.5-2c1.9-0.7,3.8-1.3,5.7-2c1.9-0.7,3.8-1.3,5.8-2c2-0.6,3.9-1.2,5.9-1.7c2-0.6,3.9-1.2,5.9-1.7
+						c2-0.6,3.9-1.2,5.9-1.6c3.9-0.9,7.8-1.9,11.5-2.8c1.9-0.5,3.7-0.8,5.5-1.1c1.8-0.3,3.6-0.7,5.3-1c3.5-0.6,6.7-1.3,9.8-1.7
+						c6.1-0.8,11.2-1.6,14.7-1.9c3.6-0.3,5.6-0.5,5.6-0.5L460.6,188.4z"/>
+				</g>
+				<g>
+					<line class="st6" x1="465.8" y1="90.2" x2="469.1" y2="163.4"/>
+					<line class="st6" x1="465.8" y1="90.2" x2="469.1" y2="163.4"/>
+					<path class="st7" d="M554.9,201c0,0-0.3-0.1-0.9-0.4c-0.6-0.2-1.4-0.6-2.6-0.9c-2.2-0.7-5.4-1.8-9.3-3
+						c-1.9-0.5-4.1-1.1-6.3-1.7c-1.1-0.3-2.3-0.6-3.4-1c-1.2-0.3-2.4-0.5-3.6-0.8c-2.5-0.5-5-1.1-7.6-1.7c-2.6-0.4-5.3-0.9-7.9-1.3
+						c-10.7-1.6-21.5-2.5-29.6-2.5c-2,0-3.9-0.1-5.5-0.1s-3.1,0.1-4.3,0.1c-2.4,0.1-3.7,0.1-3.7,0.1l-5-111.7c0,0,2-0.1,5.6-0.2
+						c1.8,0,4-0.2,6.5-0.2s5.3,0.1,8.4,0.1c12.3,0,28.6,1.4,44.8,3.8c4,0.7,8.1,1.4,12.1,2.1c4,0.8,7.8,1.7,11.6,2.5
+						c1.9,0.4,3.7,0.8,5.5,1.3s3.5,1,5.2,1.4c3.4,0.9,6.6,1.8,9.6,2.6c5.9,1.9,10.7,3.5,14.1,4.6c1.7,0.5,3,1.1,3.9,1.4
+						s1.4,0.5,1.4,0.5L554.9,201z"/>
+				</g>
+				<g>
+					<line class="st6" x1="601.9" y1="114.6" x2="573.4" y2="182"/>
+					<line class="st6" x1="601.9" y1="114.6" x2="573.4" y2="182"/>
+					<path class="st7" d="M634.4,253.1c0,0-0.9-1-2.6-2.7c-0.8-0.9-1.9-1.8-3.1-3c-1.2-1.1-2.5-2.4-4-3.8c-1.4-1.4-3.2-2.8-4.9-4.3
+						c-0.9-0.8-1.8-1.5-2.7-2.3c-0.5-0.4-0.9-0.8-1.4-1.2s-1-0.8-1.5-1.2c-2-1.6-4.1-3.2-6.2-4.8c-2.1-1.6-4.4-3.1-6.6-4.7
+						c-8.9-6.1-18.2-11.6-25.5-15c-1.8-0.9-3.4-1.8-4.9-2.5s-2.8-1.2-3.9-1.7c-2.2-1-3.4-1.5-3.4-1.5l43.6-102.9
+						c0,0,1.9,0.8,5.2,2.3c1.6,0.7,3.6,1.6,5.9,2.6c2.3,1,4.8,2.4,7.5,3.7c11.1,5.4,25.3,13.6,38.8,22.9c3.3,2.4,6.7,4.7,10,7.1
+						c3.2,2.5,6.3,4.9,9.4,7.3c0.8,0.6,1.5,1.2,2.2,1.8s1.4,1.2,2.1,1.8c1.4,1.2,2.8,2.4,4.1,3.5c2.7,2.3,5.2,4.4,7.4,6.6
+						c2.2,2.1,4.3,4,6.1,5.7s3.4,3.2,4.6,4.5c2.5,2.6,3.9,4,3.9,4L634.4,253.1z"/>
+				</g>
+				<g>
+					<line class="st6" x1="714.1" y1="195.4" x2="659.3" y2="244"/>
+					<line class="st6" x1="714.1" y1="195.4" x2="659.3" y2="244"/>
+					<path class="st7" d="M683.8,334.3c0,0-0.4-1.3-1.2-3.5c-0.4-1.1-0.9-2.5-1.4-4c-0.6-1.5-1.3-3.2-2.1-5.1
+						c-0.4-0.9-0.8-1.9-1.2-2.9c-0.2-0.5-0.4-1-0.6-1.5c-0.2-0.5-0.5-1-0.7-1.6c-1-2.1-2-4.3-3-6.6c-0.5-1.2-1.1-2.3-1.7-3.4
+						c-0.6-1.2-1.2-2.3-1.8-3.5s-1.2-2.4-1.8-3.6c-0.7-1.2-1.4-2.3-2.1-3.5c-0.7-1.2-1.4-2.3-2-3.5l-1-1.7c-0.4-0.6-0.7-1.1-1.1-1.7
+						c-1.4-2.2-2.9-4.4-4.2-6.5c-1.4-2.1-2.9-4-4.2-5.9c-0.7-0.9-1.3-1.9-2-2.7c-0.6-0.9-1.3-1.7-2-2.5c-1.3-1.6-2.4-3-3.4-4.3
+						c-0.5-0.6-1-1.3-1.4-1.8c-0.5-0.5-0.9-1-1.3-1.5c-1.6-1.8-2.5-2.8-2.5-2.8l83.8-74c0,0,1.3,1.5,3.7,4.2c0.6,0.7,1.2,1.4,2,2.2
+						c0.7,0.8,1.4,1.7,2.2,2.7c1.6,2,3.3,4.2,5.2,6.6c0.9,1.2,2,2.4,3,3.8c1,1.3,2,2.7,3,4.2c2,2.9,4.3,5.8,6.4,9
+						c2.1,3.2,4.3,6.5,6.5,9.9c0.5,0.8,1.1,1.7,1.6,2.6c0.5,0.9,1,1.8,1.5,2.6c1,1.8,2.1,3.5,3.1,5.3s2.1,3.5,3.1,5.3
+						s1.9,3.6,2.8,5.4c0.9,1.8,1.9,3.6,2.8,5.3c0.9,1.8,1.8,3.5,2.6,5.2c1.6,3.5,3.2,6.9,4.6,10.1c0.4,0.8,0.7,1.6,1.1,2.4
+						c0.3,0.8,0.6,1.6,1,2.3c0.6,1.5,1.2,3,1.8,4.4c1.1,2.9,2.2,5.5,3.1,7.8c0.8,2.4,1.6,4.4,2.2,6.1c1.2,3.4,1.8,5.3,1.8,5.3
+						L683.8,334.3z"/>
+				</g>
+				<g>
+					<line class="st6" x1="780.6" y1="316.8" x2="710.1" y2="336.8"/>
+					<line class="st6" x1="780.6" y1="316.8" x2="710.1" y2="336.8"/>
+					<path class="st7" d="M692.8,425.6c0,0,0.1-0.3,0.2-0.9c0.1-0.3,0.1-0.7,0.2-1.1c0.1-0.4,0.1-0.9,0.2-1.4c0.2-1,0.4-2.3,0.6-3.7
+						c0.1-0.7,0.1-1.4,0.2-2.1c0-0.4,0.1-0.7,0.1-1.1s0.1-0.8,0.1-1.1c0-0.7,0.1-1.4,0.1-2.2c0.1-0.6,0.1-1.9,0.1-3
+						c0-2.3,0.1-4.8,0.1-7.3c0.1-1.3,0-2.6-0.1-3.9c0-1.3-0.1-2.6-0.1-3.9s-0.1-2.7-0.1-4s-0.2-2.7-0.3-4
+						c-0.6-10.8-2.7-21.4-4.2-29.3c-0.9-3.9-1.7-7.2-2.3-9.5c-0.7-2.3-1.1-3.5-1.1-3.5L794,313c0,0,0.6,2,1.6,5.4
+						c0.8,3.5,2,8.5,3.5,14.5c2.5,12.1,5.4,28.3,6.4,44.6c0.2,2,0.4,4.1,0.5,6.1s0.1,4.1,0.2,6.1c0.1,2,0.1,4,0.2,6
+						c0.1,2,0.1,3.9,0.1,5.8c-0.1,3.8-0.1,7.5-0.2,11.1c0,1.8,0,3.3-0.2,5.5c-0.1,2-0.3,3.9-0.4,5.8c-0.1,1-0.2,1.8-0.2,2.6
+						c-0.1,0.8-0.2,1.6-0.3,2.4c-0.2,1.6-0.4,3.1-0.5,4.5c-0.4,2.7-0.7,5-1,6.9c-0.1,0.9-0.3,1.8-0.4,2.5c-0.1,0.7-0.2,1.3-0.3,1.8
+						c-0.2,1-0.3,1.5-0.3,1.5L692.8,425.6z"/>
+				</g>
+				<g>
+					<line class="st6" x1="786" y1="457.2" x2="714.7" y2="440.4"/>
+					<line class="st6" x1="786" y1="457.2" x2="714.7" y2="440.4"/>
+					<path class="st7" d="M657.2,524c0,0,0.7-1.4,1.9-3.7c1.2-2.4,2.8-5.8,4.8-9.9c3.8-8.3,8.7-19.5,13-30.8
+						c4.4-11.3,8.1-22.7,10.5-31c1.1-4.1,2.1-7.6,2.7-10c0.3-1.2,0.5-2.1,0.7-2.8c0.2-0.6,0.2-1,0.2-1l108.9,25.5
+						c0,0-0.1,0.5-0.3,1.4s-0.6,2.2-1,3.9c-0.8,3.4-2.1,8.2-3.7,13.8c-3.2,11.3-8,25.8-13.4,39.8c-5.4,14.1-11.3,27.8-16.1,38
+						c-2.4,5.1-4.4,9.3-5.9,12.3s-2.3,4.6-2.3,4.6L657.2,524z"/>
+				</g>
+				<g>
+					<line class="st6" x1="738.3" y1="579.7" x2="673.8" y2="545"/>
+					<line class="st6" x1="738.3" y1="579.7" x2="673.8" y2="545"/>
+					<path class="st7" d="M607.2,594.4c0,0,0.2-0.2,0.5-0.4c0.1,0,0.1,0,0.2-0.1c0.1-0.1,0.2-0.2,0.3-0.3c0.2-0.2,0.5-0.4,0.7-0.5
+						c0.1-0.1,0.3-0.2,0.4-0.3c0.2-0.1,0.4-0.3,0.6-0.5c0.4-0.3,0.8-0.7,1.3-1.1c0.4-0.3,1-0.9,1.5-1.4c0.6-0.5,1.1-1.1,1.7-1.6
+						c0.6-0.7,1.3-1.4,2-2.1c0.3-0.3,0.7-0.7,1-1.1c0.3-0.3,0.7-0.8,1.1-1.2c0.7-0.8,1.5-1.7,2.2-2.5c0.8-0.8,1.5-1.9,2.3-2.8
+						c1.6-1.9,3.2-4,4.8-6.1c6.4-8.5,12.6-18.5,17.1-26c2.2-3.9,4.1-7,5.3-9.4c1.3-2.3,2-3.6,2-3.6l98.5,52.8c0,0-0.9,1.7-2.5,4.6
+						c-1.6,2.9-4,7.1-6.8,12.1c-5.9,10-14,23.2-24,36.4c-2.5,3.3-5,6.6-7.7,9.9c-1.4,1.6-2.6,3.2-4,4.8s-2.8,3.2-4.2,4.7
+						c-0.7,0.8-1.3,1.5-2.1,2.3c-0.7,0.8-1.5,1.5-2.2,2.3c-1.5,1.5-2.9,3-4.3,4.4c-1.5,1.4-3,2.9-4.5,4.2c-1.5,1.4-2.8,2.6-4.4,3.9
+						c-1.5,1.3-3,2.5-4.3,3.6c-0.7,0.6-1.3,1.1-2.1,1.7c-0.7,0.5-1.5,1.1-2.2,1.6c-1.4,1-2.7,2-4,2.9c-0.6,0.4-1.2,0.9-1.8,1.2
+						c-0.6,0.4-1.3,0.8-1.8,1.2c-4.7,2.9-7.5,4.5-7.5,4.5L607.2,594.4z"/>
+				</g>
+			</g>
+		</g>
+	</g>
+</g>
+</svg>
diff --git a/console_toolkit/source/exercises/img/light_bulb.pdf b/console_toolkit/source/exercises/img/light_bulb.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..8a28a0373b2424d33e0c79ab4f76316e7ab3a518
Binary files /dev/null and b/console_toolkit/source/exercises/img/light_bulb.pdf differ
diff --git a/console_toolkit/source/exercises/img/regex_golf.png b/console_toolkit/source/exercises/img/regex_golf.png
new file mode 100644
index 0000000000000000000000000000000000000000..10bb8ecc3fc76f92747e4f940c8c19bf0d3f1651
Binary files /dev/null and b/console_toolkit/source/exercises/img/regex_golf.png differ
diff --git a/console_toolkit/source/slides/Makefile b/console_toolkit/source/slides/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..0b08d6330ce69532de4c90dbdeae8adca89a6cff
--- /dev/null
+++ b/console_toolkit/source/slides/Makefile
@@ -0,0 +1,25 @@
+TEX=latexmk
+TEXOPTS=-output-directory=build \
+		-pdf \
+		-latexoption=-interaction=nonstopmode \
+		-latexoption=-file-line-error
+
+# set PREVIEW=1 to enable preview
+# example usage: make PREVIEW=1 target
+ifdef PREVIEW
+PREVIEWOPTS=-pvc
+endif
+
+default: pres
+
+# create build directory if it doesnt exist
+builddir:
+	@[ -d build ] || mkdir build
+
+pres: pres.tex builddir
+	@$(TEX) $(TEXOPTS) $(PREVIEWOPTS) $<
+	mv build/pres.pdf .
+
+clean:
+	@rm -rf build/*
+
diff --git a/console_toolkit/source/slides/img/GullBraceLeft.svg b/console_toolkit/source/slides/img/GullBraceLeft.svg
new file mode 100644
index 0000000000000000000000000000000000000000..36bee5293df133b06e78e4e27042bb7184b5f238
--- /dev/null
+++ b/console_toolkit/source/slides/img/GullBraceLeft.svg
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 11.0, SVG Export Plug-In . SVG Version: 6.0.0 Build 78)  -->
+<svg:svg
+   xmlns:ns2="http://ns.adobe.com/Extensibility/1.0/"
+   xmlns:ns1="http://ns.adobe.com/Flows/1.0/"
+   xmlns:xapGImg="http://ns.adobe.com/xap/1.0/g/img/"
+   xmlns:xap="http://ns.adobe.com/xap/1.0/"
+   xmlns:ns0="http://ns.adobe.com/SaveForWeb/1.0/"
+   xmlns:ns="http://ns.adobe.com/Variables/1.0/"
+   xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
+   xmlns:x="adobe:ns:meta/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   i:viewOrigin="247.6001 506.4004"
+   i:rulerOrigin="-8 24.8896"
+   i:pageBounds="8 817 603.2754 -24.8896"
+   i:viewBoxInterpretation="asCropBox"
+   width="46.667"
+   height="167.666"
+   viewBox="-0.6 -0.6 46.667 167.666"
+   enable-background="new -0.6 -0.6 46.667 167.666"
+   xml:space="preserve"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45"
+   sodipodi:docname="GullBrace.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:docbase="G:\Documents and Settings\Jesse\Desktop"
+   sodipodi:modified="true"><svg:defs
+   id="defs18" /><sodipodi:namedview
+   inkscape:window-height="998"
+   inkscape:window-width="1280"
+   inkscape:pageshadow="2"
+   inkscape:pageopacity="0.0"
+   guidetolerance="10.0"
+   gridtolerance="10.0"
+   objecttolerance="10.0"
+   borderopacity="1.0"
+   bordercolor="#666666"
+   pagecolor="#ffffff"
+   id="base"
+   inkscape:zoom="2.2485179"
+   inkscape:cx="23.3335"
+   inkscape:cy="88.280374"
+   inkscape:window-x="1276"
+   inkscape:window-y="-4"
+   inkscape:current-layer="svg2" />
+	<svg:metadata
+   id="metadata4">
+		<ns:variableSets>
+			<ns:variableSet
+   varSetName="binding1"
+   locked="none">
+				<ns:variables />
+				<ns:sampleDataSets />
+			</ns:variableSet>
+		</ns:variableSets>
+		<ns0:sfw>
+			<ns0:slices />
+			<ns0:sliceSourceBounds
+   x="210"
+   y="54.523"
+   width="119.998"
+   height="475.477"
+   bottomLeftOrigin="true" />
+		</ns0:sfw>
+<xpacket /><x:xmpmeta
+   x:xmptk="XMP toolkit 3.0-29, framework 1.6">
+
+<svg:metadata
+   id="metadata20"><rdf:RDF>
+
+ <rdf:Description
+   rdf:about="">
+ </rdf:Description>
+
+ <rdf:Description
+   rdf:about="">
+ </rdf:Description>
+
+ <rdf:Description
+   rdf:about="">
+  <xap:CreateDate>2006-10-15T04:46:54Z</xap:CreateDate>
+  <xap:ModifyDate>2006-10-15T04:46:54Z</xap:ModifyDate>
+  <xap:CreatorTool>Illustrator</xap:CreatorTool>
+  <xap:Thumbnails>
+   <rdf:Alt>
+    <rdf:li
+   rdf:parseType="Resource">
+     <xapGImg:format>JPEG</xapGImg:format>
+     <xapGImg:width>68</xapGImg:width>
+     <xapGImg:height>256</xapGImg:height>
+     <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
+AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
+DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
+Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAABEAwER
+AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
+AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
+UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
+1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
+qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
+obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
+0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
++DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7
+FXYq7FXYql+sXurWkSy6fpv6T+16sKTJDLsPh4erxjap68nWnvirz+P/AJyH8j2nmAeXvNFvqHlL
+VzTjFrEKxwty2DJcQvPEYyQQJCwXbrir06OSOWNZI2DxuAyOpBVlIqCCOoOKrsVdirsVdirsVdir
+sVeN/wDOVfkmx1/8q77VTEv6U8vlby0noOfpcgk8fLrxMbcqeKjFUo/5w6853utfl7eaJeytNL5e
+uVitnYkkWs6l4kqf5HWQDwWg7Yq97xV2KuxV2KuxV2KuxVhX51/+Sj83/wDbKuv+TRxV4V/zgx/0
+23/br/7HMVfVWKuxV2KuxV2KuxV2KsK/Ov8A8lH5v/7ZV1/yaOKvCv8AnBj/AKbb/t1/9jmKvqrF
+XYq7FXYq7FXYq7FWGfnQjv8AlJ5vCAsRpN2xA8FhYk/QBirwf/nBl0D+dYyRzYaYyr3IX62Cfo5D
+FX1XirsVdirsVdirsVdiqC1zSbbWdF1DSLr/AHl1G2mtJ6UJ9OeMxt19mxV8hfklqF3+Sv5uaj5a
+88J+jrHVovqyalJVbZmiflb3CyHYxOCyk/slvipRqKvseGaGeJJoZFlhkUNHIhDKykVBUjYg4qvx
+V2KuxV2KuxV2KrZpYoYnmlcRxRqXkdjRVVRUkk9gMVfJ+o/mF5q/P/zzL5H8vLbaZ5NhDzXV5cW0
+VxcG2jYI09ZVf03dnHprHxYV3brir6D/AC5/Kzyt+X+nGx0E3bLIAJpLq5ll5kb8vSqIEPukYxVl
++KuxV2KuxV2KuxViP5v3ctp+Vfm6eI0kXSL1VYGhBeBlqCO4rXFXz5/zg3aI195xuzTnDFYRLtvS
+Vrhjv/zyGKvrHFXYq7FXYq7FXYq7FWFfnX/5KPzf/wBsq6/5NHFXhX/ODH/Tbf8Abr/7HMVfVWKu
+xV2KuxV2KuxV2KsK/Ov/AMlH5v8A+2Vdf8mjirwr/nBj/ptv+3X/ANjmKvqrFXYq7FXYq7FXYq7F
+Xnn/ADkFqtvpn5N+aZp2AE1mbSMHqXuWWFQPH7dcVeT/APOD+kXMOheatXZSLe9ubW1ibsWtY5He
+n0XS4q+m8VdirsVdirsVdiqXa1q1zp0KvbaXd6rK9QtvZ+gGqP5muJYI1r7tirxL8xPy6/OH83by
+10/WY7Xyb5OtJRN9UM63t7NJQqJJBAfRJVSeK86LU7tir2PyX5O0Pyd5as/L2iRGKwslIUseUjux
+5PJI3dnYkn7hQUGKp3irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs
+VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV
+dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd
+irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi
+rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir
+sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir/
+AP/Z</xapGImg:image>
+    </rdf:li>
+   </rdf:Alt>
+  </xap:Thumbnails>
+ </rdf:Description>
+
+ <rdf:Description
+   rdf:about="">
+  <dc:format>image/svg+xml</dc:format>
+ </rdf:Description>
+
+<cc:Work
+   rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+     rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></svg:metadata></x:xmpmeta>
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <xpacket />
+			</svg:metadata>
+		<svg:g
+   id="image"
+   i:layer="yes"
+   i:dimmedPercent="3"
+   i:rgbTrio="#4F008000FFFF"
+   transform="matrix(-1,0,0,1,44.655574,0.8894748)">
+			<svg:switch
+   i:objectNS="http://ns.adobe.com/Flows/1.0/"
+   i:objectType="pointText"
+   display="none"
+   id="switch7"
+   style="display:none">
+				<svg:foreignObject
+   requiredExtensions="http://ns.adobe.com/Flows/1.0/"
+   x="0"
+   y="0"
+   width="1"
+   height="1"
+   display="inline"
+   overflow="visible"
+   id="foreignObject9">
+					<ns1:flowDef>
+						<ns1:region
+   textMatrix="1 0 0 1 0 0">
+							<ns1:path
+   d="M-37.6,148.4" />
+						</ns1:region>
+						<ns1:flow
+   font-family="'LetterGothicStd'"
+   font-size="200">
+							<ns1:p><ns1:span>}</ns1:span></ns1:p>
+							<ns1:p />
+						</ns1:flow>
+					</ns1:flowDef>
+					<ns2:targetRef
+   xlink:href="#XMLID_1_" />
+				</svg:foreignObject>
+				<svg:text
+   id="XMLID_1_"
+   transform="translate(-37.6001,148.4004)"
+   display="inline"
+   style="display:inline"><svg:tspan
+     x="0"
+     y="0"
+     font-size="200"
+     id="tspan12"
+     style="font-size:200px;font-family:LetterGothicStd">}</svg:tspan></svg:text>
+
+			</svg:switch>
+			<svg:g
+   id="raster"
+   i:knockout="Off">
+				<svg:path
+   i:knockout="Off"
+   d="M 19.8,25.8 C 19.8,11.2 15.6,2.2 0,0.4 L 0.4,0 C 23,0.4 29.2,7.2 29.2,29 L 29.2,59.2 C 29.2,72.6 30.6,79 45.2,82.6 L 45.2,83 C 30.8,86.6 29.2,93 29.2,106.2 L 29.2,138.4 C 29.2,159.4 21.4,165.4 0.4,166 L 0,165.601 C 16,163.201 19.8,155.201 19.8,140 L 19.8,107.8 C 19.8,94.2 21.6,86.4 36.6,83 L 36.6,82.6 C 21.4,79 19.8,70.6 19.8,57 L 19.8,25.8 z "
+   id="path15" />
+			</svg:g>
+		</svg:g>
+	</svg:svg>
\ No newline at end of file
diff --git a/console_toolkit/source/slides/img/borg_logo.png b/console_toolkit/source/slides/img/borg_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..fd34398154b15d69666140cc5bd25f4142784196
Binary files /dev/null and b/console_toolkit/source/slides/img/borg_logo.png differ
diff --git a/console_toolkit/source/slides/img/cl.png b/console_toolkit/source/slides/img/cl.png
new file mode 100644
index 0000000000000000000000000000000000000000..e96122c3da92bc985061e650bad9be082bb6934f
Binary files /dev/null and b/console_toolkit/source/slides/img/cl.png differ
diff --git a/console_toolkit/source/slides/img/consoles.png b/console_toolkit/source/slides/img/consoles.png
new file mode 100644
index 0000000000000000000000000000000000000000..f95972fbea4bf3da76fba6a7b0173bcf3f004a90
Binary files /dev/null and b/console_toolkit/source/slides/img/consoles.png differ
diff --git a/console_toolkit/source/slides/img/dirtree.png b/console_toolkit/source/slides/img/dirtree.png
new file mode 100644
index 0000000000000000000000000000000000000000..227dfc3ee5d51003ffa32ad90517fd8f5def1d15
Binary files /dev/null and b/console_toolkit/source/slides/img/dirtree.png differ
diff --git a/console_toolkit/source/slides/img/fs.png b/console_toolkit/source/slides/img/fs.png
new file mode 100644
index 0000000000000000000000000000000000000000..f621d635ab566d46d4ec4e998c3c9cc03153dce1
Binary files /dev/null and b/console_toolkit/source/slides/img/fs.png differ
diff --git a/console_toolkit/source/slides/img/fsf.png b/console_toolkit/source/slides/img/fsf.png
new file mode 100644
index 0000000000000000000000000000000000000000..c99c00175520c7304f769b6c819ee9330e673cc2
Binary files /dev/null and b/console_toolkit/source/slides/img/fsf.png differ
diff --git a/console_toolkit/source/slides/img/git_branches.png b/console_toolkit/source/slides/img/git_branches.png
new file mode 100644
index 0000000000000000000000000000000000000000..0298d1f4950ca7ba92d239e5ffa39073c57d34dd
Binary files /dev/null and b/console_toolkit/source/slides/img/git_branches.png differ
diff --git a/console_toolkit/source/slides/img/git_logo.png b/console_toolkit/source/slides/img/git_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..53e1d53355bfcc9ddf9ef1f8d5bd4d57ec6156ff
Binary files /dev/null and b/console_toolkit/source/slides/img/git_logo.png differ
diff --git a/console_toolkit/source/slides/img/matrix.png b/console_toolkit/source/slides/img/matrix.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb3e1fc322189568d0fba5d1d4898901c50525b4
Binary files /dev/null and b/console_toolkit/source/slides/img/matrix.png differ
diff --git a/console_toolkit/source/slides/img/package-icon.pdf b/console_toolkit/source/slides/img/package-icon.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..43f33df8498a9355d09438d1faf858f14175e678
Binary files /dev/null and b/console_toolkit/source/slides/img/package-icon.pdf differ
diff --git a/console_toolkit/source/slides/img/package-icon.svg b/console_toolkit/source/slides/img/package-icon.svg
new file mode 100644
index 0000000000000000000000000000000000000000..ca41d7757b6a5bb08ab16f28e3f3196ba70839ec
--- /dev/null
+++ b/console_toolkit/source/slides/img/package-icon.svg
@@ -0,0 +1,356 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   sodipodi:docname="emblem-package.svg"
+   sodipodi:docbase="/home/dobey/Projects/gnome-icon-theme/scalable/emblems"
+   inkscape:version="0.45"
+   sodipodi:version="0.32"
+   id="svg2963"
+   height="48px"
+   width="48px"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient3703">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop3705" />
+      <stop
+         id="stop3711"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop3707" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3681">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop3683" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop3685" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4532">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4534" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop4536" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4559">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4561" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4563" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4770">
+      <stop
+         style="stop-color:#fcf3e6;stop-opacity:1;"
+         offset="0"
+         id="stop4772" />
+      <stop
+         style="stop-color:#fcf3e6;stop-opacity:0;"
+         offset="1"
+         id="stop4774" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4760">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4762" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4764" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4210">
+      <stop
+         id="stop4212"
+         offset="0.0000000"
+         style="stop-color:#eaba6f;stop-opacity:1.0000000;" />
+      <stop
+         id="stop4214"
+         offset="1.0000000"
+         style="stop-color:#b97a1b;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4210"
+       id="linearGradient3845"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.329903,0,-8.66441)"
+       x1="24.990499"
+       y1="49.424099"
+       x2="23.451571"
+       y2="14.38251" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4760"
+       id="linearGradient4766"
+       x1="28.0625"
+       y1="19"
+       x2="23.9375"
+       y2="19"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4770"
+       id="linearGradient4776"
+       x1="23.157747"
+       y1="7.1424866"
+       x2="30.007845"
+       y2="11.473516"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4559"
+       id="linearGradient4565"
+       x1="23.451576"
+       y1="30.554907"
+       x2="43.00663"
+       y2="45.934479"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4532"
+       id="linearGradient4538"
+       x1="35.1875"
+       y1="17.5"
+       x2="26.5625"
+       y2="17.4375"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3681"
+       id="radialGradient3718"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.990017,0,0,1.1,32.1147,-5.15)"
+       cx="5"
+       cy="41.5"
+       fx="5"
+       fy="41.5"
+       r="5" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3681"
+       id="radialGradient3720"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99001,0,0,1.1,-14.88523,-86.15)"
+       cx="5"
+       cy="41.5"
+       fx="5"
+       fy="41.5"
+       r="5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3703"
+       id="linearGradient3722"
+       gradientUnits="userSpaceOnUse"
+       x1="17.554192"
+       y1="46.000275"
+       x2="17.554192"
+       y2="34.999718"
+       gradientTransform="matrix(1.179548,0,0,1,-4.219389,0)" />
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-y="131"
+     inkscape:window-x="605"
+     inkscape:window-height="891"
+     inkscape:window-width="1051"
+     stroke="#c17d11"
+     fill="#e9b96e"
+     inkscape:showpageshadow="false"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     showgrid="false"
+     inkscape:current-layer="layer1"
+     inkscape:cy="6.8455345"
+     inkscape:cx="39.429646"
+     inkscape:zoom="11.313708"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     borderopacity="0.16470588"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Package</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz/</dc:source>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>package</rdf:li>
+            <rdf:li>archive</rdf:li>
+            <rdf:li>tarball</rdf:li>
+            <rdf:li>tar</rdf:li>
+            <rdf:li>bzip</rdf:li>
+            <rdf:li>gzip</rdf:li>
+            <rdf:li>zip</rdf:li>
+            <rdf:li>arj</rdf:li>
+            <rdf:li>tar</rdf:li>
+            <rdf:li>jar</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/SourceCode" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     id="layer1">
+    <g
+       id="g3713"
+       transform="matrix(1.000001,0,0,0.818184,-3.376531e-6,7.363559)"
+       style="opacity:0.4">
+      <rect
+         y="35"
+         x="37.064781"
+         height="11"
+         width="4.9352183"
+         id="rect1907"
+         style="opacity:1;fill:url(#radialGradient3718);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
+      <rect
+         transform="scale(-1,-1)"
+         y="-46"
+         x="-9.9351835"
+         height="11"
+         width="4.9351835"
+         id="rect3689"
+         style="opacity:1;fill:url(#radialGradient3720);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
+      <rect
+         y="35"
+         x="9.9351835"
+         height="11"
+         width="27.129599"
+         id="rect3693"
+         style="opacity:1;fill:url(#linearGradient3722);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
+    </g>
+    <path
+       style="color:#000000;fill:url(#linearGradient3845);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000083;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+       d="M 11.76152,11.650434 L 23,10.962934 L 23.03125,11.650434 L 34.76662,11.650434 C 36.109591,11.650434 36.940755,12.155856 37.503255,13.544878 L 39.440755,19.375 L 39.440755,39.993876 C 39.440755,41.320398 38.359591,42.38832 37.01662,42.38832 L 9.8865199,42.38832 C 8.543549,42.38832 7.4623847,41.320398 7.4623847,39.993876 L 7.4623847,19.375 L 9.3373847,13.419878 C 9.7123847,12.343356 10.418549,11.650434 11.76152,11.650434 z "
+       id="rect3115"
+       sodipodi:nodetypes="ccccccccccccc"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <path
+       inkscape:r_cy="true"
+       inkscape:r_cx="true"
+       sodipodi:nodetypes="ccccccccccc"
+       id="path3847"
+       d="M 12.492646,12.612816 L 34.058961,12.612816 C 35.31794,12.612816 36.097121,13.086589 36.624441,14.388632 L 38.440766,19.853678 L 38.440766,39.55642 C 38.440766,40.799877 37.80222,41.425927 36.543242,41.425927 L 10.234912,41.425927 C 8.9759334,41.425927 8.4623872,40.737377 8.4623872,39.49392 L 8.4623872,19.853678 L 10.220121,14.27146 C 10.571668,13.262348 11.233667,12.612816 12.492646,12.612816 z "
+       style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4565);stroke-width:1.00000095;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible;opacity:0.50549451" />
+    <path
+       style="opacity:0.50549454;color:#000000;fill:#000000;fill-opacity:0.75568181;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       d="M 8.375,19.875 L 23.0625,20.25 L 23.024674,15.562832 C 23.024674,15.562832 29.583743,15.406064 29.583743,15.406064 C 29.583743,15.406064 23.018096,15.187889 23.018096,15.187889 L 23,13.125 L 22.710804,13.093243 L 22.625,19 L 8.375,19.875 z "
+       id="path4740"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true"
+       sodipodi:nodetypes="ccccccccc" />
+    <path
+       style="opacity:1;color:#000000;fill:#f5ddb8;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       d="M 8.5,19.8125 L 22.625,19.03125 L 22.75,12.125 L 22.28125,18.53125 L 9.3125,19.4375 L 8.5,19.8125 z "
+       id="path4742"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="opacity:1;color:#000000;fill:#dcbd8e;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       d="M 22.3125,18.5625 L 8,19.6875 L 9.875,13.4375 C 10.374807,12.447628 11.271594,12.053224 12.4375,12.0625 L 22.78125,11.4375 L 22.3125,18.5625 z "
+       id="path4744"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="opacity:0.42857143;color:#000000;fill:url(#linearGradient4538);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       d="M 23,13.125 L 23,19.0625 L 37.6875,19.125 L 35.464619,13.195313 L 23,13.125 z "
+       id="path4746"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="opacity:1;color:#000000;fill:#c68b31;fill-opacity:1;fill-rule:evenodd;stroke:#a0670c;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       d="M 39.3125,19.375 L 24.75,12.625 L 24.5,4.9375 L 36.07369,11.644276 C 36.504454,11.959366 36.976863,12.399526 37.25,12.9375 L 39.3125,19.375 z "
+       id="path4748"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="opacity:0.23076923;color:#000000;fill:url(#linearGradient4766);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       d="M 23,19 L 23,20 L 38,20 L 37.5625,19 L 23,19 z "
+       id="path4758"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <path
+       style="opacity:1;color:#000000;fill:url(#linearGradient4776);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       d="M 25.190679,12.246913 L 25.013902,5.8387581 L 35.001786,11.628195 L 25.500038,6.4132823 L 25.676815,11.937554 L 29.168155,14.103069 L 25.190679,12.246913 z "
+       id="path4768"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <path
+       style="opacity:0.10989009;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       d="M 23,19 L 22.9375,15.5625 L 29.8125,15.4375 L 30.1875,15.6875 L 23.1875,15.75 L 23,19 z "
+       id="path4528"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+  </g>
+</svg>
diff --git a/console_toolkit/source/slides/img/permissions_example.png b/console_toolkit/source/slides/img/permissions_example.png
new file mode 100644
index 0000000000000000000000000000000000000000..f1361e026810050707ea7e8baf6fdfb7bf982ea3
Binary files /dev/null and b/console_toolkit/source/slides/img/permissions_example.png differ
diff --git a/console_toolkit/source/slides/img/permissions_example.xcf b/console_toolkit/source/slides/img/permissions_example.xcf
new file mode 100644
index 0000000000000000000000000000000000000000..99a1c64640ad09a3ec00c4c4c885db1ddb812e86
Binary files /dev/null and b/console_toolkit/source/slides/img/permissions_example.xcf differ
diff --git a/console_toolkit/source/slides/img/permissions_overview.png b/console_toolkit/source/slides/img/permissions_overview.png
new file mode 100644
index 0000000000000000000000000000000000000000..af066f9dac5308138697f1cfd2a61918e0cdf607
Binary files /dev/null and b/console_toolkit/source/slides/img/permissions_overview.png differ
diff --git a/console_toolkit/source/slides/img/permissions_overview.xcf b/console_toolkit/source/slides/img/permissions_overview.xcf
new file mode 100644
index 0000000000000000000000000000000000000000..62113c6c7219614da0d11a4de482cd1ae238c54b
Binary files /dev/null and b/console_toolkit/source/slides/img/permissions_overview.xcf differ
diff --git a/console_toolkit/source/slides/img/ranger.png b/console_toolkit/source/slides/img/ranger.png
new file mode 100644
index 0000000000000000000000000000000000000000..ac178d0af7810370caa189b567eed680da807a6f
Binary files /dev/null and b/console_toolkit/source/slides/img/ranger.png differ
diff --git a/console_toolkit/source/slides/img/ranger1.png b/console_toolkit/source/slides/img/ranger1.png
new file mode 100644
index 0000000000000000000000000000000000000000..945d1f03a319058ad74f35cb6f26e12532ae4a36
Binary files /dev/null and b/console_toolkit/source/slides/img/ranger1.png differ
diff --git a/console_toolkit/source/slides/img/ranger_img_preview.png b/console_toolkit/source/slides/img/ranger_img_preview.png
new file mode 100644
index 0000000000000000000000000000000000000000..12a282efcbfe4dfe9b0fe987ecd8e21be4eb4305
Binary files /dev/null and b/console_toolkit/source/slides/img/ranger_img_preview.png differ
diff --git a/console_toolkit/source/slides/img/ssh.png b/console_toolkit/source/slides/img/ssh.png
new file mode 100644
index 0000000000000000000000000000000000000000..e5a2ad68fcc114b34c5e8a90a96abc3262213e64
Binary files /dev/null and b/console_toolkit/source/slides/img/ssh.png differ
diff --git a/console_toolkit/source/slides/img/tux.png b/console_toolkit/source/slides/img/tux.png
new file mode 100644
index 0000000000000000000000000000000000000000..49eac9383a52605b404a6abaad89b1988d9810a6
Binary files /dev/null and b/console_toolkit/source/slides/img/tux.png differ
diff --git a/console_toolkit/source/slides/pres.tex b/console_toolkit/source/slides/pres.tex
new file mode 100644
index 0000000000000000000000000000000000000000..654cdb328b67b89e50be8b158664d598fbb017d7
--- /dev/null
+++ b/console_toolkit/source/slides/pres.tex
@@ -0,0 +1,1179 @@
+\input{template}
+
+\title{The Console Toolkit}
+\author{Nils Leuzinger}
+\institute{TheAlternative, SSC | ETHZ and UZH}
+\date{HS 2020}
+
+\begin{document}
+	\begin{frame}
+		\titlepage%
+	\end{frame}
+
+    \section{Introduction}
+
+    \begin{frame}[t,fragile]{Why the console? It's already current year!}
+        \begin{itemize}
+            \item People asked for it
+            \item Still an excellent interface for complex tasks
+            \item Many advanced tools only available on the command line
+            \item Can be much faster than GUI tools
+            \item Allows easy remote access to other computers
+            \item Skills portable to every Unix-like system
+        \end{itemize}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Course outline}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \textbf{Part 1}
+            \begin{itemize}
+                \item Getting used to the console
+                \item Navigating the file system
+                \item Modifiying files
+                \item Working with text files
+                \item{Users \& permissions}
+            \end{itemize}
+            \column{0.5\textwidth}
+            \textbf{Part 2}
+            \begin{itemize}
+                \item{Managing software}
+                \item{SSH}
+                \item{Git}
+                \item{Backups}
+                \item{Scripting}
+            \end{itemize}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{What is the console}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item Keyboard-only interface to your computer
+                \item Related terms: \emph{console}, \emph{terminal},
+                    \emph{shell}, \emph{bash}, \emph{command prompt},
+                    \emph{command line interface}
+            \end{itemize}
+            \column{0.5\textwidth}
+            \includegraphics[width=\columnwidth]{img/matrix.png}
+        \end{columns}
+    \end{frame}
+
+    \section{Navigation}
+
+    \begin{frame}[t,fragile]{The 70s were interesting times, or so I'm told}
+        \textbf{Unix dogma: \emph{Everything is a file!}} \\
+        \begin{itemize}
+            \item Data files
+            \item Directories (or ``folders'')
+            \item Storage devices
+            \item Keyboards
+            \item Printers
+            \item Cameras
+            \item \emph{But not network sockets \ldots}
+        \end{itemize}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{File system}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \vspace{-0.6cm}
+            \begin{center}
+            \includegraphics[width=0.4\columnwidth]{img/fs.png}
+            {\tiny [1]}
+            \end{center}
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item File system organized as tree
+                \item Everything under \texttt{/}, the root directory
+                \item In the console, you will be at some point in the tree,
+                    the \emph{working directory}
+            \end{itemize}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Working directory}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item Where am I? \textrightarrow \: \texttt{pwd}
+                \item \underline{P}resent \underline{w}orking \underline{d}irectory
+                \item Also sometimes directly shown in the prompt
+            \end{itemize}
+            \column{0.5\textwidth}
+            \begin{bashenv}[\small]
+[luke@host ~]$ pwd
+/home/luke
+[luke@host ~]$
+            \end{bashenv}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Listing files}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item What is in here? \textrightarrow \: \texttt{ls}
+                \item \emph{list}
+            \end{itemize}
+            \column{0.5\textwidth}
+            \begin{bashenv}[\small]
+[luke@host ~]$ ls
+§\textcolor{dirblue}{Desktop}§
+§\textcolor{dirblue}{Documents}§
+§\textcolor{dirblue}{Downloads}§
+§\textcolor{dirblue}{Music}§
+§\textcolor{dirblue}{Pictures}§
+§\textcolor{dirblue}{Videos}§
+cat1.jpg
+cat2.jpg
+[luke@host ~]$
+            \end{bashenv}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Commands \& arguments}
+        \vspace{0.5cm}
+        \texttt{\tikzmark{a}{l}s \tikzmark{b}{-}a
+            \tikzmark{c}{-}-human-readable \tikzmark{d}{/}home/luke/pictures}\\
+        \begin{tikzpicture}[remember picture,overlay]
+            \node[align=left,xshift=0.4cm,yshift=-1.0cm,rounded corners,
+            fill=red!20,draw=red!70!black] (b1)
+            {\footnotesize{command}};
+            \draw[red!70!black,->] (b1) edge ([yshift=-0.05cm,xshift=7.0pt]a.south);
+
+            \node[align=left,xshift=3.0cm,yshift=-2.3cm,rounded corners,
+            fill=green!20,draw=green!70!black] (b2)
+            {\footnotesize{single letter option}};
+            \draw[green!70!black,->] (b2) edge ([yshift=-0.05cm,xshift=9.5pt]b.south);
+
+            \node[align=left,xshift=3.7cm,yshift=-0.7cm,rounded corners,
+            fill=green!20,draw=green!70!black] (b3)
+            {\footnotesize{long option}};
+            \draw[green!70!black,->] (b3) edge ([yshift=-0.05cm,xshift=1.5cm]c.south);
+
+            \node[align=left,xshift=6.7cm,yshift=-0.7cm,rounded corners,
+            fill=orange!40,draw=orange!70!black] (b4)
+            {\footnotesize{arguments}};
+            \draw[orange!70!black,->] (b4) edge ([yshift=-0.05cm,xshift=1.7cm]d.south);
+        \end{tikzpicture}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Advanced listing}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item \texttt{ls} has advanced options
+                \item \texttt{-a}: show hidden files
+                \item \texttt{-h}: print numbers in human readable format
+                \item \texttt{-l}: show the long output format.
+                \item \texttt{ls -lah} and \texttt{ls -l -a -h} are
+                    equivalent
+            \end{itemize}
+            \column{0.5\textwidth}
+            \begin{bashenv}[\tiny]
+[luke@arch-x270 ~]$ ls -lah
+total 52K
+drwx------ 8 luke luke 4.0K Sep  3 23:27 .
+drwxr-xr-x 4 root root 4.0K Sep  3 23:26 ..
+-rw-r--r-- 1 luke luke   21 Jun  4 10:54 .bash_logout
+-rw-r--r-- 1 luke luke   57 Jun  4 10:54 .bash_profile
+-rw-r--r-- 1 luke luke  141 Jun  4 10:54 .bashrc
+-rw-r--r-- 1 luke luke    0 Sep  3 23:27 cat1.jpg
+-rw-r--r-- 1 luke luke    0 Sep  3 23:27 cat2.jpg
+drwxr-xr-x 2 luke luke 4.0K Sep  3 23:27 §\textcolor{dirblue}{Desktop}§
+drwxr-xr-x 2 luke luke 4.0K Sep  3 23:27 §\textcolor{dirblue}{Documents}§
+drwxr-xr-x 2 luke luke 4.0K Sep  3 23:27 §\textcolor{dirblue}{Downloads}§
+-rw-r--r-- 1 luke luke   24 Sep  3 23:28 .hidden_file
+drwxr-xr-x 2 luke luke 4.0K Sep  3 23:27 §\textcolor{dirblue}{Music}§
+drwxr-xr-x 2 luke luke 4.0K Sep  3 23:27 §\textcolor{dirblue}{Pictures}§
+-rw-r--r-- 1 luke luke 3.7K Oct 23  2017 .screenrc
+drwxr-xr-x 2 luke luke 4.0K Sep  3 23:27 §\textcolor{dirblue}{Videos}§
+[luke@arch-x270 ~]$
+            \end{bashenv}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Getting help}
+        \begin{itemize}
+            \item Where can I find out what options are available?
+            \item Manual pages!
+            \item \texttt{man}
+            \item E.g.: \texttt{man ls}
+        \end{itemize}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{}
+        \begin{bashenv}[\tiny]
+LS(1)                                        User Commands                                       LS(1)
+
+NAME
+       ls - list directory contents
+
+SYNOPSIS
+       ls [OPTION]... [FILE]...
+
+DESCRIPTION
+       List  information  about the FILEs (the current directory by default).  Sort entries alphabeti-
+       cally if none of -cftuvSUX nor --sort is specified.
+
+       Mandatory arguments to long options are mandatory for short options too.
+
+       -a, --all
+              do not ignore entries starting with .
+
+       -A, --almost-all
+              do not list implied . and ..
+
+       --author
+              with -l, print the author of each file
+
+       -b, --escape
+              print C-style escapes for nongraphic characters
+        \end{bashenv}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{More on manual pages}
+        \begin{itemize}
+            \item{Search by typing \keys{/}}
+            \item{Quit by typing \keys{q}}
+            \item{Sometimes there are multiple manuals! \textrightarrow \: Choose the right section}
+            \begin{itemize}
+                \item{\texttt{man 1 printf} vs. \texttt{man 3 printf}}
+            \end{itemize}
+        \end{itemize}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Go somewhere else}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item I want to go to some other directory! \textrightarrow \: \texttt{cd}
+                \item \emph{Change directory}
+                \item Absolute path: Whole path from the root, like:
+                    \texttt{/home/luke/pictures/cat1.png}
+                \item Relative path: Path relative to the current working
+                    directory, like \texttt{pictures/cat1.png}
+            \end{itemize}
+            \column{0.5\textwidth}
+            \begin{bashenv}[\small]
+[luke@host ~]$ cd
+[luke@host ~]$ pwd
+/home/luke
+[luke@host ~]$ cd /sys
+[luke@host sys]$ pwd
+/sys
+[luke@host sys]$ cd ~
+[luke@host ~]$ pwd
+/home/luke
+[luke@host ~]$ cd pictures/
+[luke@host pictures]$ pwd
+/home/luke/pictures
+            \end{bashenv}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Special places}
+        \begin{itemize}
+            \item{\makebox[1.3cm]{\:\texttt{\textasciitilde\hfill}}User's home directory}
+            \item{\makebox[1.3cm]{\:\texttt{. }\hfill}The current directory}
+            \item{\makebox[1.3cm]{\:\texttt{..}\hfill}The directory above in the tree}
+        \end{itemize}
+    \end{frame}
+
+    \section{Modifiying files}
+
+    \begin{frame}[t,fragile]{Copying files}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+                \begin{itemize}
+                    \item Copy command: \texttt{cp}
+                    \item Syntax: \texttt{cp source destination}
+                \end{itemize}
+            \column{0.5\textwidth}
+            \begin{bashenv}[\small]
+[luke@host ~]$ cp diary diary_copy
+[luke@host ~]$ cat diary_copy
+Dear diary, today I downloaded
+cat pictures from the internet.
+[luke@host ~]$
+            \end{bashenv}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Moving files}
+        \begin{columns}[T]
+            \column{0.47\textwidth}
+                \begin{itemize}
+                    \item Move command: \texttt{mv}
+                    \item Syntax: \texttt{mv source destination}
+                    \item Use \texttt{mv} to rename files
+                \end{itemize}
+            \column{0.53\textwidth}
+            \begin{bashenv}[\small]
+[luke@host ~]$ mv diary secret_diary
+[luke@host ~]$ cat secret_diary
+Dear diary, today I downloaded
+cat pictures from the internet.
+[luke@host ~]$
+            \end{bashenv}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Creating and deleting directories}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item \texttt{mkdir} creates a new directory
+                \item \texttt{rmdir} removes a directory
+                \item \texttt{rmdir} only works for empty directories!
+            \end{itemize}
+            \column{0.5\textwidth}
+            \begin{bashenv}[\small]
+[luke@host ~]$ mkdir new_dir
+[luke@host ~]$ ls
+§\textcolor{dirblue}{new\_dir}§
+[luke@host ~]$ rmdir new_dir
+[luke@host ~]$ ls
+[luke@host ~]$
+            \end{bashenv}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Deleting files}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item \texttt{rm} removes files and directories
+                \item \texttt{rm -r} removes a directory and everything in it
+                    \emph{(recurisive)}
+                \item \texttt{rm} is \textcolor{red}{irreversible!}
+            \end{itemize}
+            \column{0.5\textwidth}
+            \begin{bashenv}[\small]
+[luke@host ~]$ ls
+cat1.jpg
+cat2.jpg
+[luke@host ~]$ rm cat1.jpg
+[luke@host ~]$ ls
+cat2.jpg
+            \end{bashenv}
+        \end{columns}
+        \vspace{0.7cm}
+        \begin{WarningBox}
+            \texttt{rm} is a shotgun without safety! There is no trashcan.
+            You can delete your entire file system with \texttt{sudo rm -rf /},
+            or your entire home directory with \texttt{rm -rf \textasciitilde}\:!%
+        \end{WarningBox}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Hidden files}
+        \begin{itemize}
+            \item{Hidden files start with a dot}
+            \item{\texttt{.hidden\_file}}
+            \item{Show them using \texttt{ls -a}}
+        \end{itemize}
+    \end{frame}
+
+    \section{Text files}
+
+    \begin{frame}[t,fragile]{Showing text files}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item Output a file's contents to the console with
+                    \texttt{cat}
+                \item Used to stand for \emph{concatenate}
+            \end{itemize}
+            \column{0.5\textwidth}
+            \begin{bashenv}[\small]
+[luke@host ~]$ cat diary
+Dear diary, today I downloaded
+cat pictures from the internet.
+[luke@host ~]$
+            \end{bashenv}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Reading long files}
+        \begin{itemize}
+            \item What if the text doesn't fit on the terminal?
+            \item Use the \texttt{less} file viewer
+            \item Scroll up and down with \keys{\arrowkeyup}, \keys{\arrowkeydown}
+            \item Exit with \keys{q}
+        \end{itemize}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Editing files}
+        \begin{itemize}
+            \item Need a \emph{text editor}!
+            \item \emph{nano, vim, vis, emacs}
+            \item Simple, intuitive, no learning required? \textrightarrow\:\texttt{nano}
+            \item Powerful, efficient and extreme nerd cred? \textrightarrow\:\texttt{vim}
+            \item Obscure, eccentric and even more powerful? \textrightarrow\:\texttt{emacs}
+            \item Has some advantages to using a big GUI tool
+                \begin{itemize}
+                    \item Navigation and editing in the same interface
+                    \item Quick and efficient
+                    \item Very powerful tools available
+                    \item You can talk down on people using Notepad++
+                \end{itemize}
+        \end{itemize}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Nano}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item Syntax: \texttt{nano [filename]}
+                \item Key bindings shown on the bottom
+                \item Save: \keys{\ctrl} + \keys{o}
+                \item Save: \keys{\ctrl} + \keys{x}
+                \item Navigate with arrow keys \keys{\arrowkeyleft}
+                    \keys{\arrowkeydown} \keys{\arrowkeyup}
+                    \keys{\arrowkeyright}
+                \item \texttt{\textasciicircum} stands for the \keys{\ctrl} key (universal)
+            \end{itemize}
+            \column{0.5\textwidth}
+        \begin{bashenv}[\scriptsize]
+[luke@host ~]$ nano diary.txt
+        \end{bashenv}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{}
+        \begin{bashenv}[\scriptsize]
+~                                                                                       
+~                                  VIM - Vi IMproved                                    
+~                                                                                       
+~                                   version 8.1.333                                     
+~                               by Bram Moolenaar et al.                                
+~                     Vim is open source and freely distributable                       
+~                                                                                       
+~                            Become a registered Vim user!                              
+~                    type  :help register<Enter>   for information                      
+~                                                                                       
+~                    type  :q<Enter>               to exit                              
+~                    type  :help<Enter>  or  <F1>  for on-line help                     
+~                    type  :help version8<Enter>   for version info                     
+~                                                                                       
+~                            Running in Vi compatible mode                              
+~                    type  :set nocp<Enter>        for Vim defaults                     
+~                    type  :help cp-default<Enter> for info on this                     
+~                                                                                       
+~                                                                                       
+        \end{bashenv}
+    \end{frame}
+
+    \section{Users \& permissions}
+
+    \begin{frame}[t,fragile]{Users \& permissions}
+        \begin{itemize}
+            \item{Linux is a \emph{multi-user operating system}}
+            \item{There can be many user accounts}
+            \item{Different users can even use the computer at the same time!}
+            \item{You usually only use your personal user account}
+        \end{itemize}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Users}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \textbf{Personal user}
+            \begin{itemize}
+                \item{Home directory in \texttt{/home/userx}}
+                \item{Can only access files in home directory}
+                \item{Can only stop processes started by itself}
+            \end{itemize}
+            \column{0.5\textwidth}
+            \textbf{Root user}
+            \begin{itemize}
+                \item{Also \emph{called the superuser}}
+                \item{''System administrator``}
+                \item{Can do anything on the system}
+                \item{Access to all files}
+                \item{Can kill any process}
+                \item{Home directory in \texttt{/root}}
+            \end{itemize}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Unix file permissions}
+        \vspace{0.7cm}
+        \begin{center}
+            \includegraphics[width=1.0\textwidth]{img/permissions_overview.png}
+        \end{center}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Permissions}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \includegraphics[width=1.0\columnwidth]{img/permissions_example.png}
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item \texttt{r}: Permission to read file
+                \item \texttt{w}: Permission to write to file
+                \item \texttt{x}: Permission to execute file
+            \end{itemize}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Changing permissions}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{bashenv}[\small]
+chmod {u,g,a}{+,-}{r,w,x} file
+chown OWNER:GROUP file
+            \end{bashenv}
+            \vspace{0.65cm}
+            \begin{bashenv}[\small]
+chmod +x program.sh
+chmod u-x program.sh
+chmod g+rw file.txt
+chown luke:luke file.txt
+            \end{bashenv}
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item \texttt{chmod}: Change permissions
+                \item \texttt{chown}: Change owner, group
+                \vspace{0.8cm}
+                \item Allow everyone to execute
+                \item Remove execution permission for user
+                \item Allow group to read/write
+                \item Change ownership to user \texttt{luke}, group \texttt{luke}
+            \end{itemize}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Octal permissions}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{bashenv}[\small]
+chmod 744 program.sh
+            \end{bashenv}
+            \begin{itemize}
+                \item \texttt{4: read}
+                \item \texttt{2: write}
+                \item \texttt{1: execute}
+            \end{itemize}
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item Octal representation allows setting all permissions in one go
+                \item Desired permissions are added up
+                \item \texttt{7 = read + write + execute}
+            \end{itemize}
+        \end{columns}
+    \end{frame}
+
+    \section{Meta}
+
+    \begin{frame}[t,fragile]{Tab completion}
+        \begin{itemize}
+            \item Hit \keys{\tab} to automatically complete a word you are typing
+                (Command, file, ...)
+            \item Hit \keys{\tab} twice to show all possible options
+            \item Extremely useful terminal feature! Use always!
+        \end{itemize}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Command History}
+        \begin{itemize}
+            \item Scroll up in your command history by pressing the
+                \keys{\arrowkeyup} key
+            \item Press \keys{\ctrl} + \keys{r} to search the history
+        \end{itemize}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Killing a running process}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+	    \begin{itemize}
+		    \item Every process has a unique ID on Linux
+		    \item View processes with \texttt{ps aux}
+            \item Kill a process with \texttt{kill id}
+		    \item If ID is unknown, use \texttt{pkill name}
+		    \item The \texttt{-9} flag works like a shotgun
+	    \end{itemize}
+            \column{0.5\textwidth}
+	    \begin{bashenv}[\small]
+[luke@host ~]$ ps -e
+PID TTY        TIME CMD
+1 ?        00:00:04 systemd
+2 ?        00:00:00 kthreadd
+[luke@host ~]$ kill 16740
+[luke@host ~]$ pkill -9 emacs
+            \end{bashenv}
+        \end{columns}
+    \end{frame}
+
+    \section{PATH}
+
+    \begin{frame}[t,fragile]{The PATH variable}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item How does the shell know where programs are?
+                \item The shell searches the \texttt{PATH} variable
+                \item \texttt{ls} \textrightarrow \: \texttt{/usr/bin/ls}
+            \end{itemize}
+            \column{0.5\textwidth}
+            \begin{bashenv}[\small]
+[luke@host ~]$ echo $PATH
+/usr/sbin:/usr/bin
+            \end{bashenv}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Adding your own paths}
+        \begin{itemize}
+            \item Let's say you want to add your script directory
+            \item Temporarily: \texttt{export PATH=\$PATH:\textasciitilde/scripts}
+            \item Permanently: Add the above to \texttt{\textasciitilde/.bashrc}
+        \end{itemize}
+    \end{frame}
+
+    \begin{frame}[t, fragile]{Writing shell scripts}
+	    \begin{columns}[T]
+		    \column{0.5\textwidth}
+		    \begin{itemize}
+			    \item Scripts are just a sequence of commands
+			    \item Very easy automation!
+				    \begin{itemize}
+					    \item (for more, come to the Bash course)
+				    \end{itemize}
+		    \end{itemize}
+		    \column{0.5\textwidth}
+            File \texttt{~/scripts/music.sh}:
+		    \begin{bashenv}[\scriptsize]
+#!/usr/bin/env bash
+filename="$2.%(ext)s"
+echo "$1"
+youtube-dl -x "$1" -o "$filename"
+		    \end{bashenv}
+	    \end{columns}
+		    \vspace{0.5cm}
+		    \begin{bashenv}[\scriptsize]
+[luke@host ~]$ cd scripts
+[luke@host ~]$ chmod +x music.sh
+[luke@host ~]$ ~/scripts/music.sh "https://www.youtube.com/watch?v=dQw4w9WgXcQ" music
+# or:
+[luke@host ~]$ ./music.sh "https://www.youtube.com/watch?v=dQw4w9WgXcQ" music
+		    \end{bashenv}
+    \end{frame}
+
+    \section{Piping and Redirection}
+
+    \begin{frame}[t, fragile]
+	    \frametitle{Complicated needs}
+	    How would you design an interface that can...
+	    \begin{itemize}
+		    \item ...delete files larger than 100MB?
+		    \item ...show the last 2 lines of a file?
+		    \item ...sort files by length?
+		    \item ...search calendar entries and create reminders?
+	    \end{itemize}
+    \end{frame}
+
+    \begin{frame}[t, fragile]
+	    \frametitle{Complicated needs}
+	    Many possible answers:
+	    \begin{itemize}
+		    \item Big GUI that does everything
+		    \item A simple tool that users can extend themselves
+		    \item Domain specific language that users write queries with
+		    \item Many simple and combinable tools
+	    \end{itemize}
+	    Unix chooses the last two approaches
+    \end{frame}
+
+    \begin{frame}[t, fragile]
+	    \frametitle{Piping and redirection}
+	    \begin{itemize}
+		    \item Unix has small and orthogonal tools
+		    \item Piping and redirection are how to combine them
+	    \end{itemize}
+    \end{frame}
+
+
+    \begin{frame}[t, fragile]
+	    \frametitle{Piping and redirection}
+	    \begin{columns}[T]
+		    \column{0.5\textwidth}
+		    \begin{itemize}
+			    \item Piping sends output from one command to another command
+			    \item Redirection writes to files (streams)
+		    \end{itemize}
+		    \column{0.5\textwidth}
+		    \begin{bashenv}[\scriptsize]
+[luke@host ~]$ cat numbers | sort
+five
+four
+one
+three
+two
+zero
+		    \end{bashenv}
+		    \begin{bashenv}[\scriptsize]
+[luke@host ~]$ cat numbers > same_numbers
+		    \end{bashenv}
+	    \end{columns}
+    \end{frame}
+
+    \begin{frame}[t, fragile]
+	    \frametitle{Piping}
+	    \begin{columns}[T]
+		    \column{0.5\textwidth}
+		    \begin{itemize}
+			    \item Uses the pipe symbol: \texttt{|}
+			    \item Useful for sequential composition
+			    \item Only works in "one direction"
+			    \item Internally connects output of one process to output of other process
+		    \end{itemize}
+		    \column{0.5\textwidth}
+		    \begin{bashenv}[\scriptsize]
+[luke@host ~]$ cat numbers | tail -n 2
+nine
+ten
+		    \end{bashenv}
+		    \begin{bashenv}[\scriptsize]
+[luke@host ~]$ cat numbers | grep "..."
+one
+two
+six
+ten
+		    \end{bashenv}
+	    \end{columns}
+    \end{frame}
+
+    \begin{frame}[t, fragile]
+	    \frametitle{Piping}
+
+	    List unique owners of files in current directory:
+	    \begin{itemize}
+		    \item List files in directory
+		    \item Omit first two lines
+		    \item Truncate whitespace
+		    \item Cut (delete) all columns except the third
+		    \item Sort alphabetically
+		    \item Only show unique entries
+	    \end{itemize}
+	    \vspace{0.1cm}
+	    \begin{bashenv}[\scriptsize]
+[luke@host ~]$ ls -l | tail -n +2 | sed 's/\s\s*/ /g' | cut -d ' ' -f 3 | sort | uniq
+	    \end{bashenv}
+    \end{frame}
+
+    \begin{frame}[t, fragile]
+	    \frametitle{Redirection}
+	    \begin{columns}[T]
+		    \column{0.5\textwidth}
+		    \begin{itemize}
+			    \item{\makebox[1.7cm]{\:\texttt{>  file\hfill}}} Write output to file
+			    \item{\makebox[1.7cm]{\:\texttt{>\hspace{0cm}> file\hfill}}} Append output to file
+			    \item{\makebox[1.7cm]{\:\texttt{<  file\hfill}}} Read input from file
+		    \end{itemize}
+		    \column{0.5\textwidth}
+		    \begin{bashenv}[\small]
+[luke@host ~]$ echo "Hello!" > hello.txt
+[luke@host ~]$ cat hello.txt
+Hello World!
+[luke@host ~]$ cat < hello.txt
+Hello World!
+		    \end{bashenv}
+	    \end{columns}
+    \end{frame}
+
+    \begin{frame}[t, fragile]
+	    \frametitle{Redirection}
+	    Redirection is useful!
+	    \begin{itemize}
+		    \item Store final or intermediate results
+		    \item Append output to files
+	    \end{itemize}
+	    \vspace{0.3cm}
+	    \begin{bashenv}[\scriptsize]
+[luke@host ~]$ ls -l | tail -n +2 | sed 's/\s\s*/ /g' > result
+[luke@host ~]$ cut -d ' ' -f 3 < result | sort | uniq
+	    \end{bashenv}
+    \end{frame}
+
+    \begin{frame}[t, fragile]
+	    \frametitle{Redirection}
+	    Redirection is useful! (cont.)
+	    \begin{itemize}
+		    \item Store final or intermediate results
+		    \item Append output to files
+	    \end{itemize}
+	    \vspace{0.3cm}
+	    \begin{bashenv}[\scriptsize]
+[luke@host ~]$ ./logger_script >> log.txt
+
+[luke@host ~]$ echo "Logging done!" >> log.txt
+	    \end{bashenv}
+    \end{frame}
+
+    \section{Ranger}
+
+    \begin{frame}[t, fragile]
+	    \frametitle{Ranger}
+	    \begin{columns}[T]
+		    \column{0.5\textwidth}
+		    \begin{itemize}
+			    \item File manager on the console
+				    \begin{itemize}
+					    \item Usable over SSH
+				    \end{itemize}
+			    \item Can move files, change permissions, bulk rename...
+			    \item Bookmarks
+			    \item Keyshortcuts for frequent locations
+			    \item Plugins
+			    \item Preview functionality
+		    \end{itemize}
+		    \column{0.5\textwidth}
+		    \includegraphics[width=1.0\columnwidth]{img/ranger1.png}
+	    \end{columns}
+    \end{frame}
+
+	\begin{frame}[t, fragile]
+		\frametitle{Ranger image preview}
+		\begin{center}
+			\includegraphics[width=0.9\textwidth]{img/ranger_img_preview.png}
+		\end{center}
+	\end{frame}
+
+
+    \section{Managing software}
+
+    \begin{frame}[t,fragile]{How you get software on Linux}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item Don't download installers from the internet!
+                \item Software is managed by the distribution and available
+                    through a central repository.
+                \item Software is \emph{packaged}
+                \item Similiar to Microsoft's or Apple's app stores
+            \end{itemize}
+            \column{0.5\textwidth}
+            \vspace{-1cm}
+            \begin{center}
+                \includegraphics[width=0.7\columnwidth]{img/package-icon.pdf}
+                {\tiny [2]}
+            \end{center}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Installing packages}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item Depends on distribution!
+                \item Package Manager is most important feature of a
+                    Linux distribution
+            \end{itemize}
+            \column{0.5\textwidth}
+            Debian, Ubuntu, Mint:
+            \begin{bashenv}[\small]
+sudo apt install firefox
+            \end{bashenv}
+            OpenSUSE:
+            \begin{bashenv}[\small]
+sudo zypper install firefox
+            \end{bashenv}
+            RedHat, Fedora:
+            \begin{bashenv}[\small]
+sudo dnf install firefox
+            \end{bashenv}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Searching for packages}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            Debian, Ubuntu, Mint:
+            \begin{bashenv}[\small]
+apt search firefox
+            \end{bashenv}
+            OpenSUSE:
+            \begin{bashenv}[\small]
+zypper search firefox
+            \end{bashenv}
+            RedHat, Fedora:
+            \begin{bashenv}[\small]
+dnf search firefox
+            \end{bashenv}
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item The basic package search is usually quite limited
+                \item Consult the internet for finding the right programs!
+            \end{itemize}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Updating packages}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item All packages can be upgraded at once
+                \item Do this every other week!
+            \end{itemize}
+            \column{0.5\textwidth}
+            Debian, Ubuntu, Mint:
+            \begin{bashenv}[\small]
+sudo apt update
+sudo apt upgrade
+            \end{bashenv}
+            OpenSUSE:
+            \begin{bashenv}[\small]
+sudo zypper update
+            \end{bashenv}
+            RedHat, Fedora:
+            \begin{bashenv}[\small]
+sudo dnf update
+            \end{bashenv}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Building from source}
+            \begin{itemize}
+                \item Sometimes software is unavailable in the repositories
+                \item Can download sources and compile them manually
+                \item Careful! No automatic updates, malware, package manager
+                    conflicts, \ldots
+            \end{itemize}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Building from source}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item Download the sources
+                \item Follow the build instructions in the documentation
+            \end{itemize}
+            \column{0.5\textwidth}
+            \begin{bashenv}[\small]
+git clone https://github.com/i3/i3
+            \end{bashenv}
+            \begin{bashenv}[\small]
+autoreconf -fi
+            \end{bashenv}
+            \begin{bashenv}[\small]
+mkdir -p build && cd build
+            \end{bashenv}
+            \begin{bashenv}[\small]
+../configure
+            \end{bashenv}
+            \begin{bashenv}[\small]
+make
+            \end{bashenv}
+        \end{columns}
+    \end{frame}
+
+    \section{SSH}
+
+    \begin{frame}[t,fragile]{SSH}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item \emph{Secure shell}
+                \item SSH allows to log in to another computer over the network
+                \item Server administration, running jobs on supercomputers,
+                    log in to your computer at home
+            \end{itemize}
+            \column{0.5\textwidth}
+            \begin{center}
+                \includegraphics[width=0.6\columnwidth]{img/ssh.png}
+            \end{center}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Logging in to Euler (cluster)}
+        \begin{bashenv}[\tiny]
+[luke@host ~]$ ssh lutobler@euler.ethz.ch
+Last login: Tue Sep  4 00:06:01 2018 from vpn-global-125-dhcp.ethz.ch
+
+      ____________________   ___
+     /  ________   ___   /__/  /
+    /  _____/  /  /  /  ___   /
+   /_______/  /__/  /__/  /__/
+   Eidgenoessische Technische Hochschule Zuerich
+   Swiss Federal Institute of Technology Zurich
+   -------------------------------------------------------------------------
+                                        E U L E R  C L U S T E R
+
+
+                                                     https://scicomp.ethz.ch
+                                          http://tinyurl.com/cluster-support
+                                                  cluster-support@id.ethz.ch
+
+   =========================================================================
+        \end{bashenv}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Using SSH}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item \texttt{ssh alice@bob.ch}
+                \item Will ask for user password
+            \end{itemize}
+            \column{0.5\textwidth}
+            \begin{bashenv}[\small]
+[luke@host ~]$ ssh alice@bob.ch
+alice@bob.ch's password:
+[alice@bob ~]$
+            \end{bashenv}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Login without password}
+        \vspace{0.5cm}
+        Generate an SSH key with \texttt{ssh-keygen} and copy the
+        key in \texttt{\textasciitilde/.ssh/id\_rsa.pub} to
+        \texttt{\textasciitilde/.ssh/authorized\_keys} on the server.\\
+        \vspace{0.5cm}
+        Neat key copying trick when password login already works:
+        \vspace{0.2cm}
+        \begin{bashenv}[\scriptsize]
+cat ~/.ssh/id_rsa.pub | ssh username@euler.ethz.ch 'cat - >> .ssh/authorized_keys'
+        \end{bashenv}
+    \end{frame}
+
+    \section{Version control}
+
+    \begin{frame}[fragile]{Git}
+        \begin{center}
+            \includegraphics[width=0.3\textwidth]{img/git_logo.png}
+		{\tiny [4]}
+        \end{center}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Git}
+        \begin{itemize}
+            \item{\texttt{thesis.pdf}}
+            \item{\texttt{thesis\_old.pdf}}
+            \item{\texttt{thesis\_copy.pdf}}
+            \item{\texttt{thesis\_finalversion.pdf}}
+            \item{\texttt{thesis\_finalversion2.pdf}}
+        \end{itemize}
+    \end{frame}
+
+    \begin{frame}[fragile]{Git}
+        \emph{Git is a version-control system for tracking changes in computer files
+        and coordinating work on those files among multiple people.} \\
+        \hspace{10cm}--- Wikipedia
+    \end{frame}
+
+    \begin{frame}[fragile]{Git}
+        \begin{center}
+            \includegraphics[width=0.8\textwidth]{img/git_branches.png}
+            {\tiny [3]}
+        \end{center}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Git}
+        \begin{itemize}
+            \item{Track changes to your code}
+            \item{Comment your changes}
+            \item{Easily revert back to older versions}
+            \item{Avoid/manage conflicts when working in teams}
+            \item{Manage release versions and development versions}
+            \item{Work on different branches at the same time}
+        \end{itemize}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Git example}
+        \begin{columns}[T]
+            \column{0.5\textwidth}
+            \begin{itemize}
+                \item{Initialize a git repository}
+                \item{Add files you want to include in a commit}
+                \item{Create a commit for your selected changes}
+                \item{Push changes to server}
+            \end{itemize}
+            \column{0.5\textwidth}
+        \begin{bashenv}[\small]
+git init
+        \end{bashenv}
+        \begin{bashenv}[\small]
+git add changed_file.txt
+        \end{bashenv}
+        \begin{bashenv}[\small]
+git commit
+        \end{bashenv}
+        \begin{bashenv}[\small]
+git push
+        \end{bashenv}
+        \end{columns}
+    \end{frame}
+
+    \begin{frame}[t,fragile]{Sharing a repository}
+        \begin{itemize}
+            \item{You can use services like \emph{Github} or \emph{Gitlab} to collaborate
+                with others on your project}
+            \item{Or host your repositories yourself!}
+                \begin{itemize}
+                    \item{You can pull from/push to any server you can access via SSH}
+                \end{itemize}
+        \end{itemize}
+    \end{frame}
+
+    \section{Backup}
+    \begin{frame}[t, fragile]{Borg Backup}
+	    \begin{columns}[T]
+		    \column{0.5\textwidth}
+		    \begin{itemize}
+			    \item Backup data
+			    \item Does compression and deduplication automatically
+			    \item Possibility to encrypt
+			    \item Runs over ssh, network storage etc.
+		    \end{itemize}
+		    \column{0.5\textwidth}
+		    \begin{center}
+			    \includegraphics[width=0.6\columnwidth]{img/borg_logo.png}
+			    \vspace{2cm}
+		    \end{center}
+	    \end{columns}
+    \end{frame}
+
+    \begin{frame}[t, fragile]{Borg Example}
+		    \vspace{0.5cm}
+		    \begin{itemize}
+			    \item Repos are collections of backups
+			    \item Create new backups with \texttt{borg create}
+			    \item Restore files with \texttt{borg extract <archive>}
+		    \end{itemize}
+		    \vspace{0.5cm}
+		    \begin{bashenv}[\scriptsize]
+[luke@host ~]$ borg init --encryption=repokey /path/to/repo
+Enter passphrase:
+Repeat passphrase:
+[luke@host ~]$ borg create /path/to/repo
+[luke@host ~]$ borg create --stats /path/to/repo::Backup1 ~/dir_to_backup
+[luke@host ~]$ borg create --stats /path/to/repo::Backup2 ~/dir_to_backup
+[luke@host ~]$ borg extract /path/to/repo::Backup1
+		    \end{bashenv}
+		    \vspace{0.5cm}
+    \end{frame}
+
+    \section{Epilogue}
+
+    \begin{frame}[t,fragile]{Sources}
+        \footnotesize
+        \begin{itemize}
+            \item[1] \url{https://commons.wikimedia.org/wiki/File:Linux_Filesystem_Hierarchy_Standard.png}
+            \item[2] \url{https://en.wikipedia.org/wiki/File:Gnome-emblem-package.svg}
+	    \item[3] \url{https://commons.wikimedia.org/wiki/File:OneFlow_Example.png}
+	    \item[4] \url{https://git-scm.com/images/logos/logomark-orange@2x.png}
+        \end{itemize}
+    \end{frame}
+
+    % \begin{frame}[t,fragile]{INSERT TITLE}
+    %     \begin{columns}[T]
+    %         \column{0.5\textwidth}
+    %         \column{0.5\textwidth}
+    %     \end{columns}
+    % \end{frame}
+
+\end{document}
diff --git a/console_toolkit/source/slides/template.tex b/console_toolkit/source/slides/template.tex
new file mode 100644
index 0000000000000000000000000000000000000000..d8830dba88e01c7d4c43cb09491127e257898024
--- /dev/null
+++ b/console_toolkit/source/slides/template.tex
@@ -0,0 +1,81 @@
+\documentclass[aspectratio=169]{beamer}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{listings}
+\usepackage{xcolor}
+\usepackage{hyperref}
+\usepackage{graphicx}
+\usepackage{textcomp}
+\usepackage{tikz}
+\usepackage{tcolorbox}
+\usepackage{menukeys}
+\usepackage{pdfpages}
+
+\tcbuselibrary{listings}
+
+\usefonttheme[onlymath]{serif}
+
+\usecolortheme[RGB={37,68,113}]{structure}
+\usetheme{Dresden}
+
+\setbeamertemplate{headline}{}
+
+% generic colors
+\definecolor{dirblue}{HTML}{9bc1ff}
+
+% TheAlternative colors
+\definecolor{ldorange}{HTML}{F18A20}
+\definecolor{ldblue}{HTML}{254471}
+
+%Apply TheAlt colors to theme
+\setbeamercolor{section in head/foot}{fg=ldorange}
+\setbeamercolor{author in head/foot}{fg=white}
+\setbeamercolor{subsection in head/foot}{fg=white}
+\setbeamercolor{caption name}{fg=vlg}
+\setbeamercolor{caption}{fg=vlg}
+\setbeamercolor{frametitle}{fg=ldblue}
+\setbeamercolor{title}{fg=ldorange}
+\setbeamercolor{institute}{fg=ldblue}
+\setbeamertemplate{itemize item}[circle]
+\setbeamercolor{itemize item}{fg=ldorange}
+
+% make including pdfs work
+\setbeamercolor{background canvas}{bg=}
+
+\setbeamerfont{title}{series=\bfseries}
+
+\setbeamertemplate{caption}{\raggedright\insertcaption\par}
+\setbeamertemplate{navigation symbols}{}
+\setbeamertemplate{bibliography item}[text]
+
+% white-on-black lstlisting env with rounded corners
+\newenvironment{bashenv}[1][\small]{%
+    \tcblisting{listing only,colback=black,colframe=black,
+        enlarge top by=0mm,left=-0mm,top=-2mm,bottom=-2mm,
+        listing options={language=bash,
+            escapechar=§,
+            basicstyle=#1\color{white}\ttfamily,
+            commentstyle=#1\color{white}\ttfamily,
+            backgroundcolor=\color{black},
+            breaklines=true,
+            keepspaces=true,
+            showstringspaces=false,
+            columns=fullflexible}}}
+{\endtcblisting}
+
+% mark a spot for e.g. drawing an arrow to it
+\newcommand\tikzmark[1]{\tikz[remember picture,overlay]\node[inner xsep=0pt](#1){};}
+
+% \newcommand\Warning{%
+%     \makebox[1.4em][c]{\raisebox{-0.45em}{%
+%         \makebox[0pt][c]{\raisebox{0.25em}{\large!}}%
+%         \makebox[0pt][c]{\color{red}\Huge$\bigtriangleup$}}}%
+%         \hspace{0.7em}%
+% }
+
+% a red warning box
+\definecolor{lred}{HTML}{ffd6dd}
+\newtcolorbox{WarningBox}{%
+    colframe=red,
+    colback=lred}
+