October 20, 2026
My first course assigned at UBC was DSCI 100
Slides were built using RISE/JupyterHub
Allowed instructors to run code in the slides (cool! 😃)
Connected with GitHub (great for collaboration across 5+ instructors 😃)
My first course assigned at UBC was DSCI 100
Slides were built using RISE/JupyterHub
Students could not code in the slides ☹️
Couldn’t easily control text and image size ☹️
Generally a pain to edit and present with ☹️
Terrible (in my opinion) user interface ☹️
Text size at 100% zoom
Images after zooming to an appropriate size for the text
Quarto (a next-generation version of RMarkdown launched by Posit in 2022) provided an opportunity to remove many of these pain points.
Similar syntax to RMarkdown/RISE
Options for custom css styling
Easy webpage dev with GitHub pages
Extensions for slides, live coding (both end users)
STAT545 Lecture Slides on Data Visualization
Features:
Live code blocks with scaffolding
Scrollable slides
Hidden code for generating data sets (gapminder_2026)
Tip boxes, links, stylized text, images
Let’s build a minimal, reproducible course website with a slide deck!
If you’d like to follow along, you’ll need:
RStudio (or Positron) with Quarto installed
a GitHub account


touch .nojekyll in the terminalPages:
index.qmd is the homepage.
about.qmd is another page.
Pages:
_quarto.yml is used to organize and set up the website.
Do not rename.
I am adding output-dir: docs to the project section

Create a folder called slides and add 01-intro.qmd
Update the output format to format: revealjs
Update the title
Write some slides with level two headers (##)
Hit the render button to see what it looks like!


Render website to see what it looks like, and ensure your link works!
Run quarto render in the terminal to render entire site
Create a repo (I prefer the usethis package with use_git() and use_github())
On your GitHub repository, go to Settings > Pages. Set the branch as main and the folder as docs and click save.

In the terminal, run quarto add r-wasm/quarto-live
Trust the extension and allow changes by running Y twice. You can view documentation if you’d like.
Now, a _extensions folder will appear with r-wasm and live folders nested within it.
In your slide file (01-intro.qmd):
live-revealjs and add engine: knitr in the preamble.{{< include ../extension/r-wasm/live/_knitr.qmd >}} directly under the preamble
01-intro.qmd file:quarto render
git add . git commit -m "adding executable cells to lec01" git push
origin main
Wait for GH Pages to sync and refresh your site.
My students loved the Quarto slides in DSCI 100 and the work of converting them from RISE to Quarto was relatively minimal.
I use Quarto for most course content, and it saved me from the Great Canvas Attack of 2026
Quarto also can use Python code chunks! (plus… Positron, the next gen RStudio allows you to code in both R and Python)
Quarto 2 is coming soon! It will have more collaborative features and will be re-written in rust so that rendering is nearly instant.
Provide students with scaffolding of code (do you want to type 10 lines of ggplot code every time you plot something?)
Provide datasets in the slides with
format: live-revealjs: resources: - data/gapminder.csv
format: live-revealjs: scrollable: true smaller: true
You can change the owner of the repo to an organization (i.e. UBC-STAT or UBC-DSCI) under the “Danger Zone” in the repository settings
(revealjs only - I think??) Create hidden blocks with
Control which code chunks are persistent, static, editable, read-only, or automatically run (https://r-wasm.github.io/quarto-live/getting_started/editor.html)
Add tests for automatic feedback! (https://r-wasm.github.io/quarto-live/exercises/grading.html)
This exact repository builds the fake course website https://grcetmpk.github.io/stat-000/
All content (including slides and a YouTube video) can be found on my website under “Workshops”