Under construction. Target completion: May 2026. Expect occasional issues. You may continue using cusp.umn.edu until porting is finished.

Hosting content on CUSP

Checklist for getting your materials published on CUSP.

All hosted content is shared under the Terms of Use (CC BY-NC-SA 4.0). Terms License
Last updated: December 2025
Introduction

Questions or want help getting started? Email support@cusp.academy

CUSP currently supports hosting for courses, labs, textbooks, and events. Each content type has a small set of required fields so pages can be published consistently and can be searched effectively.

What’s available today

  • Courses — lecture videos plus links/files for slides, assignments, and solutions.
  • Labs — lab manuals, experiment files, equipment lists, and software.
  • Textbooks — published textbooks with links and supplemental materials.
  • Events — announcements, slide decks, and recordings.

What’s planned

  • Animations and tools — interactive simulations and design utilities.
  • Job portal — opportunities for students and postings from industry members.
  • Remote labs — browser-based lab access via WebRTC.
Format flexibility: If you don’t have everything in the structures below, send what you have (links, files, rough notes). We can help organize and convert it into the publishable format.
Hosting Courses

A course page is built from a single structured description (usually JSON). Use (required) fields to ensure we can publish quickly. Everything else is (optional) and helps improve the page.

Course-level fields

  • Course title (required)
    Keep it short: 8 words max (shorter is better).
  • Categories (required)
    Pick one or more: "Electric Machines & Drives", "Power Electronics", "Power Systems", "Renewable Energy", "Control Systems".
  • Course level (required)
    One of: "Introductory", "Intermediate", "Advanced".
  • Contributor(s) (required)
    A list of contributor IDs/handles. Contributor profiles are defined separately (see Contributors section).
  • Course description (required)
    2–3 lines describing scope + any notable teaching approach.
  • Course keywords (required)
    5–100 keywords. Used for search and as a secondary prompt for the LLM.
  • Course objectives (optional)
    4–10 bullet items describing what learners should be able to do by the end.
  • Related lab (optional)
    If there’s a companion lab on CUSP, include its name for cross-linking.
  • Textbooks (optional)
    Recommended references. If a contributor authored one, it may be featured more prominently.
  • Full playlist (optional)
    If videos are hosted externally (e.g., YouTube), provide the playlist URL.
  • Zipped slides (optional)
    One ZIP containing all slide decks, if you want a single download.

Modules (lectures)

Courses are organized into modules (often 15–30). Each module must include the items below.

  • Module title (required)
    4–10 words; clear and specific.
  • Module description (required)
    2–5 lines. Include key terms so search/LLM retrieval is accurate.
  • Module keywords (required)
    5–100 keywords. Repetition is fine (e.g., bode, bode plot, frequency response).
  • Video (required)
    If hosted on CUSP, we generate URLs. If external, provide the URL for each module video.
  • Slides (optional)
    Upload to CUSP (preferred) or provide a public external link.

Assignments

If your course has downloadable assignments, quizzes, projects, or exams, list them as entries. Hosting files on CUSP is preferred so we can control download access.

  • Assignment title (required)
    Include number + a short description (e.g., Assignment 4 — Peak-current-mode control).
  • File (required)
    If hosted on CUSP, use the exact server filename. Otherwise provide a URL.
  • URL (required)
    Publicly accessible link (Google Drive links must be public). Inaccessible links can automatically unpublish the content.
  • Access (optional)
    One of "guest", "student", "faculty", "contributor". Defaults to "student".

Solutions

If provided, list solutions using the same structure as assignments.

Course banner

Image: 624×416 px (landscape). You may provide your own image, or choose one from iStock for CUSP to purchase.

Course JSON template

Start with the template below and delete fields you don’t need. (If you prefer, you can send a plain-text checklist and we’ll convert it to JSON.)

course.template.json
Hosting Labs

Lab pages are organized around experiments and downloadable assets. Host files on CUSP when possible; if you use external links, they must be public and stable.

Lab-level fields

  • Lab title (required)
    A clear, descriptive title.
  • Hardware lab (required)
    true if physical hardware is required; false for simulation-only labs.
  • Category (required)
    One of the supported categories (same list as courses).
  • Lab level (required)
    One of: "Introductory", "Intermediate", "Advanced".
  • Lab description (required)
    2–4 lines describing what learners will do and learn.
  • Related course (optional)
    Course name for cross-linking.
  • Lab kit link (optional)
    Link to required kit/hardware bundle/purchase page.
  • Contributor(s) (required)
    Contributor IDs/handles (profiles defined separately).
  • Lab objectives (required)
    4–10 bullets describing learning outcomes.
  • Textbook (optional)
    If the lab follows a specific book, include title/authors/publisher/link.

Equipment

List required and optional equipment as structured entries.

  • Title (optional)
    Equipment item name.
  • Manufacturer (optional)
    Vendor/manufacturer name.
  • URL (optional)
    Datasheet, product page, or vendor link.

Experiments

Labs are broken into experiments. Each experiment must include:

  • Experiment title (required)
    Short, specific title.
  • Experiment description (required)
    2–5 lines describing what learners will implement/measure.
  • Experiment files (optional)
    Starter code/models/data, etc.
  • Experiment manual (optional)
    Write-up/instructions for the experiment.

Helpful add-ons

  • Complete lab manual (optional)
    A consolidated manual as the main entry point.
  • Zipped experiments (optional)
    One ZIP with all experiment materials.
  • Resources (optional)
    Safety notes, background reading, reference pages.
  • Software (optional)
    Installers, downloads, and tool links.
  • Photos (optional)
    Kit/setup photos or screenshots used on the page.

Lab banner

Image: 624×416 px (landscape). You may provide your own image, or choose one from iStock for CUSP to purchase.

Lab JSON template

lab.template.json
Hosting Books

Book pages highlight the published book and provide links to official listings and supplemental downloads. External links must be public; inaccessible required links can automatically unpublish the book.

Book fields

  • Book title (required)
    Full title.
  • Book description (required)
    2–5 lines describing scope and outcomes.
  • Related course (required)
    Required so we can cross-link pages.
  • Related lab (optional)
    Include if a lab exists for this book.
  • Contributor(s) (required)
    Contributor IDs/handles.
  • Publisher (required)
    Publisher name.
  • Publisher link (required)
    Official publisher product page.
  • Amazon link (optional)
    Amazon listing URL.
  • Additional links (optional)
    Companion site, instructor resources, GitHub, datasets, etc.
  • Errata (optional)
    Link or hosted file for errata.
  • Solutions (optional)
    End-of-chapter solutions, if provided.
  • Zipped slides (optional)
    One ZIP of all slide decks.
  • Slides (optional)
    Per-chapter/per-topic slide files (title + file/url + access).
  • Zipped simulations (optional)
    One ZIP of all simulations.
  • Simulations (optional)
    Individual simulation bundles (title + file/url + access).
  • Access level (downloads) (optional)
    If not specified, defaults to "student". Allowed values: "guest", "student", "faculty", "contributor".

Book banner

Image: 300×450 px (portrait). You may provide your own image, or choose one from iStock for CUSP to purchase.

Book JSON template

book.template.json
Hosting Events

Event pages describe the event, and optionally include objectives, agenda, slides, and recordings. For multi-day events, include both start and end dates.

Event fields

  • Event title (required)
    Clear, descriptive title.
  • Event slug (required)
    Short, URL-friendly identifier (lowercase; hyphens instead of spaces).
  • Event description (required)
    2–5 lines describing the theme and intended audience.
  • Contributor(s) (required)
    Contributor IDs/handles.
  • Start date (required)
    Format: YYYY-MM-DD.
  • End date (optional)
    Format: YYYY-MM-DD (for multi-day events).
  • Location (required)
    Examples: Online, University of X, City, State.
  • Objectives (optional)
    Short text or simple HTML content.
  • Agenda (optional)
    Schedule as text or simple HTML (timeslots, speakers).
  • Zipped slides (optional)
    One ZIP of all slide decks.
  • Slides (optional)
    One entry per talk/session (title + file/url + access).
  • Recordings (optional)
    One entry per recording (title + URL).

Event Banner

Banner image: 970×300 px (wide). You may provide your own image, or choose one from iStock for CUSP to purchase.

Event JSON template

event.template.json
Hosting Contributors

Courses, labs, books, and events reference contributors by ID. Provide contributor profiles once, then reuse the IDs everywhere.

Contributor fields

  • Name (required)
    Full name (e.g., First Last).
  • Profile URI (required)
    URL-friendly identifier (lowercase; no spaces). Used in profile URL.
  • Title (required)
    Honorific (e.g., "Prof.", "Dr.", "Mr.", "Ms.").
  • Organization (required)
    Primary institution/company.
  • Position (required)
    Role (e.g., Associate Professor, Engineer).
  • Profile image (required)
    Filename (e.g., "name.jpg") + headshot image (recommended 600×600 px).
  • Email (optional)
    Include only if you want it displayed.
  • Website / link (optional)
    Personal site, lab page, Google Scholar, etc.
  • Priority (optional)
    Number used to control ordering.

Contributor JSON template

contributor.template.json