Course website for MSDS 682-01 (30398), Data Stream Processing at the University of San Francisco.
A lightweight static course site with no framework and no build step. Sections:
- Home — overview and logistics
- Schedule — class meetings and major due dates
- Assignments — assignment briefs
- Handouts — Markdown notes (with highlighted code) and PDF handouts
- Syllabus — policies and expectations
- Staff — instructor and support
index.html Shell: header, nav, content mount
script.js Page content + hash router + handout renderer
styles.css Visual system (USF green/gold, minimal)
assets/ usf-logo.svg (swap with the official logo)
handouts/ .md, .html, and .pdf handouts
-
Drop a file in
handouts/— a Markdown file (.md), HTML file (.html), or PDF. -
Add one row to the
handoutsarray inscript.jsand assign its existing lecture section. ThehandoutSectionsregistry is the single owner of section labels; add to it only when introducing a new lecture. Lecture sections are derived from IDs such aslec6, displayed newest first, and the highest lecture number is highlighted automatically.{ slug: "week2-consumers", // becomes #/handouts/week2-consumers section: "lec2", // ID from handoutSections category: "Slides", // student-facing type label title: "Week 2: Consumers", kind: "md", // "md" renders in-page, "html" can render in-page or standalone file: "handouts/week2-consumers.md", createdAt: "Created at 9:00 AM PDT on July 10, 2026", lastUpdatedAt: "Last updated at 9:00 AM PDT on July 10, 2026", summary: "One-line description." }
Use kind: "external" with a full URL for a canonical Google Slides deck, and
kind: "pdf" for a PDF that opens directly. Markdown handouts render in the
page with syntax-highlighted code blocks
(via marked + highlight.js, loaded from CDN). Standalone HTML handouts can be
embedded with standalone: true. PDF handouts open directly. Within each
section, materials follow their order in the handouts array. The two newest
lectures form the featured panel; earlier lectures use compact list rows so the
index retains a clear visual hierarchy as the course grows.
The top of the Handouts page also includes a chronological Lecture and Demo
Map. Its lectureRoadmap entries reference local materials by registered slug,
so routes and filenames remain owned by the handouts manifest. Store an
external slide URL in lectureRoadmap only when the canonical deck lives
outside this repository.
The Handouts list derives its compact Updated … label from the full
lastUpdatedAt value; do not maintain a second short-date field. Because the
site hash belongs to the router, Markdown heading IDs and in-page table-of-
contents scrolling are handled by prepareHandoutNavigation() rather than by
changing window.location.hash.
Links from one Markdown handout to another must use the registered route
#/handouts/<slug>, not a relative .md path. If the same Markdown source is
packaged into a student ZIP, its builder owns the small route-to-local-link
translation so the published handout remains the SSOT.
python3 -m http.server 8000Open the local server URL printed by the command. Serving over HTTP is required:
Markdown handouts are fetched at runtime and will not load from a file:// path.
To publish on GitHub Pages: repository Settings → Pages → Deploy from branch →
main / root. The .nojekyll file is already present so asset paths are served
as-is.