Grade 9 — Data wranglers (tidy data and first code)¶
Tools: spreadsheet, SQLite, Python/pandas in the browser · Units: 8 · Lessons: 27 (+ projects)
Grade 9 teaches students to wrangle data: tidy tables, cleaning, then SQL (SQLite) and a first taste of Python and
pandas, always on district and school tables. Track A units (spreadsheet) run in compulsory classes; Track B units
(SQL, Python) fit optional Computer Science and clubs. Notebooks use the synthetic district table so they run offline;
swap in the real census table after python tools/fetch_data.py census-districts.
| Unit | Title | Lessons | Track | Project |
|---|---|---|---|---|
| 1 | Tidy data and spreadsheets | 3 | A/B (spreadsheet) | Spreadsheet fact sheet |
| 2 | Cleaning data | 4 | A/B (spreadsheet + notes) | Clean it and log it |
| 3 | SQL basics on district data | 5 | B (code: SQL/SQLite) | Which districts are changing? |
| 4 | First steps in Python | 3 | B (code: Python) | My first data script |
| 5 | Tables in pandas | 4 | B (code: pandas) | Same question, SQL and pandas |
| 6 | Charts that work | 3 | B (code: matplotlib) | One chart, one claim |
| 7 | Percent, rate and per-capita | 3 | A/B | Rate detective |
| 8 | Grade 9 project: which districts are changing? | 2 | A/B (project) | Which districts are changing? |
Flagship project: Which districts are changing? — census-style table to poster plus a simple SQL report
Every chapter now has detailed explanations with worked examples (all SQL and Python in the chapters is run in CI by
tools/check_chapter_code.py), common mistakes, a unit summary, practice exercises (★/★★/★★★, answers in the
teacher guide) and exercises with real data from docs/datasets/free-datasets.md,
each with an offline fallback. Unit 8 ends with a "ready for Grade 10?" checklist.
Each unit folder holds: chapter.md (student), teacher-guide.md, project.md, quiz.yml, datasets.yml
(and notebooks/ where code is used). Nepali chapters: see community/translations/STATUS.md.