Actually type the code and narrate it as you teach. Have the participants follow along as well.
Demonstrates your best practices for real workflows
Making mistakes is a good thing — it shows you are human and how you debug
Naturally slows you down, so you don’t go too fast for students
Rooted in the “I do, we do, you do” method, pioneered for programming by The Carpentries. The {pyodide} cells on the next slides let students follow along live, in the browser.
The qcm filter renders a self-checking, auto-shuffled question. Mark answers \+ (correct) / \- (wrong).
Valid Python container types? (1 point)
Free-Text Answers
The textanswer filter renders a printable answer box for worksheets and PDF exports.
What does a list comprehension do? (3 points)
Recap Quizzes → Moodle
Each week can ship a questions.md file. Write questions once in plain markdown; export them to a Moodle XML question bank.
# Week 1 — Recap**1. What does `len(x)` return for a list?**- *A) The number of elements- B) The sum of the elements- C) The largest element
A leading * marks the correct answer. Inline code, fenced code blocks and  are supported (images are embedded as base64).
Recap Quizzes → Moodle
Convert with the bundled script, then import the .xml via Question bank → Import → Moodle XML:
# Convert a single weekpython extensions/questions_to_moodle.py Week1/questions.md# Convert every Week*/questions.md at oncepython extensions/questions_to_moodle.py --all# Collect all XML in one folderpython extensions/questions_to_moodle.py --all--output-dir moodle_xml
Jupyter Notebook Flow
Weekly labs are in-browser Jupyter notebooks:
Open the link — runs in the browser, no install.
Built-in submission form (student e-mail).
Work saved locally in the browser — reopen to resume.
Submit through the embedded form for grading.
Incremental Lists
Add .incremental to reveal list items one click at a time.
First point appears
Then the second
Finally the third
Highlight the Current Item
Combine .incremental with .highlight-last to dim earlier points and keep focus on the one just revealed.
Collect the data
Clean and explore it
Model and evaluate
Communicate the result
Timeline
The timeline filter renders events along a line. Each .event has a data-label.
Python & tooling
Collecting data
Visualisation
Group project
Arrows
The arrow shortcode draws curved SVG arrows to annotate slides.
Cause Effect
Use position="absolute" with pixel coordinates to point anywhere on the slide:
Iframe
Embed live web content (polls, dashboards, demos):