A six-strand curriculum for returning VEX VRC V5 teams who are ready to level up from VEXcode-in-one-file to a real competitive engineering loop. The curriculum covers coding, building, CAD, project management, and the engineering notebook as five parallel strands that share a single orientation layer and a single set of doctrines.
Live site: https://dbbudd.github.io/vex-robotics/
This is not a beginner course and it is not a season-specific "how to win this year's game" guide. The assumption is that your team already has a working VEXcode program, knows what a motor and a sensor are, and is now asking: how do we stop winging it and start engineering?
Every tutorial is game-agnostic. Every decision is justified with consequences-in-situ physics. Every lesson follows the same five-section structure — Objective → Concept → Guided practice → Independent exercise → Reflection prompt — plus Common pitfalls and Where this points next.
| Layer | Tool |
|---|---|
| Language | C++ |
| Editor | Visual Studio Code |
| Build system / runtime | PROS (Purdue Robotics Operating System) |
| Motion library | LemLib |
| CAD | OnShape (runs entirely in a browser — open the team's CAD from any device) |
| Version control | Git / GitHub |
The curriculum is device-agnostic. Every tool on the list runs on whatever laptop or tablet a student happens to own. The material never prescribes a specific operating system for the student's workflow — the official install pages for each tool cover that far better than any curriculum page could.
| # | Chapter | Strand | Focus | File |
|---|---|---|---|---|
| I | Foundations | Orientation | Audience, tech stack, the four doctrines, non-negotiables, how to use the curriculum | 01.html |
| II | Coding | C++ / PROS / LemLib | Leave VEXcode, PID, odometry, LemLib primitives, state-machine autonomous | 02.html |
| III | Building & Engineering | Build doctrine | Frame-first, screw theory, friction audit, gear ratios, bracing, mechanisms | 03.html |
| IV | CAD | OnShape | Sketches-as-planning, part studios, assemblies with motion, CAD-to-build handoff | 04.html |
| V | Project Management | Agile for robotics | Sprints, stand-ups, retros, Problem Identification Log, decision matrices | 05.html |
| VI | Engineering Notebook | REC rubric | PIL entries, build logs, test logs, Innovate Award, judging interview | 06.html |
Strand 1 (orientation) is read first. Strands 2–6 are run in parallel, not sequentially, with explicit cross-strand prerequisites noted in each tutorial.
vex-robotics/
├── .nojekyll # required for GitHub Pages
├── course-ui/ # reusable accessibility + search + vocab library
│ ├── course-ui.css
│ ├── course-ui.js
│ └── CLAUDE.md # library docs (gitignored)
├── vocab/
│ └── robotics.js # shared V5 + PROS + LemLib + CAD + PIL vocabulary
├── styles.css # site-specific brand + layout
├── index.html # curriculum home page
├── 01.html – 06.html # the six chapters
└── README.md # this file
This is a static site with no build step — plain HTML, CSS, and vanilla JavaScript, hosted on GitHub Pages. No Node, no Python, no framework, no bundler.
- Accessibility — text size, font family (including OpenDyslexic), Light / Sepia / Dark themes
- Reading progress — scroll progress bar at the top, Section-X-of-N indicator at the bottom
- Site-wide search — ⌘K or the magnifying-glass button; indexes every chapter
- Vocabulary popovers — hover (or tap) a dashed-underlined term for its definition
- Mobile drawer — slide-out drawer with chapter + section navigation
- Focus mode — hide the sidebar for distraction-free reading
- Skip-to-content link — keyboard and screen reader accessibility
- Respects OS dark mode + reduced motion preferences
All of these are provided by the portable course-ui/ library. See course-ui/CLAUDE.md for the full feature list and configuration reference.
GitHub Pages serves the site fine. For local iteration you need a real HTTP server (the site-wide search and vocabulary loaders use fetch() which the file:// protocol blocks).
# from the repo root — pick whichever you have
python3 -m http.server 8080 # then open http://localhost:8080/
npx serve # or use the VS Code "Live Server" extensionWhen you ship a change to course-ui.css, course-ui.js, or vocab/robotics.js, bump the ?v=N query string across every HTML file so browsers fetch the new version:
OLD=1 NEW=2
for f in 0?.html index.html; do
sed -i '' "s/?v=$OLD/?v=$NEW/g" "$f"
doneDaniel Budd Apple Distinguished Educator · School-Wide Technology Team Leader, Hong Kong International School
See LICENSE. The course-ui/ library is portable and intended to be reused across other curriculum sites — when you do, bring the whole folder along (it includes its own CLAUDE.md with integration docs).