Skip to content

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.