# AP CS Curriculum Site

A spreadsheet-driven curriculum website for AP Computer Science A, AP Computer Science Principles, and AP Cybersecurity — Academy at Palumbo, taught by Mr. Erik Wiessmann.

## What this is

Every day's lesson content — story text, vocabulary, quizzes, terminal simulations, code-tracing exercises, and more — is authored entirely in Google Sheets, not hand-coded per day. The website (`day.html`) reads a course's pacing guide and daily-content rows at load time and builds the entire page dynamically, in whatever order the rows appear in the sheet.

The companion hub (`index.html`) gives students a browsable pacing guide, vocabulary/cheat-sheet reference, quiz practice, and FRQ practice per course.

## Start here

- **Full technical reference**: [`SYSTEM_REFERENCE.md`](SYSTEM_REFERENCE.md) — read this first, especially if you're an AI assistant being asked to help with this project. It documents every widget's exact spreadsheet schema, every tab, and every architectural convention in the system.
- **Browsable version of the same information**: [`guide.html`](../guide.html) — the human-friendly, in-browser version, with direct links to every file on the site.
- **Setting this up from scratch**: [`SETUP.md`](SETUP.md)

## Pages

| File | Purpose |
|---|---|
| `index.html` | Course hub — pacing guide, vocab, cheat sheets, quiz, FRQ, resources |
| `day.html` | The actual lesson page — entirely spreadsheet-driven |
| `policies.html` | Grading breakdown + classroom rules (rules pulled live from the spreadsheet) |
| `ask-a-question.html` | Private student help-queue / quick-questions page |
| `guide.html` | This documentation, in browsable form |
| `test.html` | Internal widget catalog for testing — never linked from the live site |

## Lab tools

`labs/` is a separate system from everything above: standalone, hand-built lab tools (not spreadsheet-generated). They share the site's identity system (student ID/name, same backend) but have their own certificate engine. See [`SYSTEM_REFERENCE.md`](SYSTEM_REFERENCE.md) §9.

## Content authoring

All content lives in one Google Sheet with multiple tabs. See [`SYSTEM_REFERENCE.md`](SYSTEM_REFERENCE.md) §4–5 for the exact schema of every widget type and every tab. In short: to add a day's lesson, add rows to the **daily content** tab with `course`, `day`, and a `widgetname` (story, vocab, quiz, terminal, etc.) — the page builds itself from there, in the order the rows appear.
