02 Courses

Create a course with the wizard.

The Course Wizard is the fastest path from a course idea to a draft course with lessons and a roster waiting to be filled. Four steps. You can drop out at step one and author manually instead.
01 Open the wizard

From the courses page.

From the Teacher Dashboard, click Courses in the top-right of the header to land on /teacher/courses. The page splits into a left sidebar (your courses) and a right detail pane.

Click + New at the top of the sidebar. The Course Wizard modal opens.

02 Step 01 / Config

Title, section, framework, defaults.

Step one collects the course-level facts. Required fields show a red asterisk; everything else is optional or has a sensible default.

Course title

Required. The student-facing name of the course. 1–200 characters. Examples: Intro to Generative Art, CRCP 1310 Introduction to Creative Coding, AI Literacy — TMP Spring.

Description

Optional. One- or two-sentence summary visible in course listings and the Learning Commons. Up to 2000 characters but you’ll rarely want more than three sentences.

Section

Optional. Free-form text up to 64 characters. Use it to distinguish sections of the same course you’re running in parallel — 001, Fall 2026 §A, MWF 10am, Section B / Tue/Thu. The section appears as a chip next to the course title throughout the studio. Cohorts are 1:1 with courses, so to teach the same content to two groups you clone the course and give each clone a different section.

Framework

Pick one of p5.js, three.js, or GLSL. This only affects code-mode lessons — for image, video, 3D, or App Lab lessons, the framework is irrelevant. If your course is mixed media, set it to whatever the first code lesson will use; you can override per lesson later.

Number of lessons

1 to 30. The AI scaffolder will propose exactly this many lessons in step 3. Pick a count that maps to your real course length (e.g. 12 for a semester-long undergraduate course meeting twice a week, 5 for a one-week workshop).

Pass threshold to advance

A 0–100 slider with 5-point steps. The mastery score (0–100) a student needs on each lesson before the system advances them to the next. Default is 80. Lower it for self-paced exploration; raise it for high-stakes assessment.

Max time per lesson

Presets: No timer, 20 min, 30 min, 45 min, 60 min, 90 min. When the timer expires, the student’s current score is locked in and they auto-advance. Pick the preset closest to your real class period; No timer is fine for homework-style courses.

Default media types

A row of chips: Image, Video, 3D, Code, App Lab. Click to toggle; multi-select is allowed. These become the per-lesson defaults applied during AI scaffolding — empty means the AI picks per topic, otherwise every proposed lesson starts with this set. You can override individual lessons in step 3.

Pick one if your course is single-medium (an all-coding course → Code only). Pick two or three if you want a mixed arc (Image + Code for a “design then animate” series). Leave empty if you have no preference and want maximum AI flexibility.

Skip — create empty course

A small text link at the bottom of step 1. Click it to create the course immediately with no lessons; you’ll author lessons one at a time afterwards. Useful when you have very specific lesson plans already drafted and don’t want the AI guessing.

03 Step 02 / Syllabus

Upload, paste, or brainstorm with AI.

Step two is where you tell the AI what the course is actually about. Three input methods — use one or stack them. The more concrete you are, the better the proposed lessons in step 3.

A · Upload a syllabus file

Click Upload syllabus in the dashed-border drop zone. Accepts .pdf, .docx, .md, .markdown, .txt, or .text, up to 15 MB. The studio extracts plain text from the file (PDF text layers, DOCX runs, markdown, etc.) and shows a summary — filename + character count. Click Remove to clear.

What works well: an existing syllabus document, an outline you wrote in Notion or Google Docs and exported as PDF/Markdown, a topic list with bullet points. What works less well: scanned PDFs without OCR (no extractable text), slide decks (low text density), spreadsheets.

B · Paste text directly

Below the upload zone is a multi-line textarea labeled Or paste text directly. Drop in whatever you have — a topic list, a course description, learning objectives, even rough notes. The AI reads it the same way it reads an uploaded file.

C · Brainstorm with AI

The most useful option, especially if you’re still shaping the course. Below the textarea is a Brainstorm with AI panel — a chat window that opens a back-and-forth with a curriculum-design assistant.

  • Type a starting prompt: who the audience is, what the goal is, what tools they’ll use, time budget. Example: “12-lesson undergrad course on generative typography. Students know basic JavaScript. Each class is 75 min. Goal is by end they can produce a generative type poster series.”
  • The AI replies with pointed questions, pushes back on ambiguity, and proposes lesson arcs. Have the conversation as long as you need.
  • When you’re happy, click Use as syllabus ↑. The studio sends the full transcript to a Gemini Pro summarizer that distills the conversation into a structured syllabus document and pastes it into the textarea above. If the textarea isn’t empty you’ll get a “This will replace the current syllabus text above. Continue?” confirm — say yes to overwrite.
  • Click Clear to wipe the conversation and start over.

Skip step 2 entirely (no upload, no paste, no chat) and click Suggest lessons if you want the AI to scaffold from just the title alone. The result will be more generic but still usable.

04 Step 03 / Review

The AI’s lesson proposal.

Click Suggest lessons to send your syllabus to the scaffolder. The button shows a spinner while Gemini Pro thinks (typically 5–15 seconds). When done, you land on the Review step.

The Review pane shows the AI’s proposal as a vertical list of lesson cards in the order it suggests teaching them. Each card has:

  • A position number on the left, monospace.
  • Title field, inline-editable. Click and type to change.
  • Description field, also inline-editable, two-line textarea.
  • Learning goals, a bulleted list (read-only here; you’ll edit them later in the lesson editor).
  • Media chips (Image, Video, 3D, Code, App Lab) showing what the AI thinks fits this specific lesson. Click any chip to toggle. Defaults from step 1 apply unless the AI saw a topic that demands a different mix.
  • Trash icon on the right. Removes the lesson from the list. Other lessons keep their order.

Range assign — apply media to a span of lessons

Above the list is a Range assign panel. Use it when you want consistent media across a chunk of the course — for example, lessons 1–4 should all be Image, lessons 5–10 should be Code, lessons 11–12 should be App Lab.

  1. Type the starting and ending lesson numbers (inclusive, 1-based) into the from and to fields.
  2. Click the chips for the media types you want.
  3. Click Apply. Every lesson in that range overwrites its media set with what you selected.

You can run this multiple times to set different ranges. If a single lesson should be different from the rest of its range, run the range first, then click chips on that one card to override.

Don’t like the proposal at all

Click Back in the modal footer to return to step 2. Edit the syllabus or run another brainstorm and click Suggest lessons again. The previous proposal is discarded.

05 Step 04 / Create

One click. Atomic.

When the lesson list looks right, click Create course at the bottom of the modal. The studio creates the course, every lesson, and an empty cohort attached 1:1 to that course — all in a single database transaction. Either everything is created or nothing is. You can’t end up with a course that has half its lessons.

The modal closes. You land on /teacher/courses with the new course selected on the right. Status is draft; the cohort is empty (0 enrolled · 0 pending sign-up).

Next, decide whether to refine the course further (edit lessons, change defaults) or jump straight to populating the roster.

06 Worked example

A 12-lesson generative typography course.

Step 1 / Config

  • Title: Generative Typography for Designers
  • Description: “Twelve weeks of code-driven type experiments. p5.js, then GLSL.”
  • Section: Fall 2026 §A
  • Framework: p5.js
  • Number of lessons: 12
  • Pass threshold: 75%
  • Max time: 60 min
  • Default media types: Image + Code (image for early ideation, code for production)

Step 2 / Syllabus

Started in Brainstorm with AI. Three turns:

  1. Me: “12-week course, undergrad design students, basic JavaScript. Goal: produce a generative type poster series for their portfolio.”
  2. AI: asked about prerequisites, deliverables, and whether GLSL would be in scope.
  3. Me: “No prereqs beyond intro programming. Final deliverable is a 6-poster series. Add GLSL in the final third for shader-based type.”

Clicked Use as syllabus ↑. The summarizer wrote ~12 lines into the textarea — title, audience, lesson-by-lesson outline with media tags. Reviewed it; it was good. Hit Suggest lessons.

Step 3 / Review

The AI proposed 12 lessons. Used Range assign to set lessons 1–3 as Image, 4–9 as Code (p5.js), 10–12 as Code (GLSL). Renamed lesson 4 from “Hello, type” to “Loop your alphabet.” Removed lesson 7 (felt redundant). Hit Create course.

Done

Total elapsed: ~9 minutes. Result: 11 lessons (one removed), framework p5.js, mixed media per the range assignments, status draft. Now ready to import the roster.

07 Next

Customize lessons or add students.

Two places to go from here: