DSA · Digital Student Assistant
You bring the materials. I build the course. You review it.
With CSS 430 Operating Systems as the worked example.
Yusuf Pisan
University of Washington Bothell, Computing & Software Systems
pisan@uw.edu · digital-student-assistant.com/instructors
What your students get

The companion talk Hints, Not Answers covers the pedagogy. This one is about how a course gets built.
Under the hood
| Part | What it is | Made by |
|---|---|---|
| Registry entry | Number, title, topics, 20 lectures, language, prerequisites, books, on or off, public or private | hand |
| Lecture plan | Twenty entries: topics, objectives, timing, examples, demos, readings | drafted, then edited |
| Knowledge base | Your materials, chunked and stamped with the course, searched only for your course | pipeline |
| Goal graph | About four learning goals per lecture, with prerequisite edges | pipeline, then reviewed |
| Practice | Exercises; mastery questions with rubrics; find-my-bug programs (C++ only) | pipeline, checked |
| Decks and scripts | Twenty slide decks and a teaching script for each lecture | pipeline, then read |
| Teach-me openers | A pre-written explanation per goal, at three depths | pipeline |
| Narration (optional) | Each slide read aloud in a cloned voice | paid service |
The partnership
Then you run your class in it yourself: roster, exams, materials, the dashboard.
Part 1
What the pipeline reads, and what it keeps out.
Sources
| Source | Form | Notes |
|---|---|---|
| Lecture slides | .pptx, or PDF decks | Text, speaker notes and code. PowerPoint decks are the ones that move the slide panel today. |
| Canvas course files | Fetched with a Canvas token on my machine | PDFs, slides, documents. The token never leaves that machine. |
| Recordings | Panopto captions, or video for Whisper | Transcripts are read before they are committed: they can hold a student's voice. |
| Textbook | A PDF or chapter PDFs | Copyrighted text stays out of git; an open book can be linked instead. |
| Assignments | .docx or .txt | Descriptions only. Solutions and answer keys are filtered. |
| Course repos | Public GitHub repos | Starter code and examples, in the course's language. |
| Topic list | A syllabus or topic outline | Seeds a draft lecture plan. |
Every reader writes a manifest of what it read and what it left out.
What stays out
The name rule goes by names: an exam saved as "notes.pdf" in the assignments folder would be read. So we go through your folders together.
Send exam dates, not exams. The mastery questions are generated, not taken from your exams.
Part 2
Three lanes, ten steps, and roughly how long each takes.
Three lanes
The repo's add-course checklist splits every step into these lanes, so a coding session can do lane A without my machine.
The steps
| # | Step | Time | What can go wrong |
|---|---|---|---|
| 1 | Registry, plan, goals, exercises (lane A) | a few sessions | A lecture with no plan entry stops generation before any model call |
| 2 | Fetch and ingest your sources | an afternoon | Files indexed as "shared" reach every course |
| 3 | Rebuild the store, then the retrieval check | 60–75 min, plus ~25 | Must run where every course's text lives |
| 4 | Generate 20 decks and scripts | 3–6 hours | A usage window can run out mid-way; resume fills the gaps |
| 5 | The rubric read of 2–3 decks | ~75 min | This is where placeholders get caught |
| 6 | Slide anchors and hooks | ~40 min | Regenerating decks afterwards breaks them |
| 7 | Teach-me openers | 3–5 h, unattended | Runs after the anchors, since an opener quotes its slide |
| 8 | Mastery question bank | 1–2 hours | Each goal's pool must pass its checks or it is not saved |
| 9 | Find-my-bug, narration | optional | Bug programs need C++; narration is paid |
| 10 | Seed, deploy, class, dry run, switch | a few hours | A few minutes of downtime; rollback is in layers |
Times are the runbook's estimates and CSS 430's recorded runs.
Part 3
Operating Systems, in C, from the Winter 2026 offering.
CSS 430 · what went in
CSS 430 · what came back
Content and test counts from the repo; no students have used it yet.
CSS 430 · what the review caught
Three decks (lectures 1, 14 and 19) scored on seven criteria: voice, coverage, technical accuracy, pacing, examples, structure, and whether the script could be delivered. Target 20 of 28; each reached 28 after fixes.
The read found:
CSS 430 · C, not C++
Any language works for the tutor, the map, checks, review and Teach-Back. Code execution and find-my-bug need a C++ course today, and production runs no student code for any course.
The registry knows C++, Java, C and Python; the GitHub reader keeps C and C++ sources today.
CSS 430 · where it is
| Step | Status, late October 2026 |
|---|---|
| Registry (off, private), plan, goals, orders, exercises, sources | done, 13–16 Oct |
| Runbook hardened for a second course | done, 16 Oct |
| Ingest, store rebuild, retrieval check | done, 19 Oct |
| Twenty decks and scripts | done, 19 Oct |
| Rubric read, slide anchors, Teach-me openers | done, 22 Oct |
| Mastery bank; goals seeded in production; the seed swap | in progress |
| A class, a dry run, the switch; a hand read of the exercises | to come; no launch quarter set |
| Narration | skipped this term (paid) |
Nine days of elapsed time from the registry entry to generated decks, goals and openers. Plan on starting a quarter ahead.
Part 4
Your review
| Deliverable | What you look at | How a fix happens |
|---|---|---|
| Lecture plan | Twenty lectures: topics, objectives, timing, examples | Edited directly |
| Goal graph | About four goals per lecture and their prerequisites | Proposed changes, applied after your yes |
| Exercises | A sample, by lecture | Fix the template, not the item |
| Mastery questions | A sample, each with its rubric | Regenerate a goal's pool |
| Decks | Two or three, against the seven-criterion rubric | Edit the slide source and re-render |
| The tutor | A dry run as a student and as the instructor | Then, live: flagged replies and transcripts |
Honest about the tooling: today every review artefact is a file, and I walk you through them. There is no review screen, and a course that is switched off cannot be previewed on the live site.
The voice question
My inference from the code: not yet planned. A per-course instructor line is on the roadmap, waiting for the first colleague's course.
Part 5
What you do each quarter, and what you see.
Each quarter
Paste addresses, or import a Canvas Gradebook CSV that is read in your browser: only the addresses leave your computer, never grades or names.
Date, lecture range, minutes, format. The tutor knows them; a review window opens the week before.
Paste or upload a syllabus, reading or assignment, live at once for your class only. Mark one graded and the tutor never escalates on it.
Co-instructors, and Quantitative Skills Center tutors who can study with one student.
Optional graded rounds: you set the topics and window, review flags, override, and release scores.
Two classmates ask the tutor together, at the stricter of their two help levels. On or off per class.
An administrator creates the class and makes you its instructor; everything above is then yours.
During the quarter

A demo class on a local copy; all names and numbers are made up.
Cost and privacy
Building the course runs on a subscription, at no per-call cost. A planning estimate for tutoring: about $0.03 a question.
Part 6
Why this is a partnership today, and what self-serve would take.
Why not self-serve yet
Rebuilding the store needs every course's private source text and the Canvas token, which live only there.
The registry is in git and the content ships as release assets; goals reach production through an owner-only step.
Proposals and diffs, read by hand. There is no screen for an instructor to review or edit.
One persona, one deployment, one server instance, and a C++-only sandbox.
And a deliberate gate: no next course until CSS 430 has gone through every step.
Toward self-serve
Getting started
Then: we settle the details (language, prerequisites, what to leave out, the voice), I build, you review, we dry-run, and you run your class.
Yusuf Pisan · pisan@uw.edu · digital-student-assistant.com/instructors
Yusuf Pisan
pisan@uw.edu
Slides at pisanorg.github.io/yusuf/talks/202610DSA-YourCourse