A complete, ready-to-deploy dummy course that exercises the whole engine end to end: materials, two assignments, a roster, instructor/TA cards, and an auto-generated cohort website with a real schedule. Use it two ways:
- Artifact A - the live reference demo. Deploy this dataset to the demo org pair below, then send faculty & instructors the links (the site + the Actions tab). They click a finished thing - no setup on their end. This is also the script for a live walkthrough.
- Artifact B - self-serve. A faculty & instructors member follows the same steps to stand up their own course and feel the workflow. Same dataset, same runbook.
The canonical, engine-wide input reference is docs/required-input-schema.md.
This file is the demo-specific concretisation of it.
| Tier | Org | Role |
|---|---|---|
| Course | Hertie-DSL-Demo |
persistent control room - materials, assignment templates, the console |
| Cohort | DSL-Demo-f2026 |
student-facing target - welcome, roster, released materials, the site |
example-course/
course-org/
dsl-course.yml # course identity + course_admins (the SSOT) + display-only instructor/TA cards
course-materials-f2026/
lectures/01_week-1../05_week-5/ # 5 sessions (ordinal-prefixed dirs; slides.md + a code demo each)
readings/01_week-1../05_week-5/ # 5 sessions of placeholder readings
syllabus.md
lecture-code-f2026/mlpkg/ # a growing package, disclosed module-by-module (release_code)
assignment-1-f2026/ # individual (.py)
main/ # -> main branch: README brief + starter.py
solution/ # -> solution branch: solution/ + grading.yml + hidden tests/
assignment-2-f2026/ # individual (notebook): main/ + solution/
assignment-4-project-f2026/ # GROUP project: main/ + solution/ (grading.yml type: group)
cohort-org/
students.csv # 4 dummy students (handles blank - filled on onboard)
teams.csv # team membership for the group project
schedule.yml # the auto-release plan (materials_releases) + due dates + exams
people.yml # this cohort's own instructors/TAs (real push access)
grades/*.csv # per-assignment faculty & instructors grade tables (auto/manual/final)
Assignment layout: each
assignment-*/splits intomain/(-> the repo'smainbranch, what students get) andsolution/(-> thesolutionbranch: the model solution,grading.yml, and the HIDDENtests/the faculty-side Grade assignment runs). Student repos never getsolution/.
Prereqs: the bot account is an owner of both demo orgs, and DSL_BOT_TOKEN
(repo + admin:org + workflow) is available. See the token section.
- Create
Hertie-DSL-DemoandDSL-Demo-f2026in the GitHub web UI; add the bot as owner of each. (The only manual step - there is no org-creation API.) - This repo → Actions → Bootstrap Course Org:
org=Hertie-DSL-Demo,org_name=DSL Demo Course,course_name=Deep Learning (Demo),course_code=GRAD-DEMO,set_secret=true. - Copy this dataset's
course-org/dsl-course.ymlintoHertie-DSL-Demo/.github/dsl-course.yml(web editor is fine). It declarescourse_admins(real, course-wide access) plus display-only instructor/TA cards (headshots + bio links) - so the site shows intended cards, not GitHub avatars. Real instructor/TA push access comes from the cohort's ownpeople.ymlinstead (step 8). - New materials repo (
tag=f2026), then push the contents ofcourse-org/course-materials-f2026/into it (lectures/readings/syllabus). - New assignment twice (
number=1then2,tag=f2026), then push eachcourse-org/assignment-N-f2026/(README brief +starter.py) into the matching template. - Refresh actions (populates dropdowns + propagates the repo secret).
- Bootstrap cohort:
cohort_org=DSL-Demo-f2026. - Replace the starter row in
DSL-Demo-f2026/classroom-config/students.csvwithcohort-org/students.csv, and copy this dataset'scohort-org/schedule.ymlintoDSL-Demo-f2026/classroom-config/schedule.yml- the release calendar (Scheduled release cron) and the schedule (real due/exam dates), so the site shows intended dates, not synthesised ones. Also copycohort-org/people.ymlintoDSL-Demo-f2026/classroom-config/people.yml- this cohort's real instructor/TA push access (ainstructors-f2026team on the course org, scoped to this year's repos). - Release materials for sessions 1-5 (the
01_week-1...05_week-5directories). Release assignment forassignment-1. - Sync site (releases also trigger it).
- The site:
https://dsl-demo-f2026.github.io- course name, semester, instructor/TA cards, sessions 1-3 lectures linking the released files, two assignment briefs, and a schedule with the real dates from step 8 (Assignment 1 due 13 Oct, MidTerm 3 Nov, Final 15 Dec). - The console:
Hertie-DSL-Demo/.githubActions tab - every faculty & instructors button. - Onboarding: open a Join issue in
DSL-Demo-f2026/welcome, type a student ID from the roster (e.g.220001), and watch the onboard action enrol you. (Only IDs whose row you can claim with a real GitHub account run fully end-to-end - the dummy rows have blank handles until someone joins.)