flowchart LR
A[Hard edge] --> B(Round edge)
B --> C{Decision}
C --> D[Result one]
C --> E[Result two]
Materials
Best practices and resources for preparing teaching materials.
Repositories
| Course | Materials Repository | Exams Repository | |
|---|---|---|---|
| BDA | Big Data and Analytics | repository | repository |
| ITSecM | IT Security Management | repository | repository |
| IDW | Introduction to Digital Work | repository | repository |
| OSP | Open Source Project | repository | — |
| LRSem | Literature Review Seminar | repository | — |
| Theses | Theses | repository | — |
General setup
We use Quarto for our teaching materials.
Do not create quarto brand extension or use the revealjs seminar plugin (complexity).
Principles
- Dates, rooms, and links should be in one place to prevent inconsistent information.
- VC links never point to a specific course but to a search in VC (e.g., for the project).
- Teaching contents are licensed under the CC-BY license per default.
- Design contents in such a way that students can learn them (after the session, pdf, making comments)
- Add dynamic illustrations only as an extra (link them in the offline version)
Each sentence should be in a new line (to ensure that the git diff is readable). To create a paragraph, add an empty line. This makes the history more readable and merging easier (see semantic line breaks).
A teaching repository contains
- Overview of related courses in the REAMDE.md file (see other courses here).
- PDFs should be generated through
make pdfs(amake->quarto render->decktapechain, as in bda). - A syllabus (example)
- Detailed teaching notes allow teaching assistants to replicate it quickly.
- Links related to continuous improvement: feedback, evaluations, improvement.
- Add branch protection rule for
main: restrict deletions and block force pushes - Each course should have a separate repository and page.
- Options to provide feedback should be linked on the first page.
- Optional: surveys to collect feedback for individual sessions (Google Forms?)
- Optional: ask students how they learn (PDF, …) whether they use a knowledge management system (which one), and adapt accordingly
Publishing to GitHub pages
For quarto publish gh-pages : install quarto locally (otherwise, the ssh and git setup in the docker container requires detailed configuration).
Adding extensions
docker compose run --rm quarto quarto add gadenbuie/countdown/quarto
docker compose run --rm quarto quarto add martinomagnifico/quarto-simplemenuSlides
Template is available here (see tutorial)
- Slides are in reveal-js.
- HTML and PDF versions are automatically generated (e.g., GitHub actions).
- Learning objectives should be on all slides (verifiable outcomes).
- Use markers for tasks/questions (see example)
Quarto extensions for slides:
- simplemenu
- pointer
- custom callouts
- downloadthis
- code animations
- countdown timer (link exercise sheets on slides)
- flashcards for quick questions with solutions displayed on pressing
q
:::{.callout-note}
Note that there are five types of callouts, including:
`note`, `tip`, `warning`, `caution`, and `important`.
:::
Your content here… [^1]
[^1]: A url and further information.
@CastonguayWagnerMotulskyEtAl2023 is useful.
<!-- _class: centered -->
Centered text...TODO: Mermaid diagrams
Feedback
- Limesurvey
- Rustpad for anonymous feedback/suggestions (contents are deleted after 1 day of inactivity)
Embedding Google Forms (anonymous responses possible):
<style>
blockquote {
border-top: 0.1em;
font-size: 60%;
margin-top: auto;
}
</style>
<iframe src="https://docs.google.com/forms/d/e/1FAIpQLSeACViOkyuuG3Bvz4Dhq1yA-Fm8WTPiRst5D_IxK3UuRyFzjg/viewform?embedded=true" width="100%" height="90%" frameborder="" marginheight="0" marginwidth="0">Wird geladen…</iframe>
> Open [responses](https://docs.google.com/forms/d/1Wa_MNL3zClW7j-1NPm31PIP7pXs7QqLnZPi4oefA_gA/edit#responses){target=_blank}Typography defaults:
--font-family: "Source Sans Pro", sans-serif;Adding headings to the navigation
## Heading {data-menu-title="I. Overview"}
### Will not be in the navigationTimer
quarto add gadenbuie/countdown/quarto
{{< countdown minutes=5 seconds=32 top=10 left=0 >}}Code annotation
See link:
- 1
-
Take
penguins, and then, - 2
- add new columns for the bill ratio and bill area.
Icons
Based on Bootstrap
{{icon="mortarboard-fill"}}Shortcuts:
- g : goto slide
- b
- d
Convert PowerPoint to quarto:
pptx2md "slides.pptx" --output "slides_with_notes.qmd" --enable-slides --qmd --image-dir "images"Notebooks
We use Jupyter notebooks for exercises. The benefits of Jupyter notebooks are summarized by Vial & Negoita (2018):
- No separation between code and pedagogical materials, no need to switch attention between materials for students.
- Interactive Python: re-running parts of the code (instead of the entire program) with variables and objects staying in memory.
- Option to include short problems for students.
Jupyter notebooks should be delivered through GitHub Codespaces to avoid individual setup problems (see Malan, 2024).
TODO
<!--
Comments can be used to add further explanations or links to references/resources
-->Teaching notes
- Teaching notes are shared and updated regularly.
---
title: "Session X: XXX"
---
### Week 1: Topics (Teaching notes)
| Time (min) | Duration | Topic | Additional materials |
|------------|-----------|--------------------------------------------------------------------------------|------------------------------------------------|
| 0-10 | 10 | [Intro and instructor background](#intro) | |
| 10-25 | 15 | [What you will learn](#what-you-will-learn) | |
| 50-80 | 30 | [Orientation in Open Source projects](#orientation-in-open-source-projects) | Group task, discussing solutions afterwards |
| 80-90 | 10 | [Next steps](#next-steps) | |
::: objective
In this session, our goal is to .... (competencies)
:::
Summary of last session.
### Intro and instructor <a id="intro"></a>
- Contents (e.g., photo of the board writing)
- Highlight areas that can be shortened (optional)
- Additional challenges and tasks for students
- Typical questions raised (common errors)
Summarize lessons learned.
::: callout-note
**Page breaks for PDFs/print**
<div class="page-break"></div>
:::Native page break:
{{< pagebreak >}}Resources
- Instructor guide
- awesome quarto
- Slidecrafting: Making beautiful slides with reveal.js and Quarto
- revealjs editor (slides.com): ai prompts limited (generating many slides, or changing text fields) - cannot do animations with it. limited import/export (for quarto/revealjs) - only complex/full htm.
Installation
pip install asciinema
git clone https://github.com/asciinema/agg
cd agg
docker build -t agg .Recording and conversion
asciinema rec demo.cast
# code ...
# ctrl+d to quit
# convert:
docker run --rm -it -u $(id -u):$(id -g) -v $PWD:/data agg demo.cast demo.gifPossible extensions
- Workflows (quality checks)
- Setup of exercises
- Quartz (obsidian) and infos on how to export notes (obsidian/notion/word)
- https://github.com/jmbuhr/quarto-qrcode
- https://github.com/fradav/quarto-revealjs-animate
- https://github.com/ofkoru/quarto-animate-graph
- https://github.com/parmsam/quarto-excalidraw
- https://github.com/gadenbuie/quarto-now
- https://github.com/parmsam/quarto-subtitles
- https://github.com/EmilHvitfeldt/quarto-revealjs-highlightword
- https://github.com/produnis/quarto-cheatsheet
- https://github.com/ofkoru/quarto-leader-line
- https://github.com/parmsam/quarto-quizdown (interactive - incompatible with PDF export)
- https://github.com/shafayetShafee/interactive-sql
- https://github.com/peter-gy/quarto-gradio
- https://quarto.thecoatlessprofessor.com/pyodide/
- https://github.com/coatless-quarto/pyodide
- https://github.com/quarto-ext/shinylive
- https://github.com/coatless/quarto-webr?tab=readme-ov-file
- https://github.com/EmilHvitfeldt/quarto-snow
- https://github.com/quarto-ext/fontawesome
- https://parmsam.github.io/quarto-github-corner/