A single, offline hub for all of Steven's courses — interactive study guides, lecture libraries, and past exams. Everything is static HTML/JS, so just open index.html in any web browser (no server or install needed).
- Open
index.html→ the homepage shows a card for every course. - Click a course → its page has tabs for Overview, Study Guide, Lectures, Past Exams, and Notes & Resources.
- The COMP 210 study guide is fully built (Lessons 1–21, Final Prep, and 4 real quizzes + 5 practice exams). The other courses start with an empty study guide you grow over the term.
index.html ← hub homepage (course grid)
hub_data.js ← the course registry (edit to add/reorder courses)
shared/
hub.css ← shared dark-theme styling
course.js ← renders each course page from its config
courses/
COMP210/
course.html ← the course page (loads config.js + shared/course.js)
config.js ← course info + lists of lectures/exams/notes
guide/ ← the interactive study guide (index.html + modules)
materials/
lectures/ ← lecture slides/notes (PDFs, etc.)
exams/ ← past exams & quizzes (PDFs)
COMP211/ COMP301/ STOR155/ ← same layout; guides to be built
_TEMPLATE/ ← copy this to start a new course
- Copy the
courses/_TEMPLATEfolder and rename it to your course slug (e.g.courses/COMP311). - Edit that folder's
config.js(code, title, description, color, requisites). - Add an entry for it in
hub_data.jsso it shows on the homepage.
Easiest — the ➕ Add buttons (in-hub). On a course's Lectures or Past Exams tab, click ➕ Add, pick your PDF/PPTX, and give it a title. The hub copies the file into the right folder and records it automatically.
Requires Chrome or Edge with the hub served over http(s) or localhost (browsers block file-writing when a page is opened directly from disk with file://). Run a quick local server from this folder with either:
python -m http.server 8000 # then open http://localhost:8000
# or
npx serve
Manual (works anywhere).
- Drop the file into that course's
materials/lectures/ormaterials/exams/folder. - Add a line to the course's
config.jsunderlecturesorexams, e.g.{ title: "Midterm 1", file: "materials/exams/midterm1.pdf", solution: "materials/exams/midterm1_soln.pdf", date: "Oct 2026" }
This is a static site, so GitHub Pages is the simplest free host and it's already tied to your repo:
- Push this repo to GitHub.
- On GitHub: Settings → Pages → Build and deployment → Source: Deploy from a branch →
main/ root, then Save. - After ~1 minute your hub is live at
https://<your-username>.github.io/<repo-name>/. - It auto-redeploys every time you
git push.
To add materials to the hosted copy, upload the file to the repo on github.com (open the course's materials/ folder → Add file → Upload files → drag it in → commit) and add one line to that course's config.js (edit it right in GitHub). Pages redeploys automatically. (Alternatives to GitHub Pages: Netlify, Vercel, and Cloudflare Pages — all free for static sites.)
Ask Claude: "Add Lesson 1 for COMP 211" and upload the lecture slides (and any quiz). Claude builds an interactive lesson module (active-recall questions, code exercises, diagrams) into that course's guide/, the same way COMP 210 was built.
Courses set up: COMP 210 (Data Structures & Algorithms), COMP 211 (Systems Fundamentals), COMP 301 (Foundations of Programming), STOR 155 (Data Models & Inference).