The main feature of this course template is a landing page with a schedule table allowing students to navigate to all the course materials. Website is automatically deployed using GH Actions to GitHub Pages.
There are a few things you need to do to adapt this template for your course.
-
In
_variables.yml, you can define variables that are used across the entire Quarto project using the shortcode{{< var <key> >}}(reference sub-keys using the dot,., delimiter, e.g.,codelisted undercourseis referenced ascourse.code; more details). Replace the placeholders provided for the variables, for example, updatecourse.codeandcourse.title. You must updatecourse.monday-of-the-first-term-weekto the date of the Monday of the first week of the term (formatYYYY-MM-DD) as it will be used to calculate dates in the schedule table. -
The
_quarto.ymlfile controls Quarto project settings including website options (such as navigation). -
To enable the schedule table, you will need to provide week numbers and day of the week when different units of the course will happen in the
/data/schedules.csvfile. -
In addition, any extra resources that are not Quarto documents, such as links to lecture recordings and to PrairieLearn, are provided in the file
/data/additional-resources.csv.
The course schedule is dynamically generated from the files the directories pre-activities, activities, slides and summaries using R (more specifically, render_schedule() in /R/render-schedule.csv).
Having documents organized this way allows them to be formatted with _metadata.yml files in their directories.
- There are six different types of
<unit>s:part,week,lecture,discussion,potwandexam. - There are the following
<types>of resources:summaries,pre-activities,activities,slides,recording,practiceandlink. - All resources belonging together have a unique
<id>consisting of their<unit>followed by a two-digit number, e.g.,lecture-01. - Files belonging to one unit should be named following the pattern:
<id>_<type>. idis a unique identifier to join resources for all related resources to generate the schedule table.- The titles of
partdocuments are used as headings in the course schedule.
We recommend developing content locally on your computer in a container accessed by Positron.
Follow the setup instructions outlined in Developing inside a Container using Visual Studio Code Remote Development including the installation of Docker and the Open VSX extension Container tools.
As of Positron version 2026.01.0-147, you need to enable the experimental Dev Containers support with the dev.containers.enable setting.
After cloning this repo locally to your computer, open the directory using the command Dev Containers: Open Folder in Container... from the Command Palette in Positron.
When working on Quarto reveal.js slides, precise layout can be very challenging. Use the installed Quarto extension Editable to help. Slidecrafting is an excellent resource for general tips on how to get the most out of your slides.
Different versions of the website are rendered to different subdirectories by defining Quarto project profiles. To render a profile, it has to be added to the GitHub actions step.
| Target audience | Quarto project profile(s) | Website subdirectory | Content | Lesson plans |
|---|---|---|---|---|
| Student | student |
/ |
Do not show future weeks | No |
| Student with accessibility needs | student,access |
/access |
Do not show future weeks | No |
| Instructor | instructor |
/instructor |
All | Yes |
| Teaching assistant (TA) | ta |
/ta |
All | Yes |
| Coordinator | coordinator |
/coordinator |
All | Yes |
The course template can be found at https://github.com/stephan-koenig/course-template and is based on:
- STA 199 by Mine Çetinkaya-Rundel
- ESPM 157 by Carl Boettinger
- STA 112 by Lucy D'Agostino McGowan
- PMAP 8521 by Andrew Heiss
Some slides design was adapted from: