Skip to content

Software Engineering Course

A self-study course kept in plain Markdown so it can be read and edited from a laptop or a phone, with no build step and no app to install.

cd c:\Analysis\se-course
claude

Claude Code picks up CLAUDE.md automatically, which tells it to read PROGRESS.md first.

Open claude.ai/code, pick this repo, and start a session. Same repo, same files, same CLAUDE.md. Works in mobile Safari; add it to the Home Screen for a full-screen, app-like view.

For pure reading (no session), GitHub’s own mobile web view renders these Markdown files fine, and the GitHub iOS app renders them better.

The course is also published as a site (Astro + Starlight on Cloudflare Pages) with full-text search, a persistent module sidebar, and dark mode. It rebuilds itself on every push to main, so it is never out of date with the repo. Best for reading; use claude.ai/code when you want to actually work.

PROGRESS.md is the handoff. Read it at the start of a session, update it at the end. Git carries the files between devices; PROGRESS.md carries the context — which module, what was just covered, what’s next, what’s still unresolved. Without it, each device starts cold.

Always git pull when you pick up a device, and git push when you put it down. Two devices editing the same Markdown file is the one way to create a conflict here, and pulling first avoids it.

Path Holds
syllabus.md Full course outline — the spine
modules/ One file per module (NN-slug.md)
exercises/ Runnable code, subfolder per exercise
notes/ Free-form notes and questions
PROGRESS.md Session handoff state
CLAUDE.md Working agreement for Claude Code sessions
site/ Astro + Starlight site — generated from the above, never edit its content

site/scripts/sync-content.mjs copies the root Markdown into Starlight’s content directory at build time, injecting the frontmatter Starlight needs and rewriting .md links into site routes. site/src/content/docs/ is gitignored and regenerated on every build.

The point of that indirection: the files you edit stay clean, portable Markdown with no YAML headers, so they read well in the GitHub app and in claude.ai/code. The site is a view over them. Add a file to modules/ or notes/ and it appears on the site automatically — no config to touch.

To work on the site itself: cd site && npm run dev. Node is installed portably at %LOCALAPPDATA%\node (the MSI installer is blocked by org policy on this machine).

Files are kept to ~90 columns and use short sections so they stay readable on an iPhone 14 screen without horizontal scrolling. Keep it that way when adding material: avoid wide tables and long unbroken code lines.