{
  "provenance": {
    "sourceId": "ubc-pair-grade-data",
    "sourceName": "UBC PAIR Grade Data",
    "sourceUrl": "https://github.com/DonneyF/ubc-pair-grade-data",
    "sourceRef": "18af317b9ded65047f8438b854317b4ff7fcb88d",
    "sourceLicense": null,
    "retrievedAt": "2026-08-31T07:24:28.727Z",
    "generatorVersion": 1,
    "subject": "MATH",
    "generationWindows": [
      {
        "generation": "tableau-dashboard",
        "from": "2014S",
        "to": "2021W",
        "note": "UBC's earlier reporting system. It also covers the 2021 sessions, which both systems published; the earlier figures are used there because the newer ones are missing a substantial number of sections."
      },
      {
        "generation": "tableau-dashboard-v2",
        "from": "2022S",
        "to": null,
        "note": "UBC's current reporting system, and the only source for these sessions. It also reports medians and quartiles, which the earlier system did not."
      }
    ],
    "activeSince": "2022S",
    "thresholds": {
      "minSessions": 3,
      "minTotalStudents": 100
    },
    "caveats": [
      "small-cell-suppression",
      "upstream-imputation",
      "avg-precision-drift",
      "instructor-data-excluded",
      "campus-series-kept-separate"
    ]
  },
  "source": {
    "name": "UBC PAIR grade data",
    "url": "https://github.com/DonneyF/ubc-pair-grade-data"
  },
  "usage": "No licence is claimed over the underlying figures. Attribution terms: https://learn4less.ca/ubc-grades/methodology/#attribution",
  "bucketOrder": [
    "<50",
    "50-54",
    "55-59",
    "60-63",
    "64-67",
    "68-71",
    "72-75",
    "76-79",
    "80-84",
    "85-89",
    "90-100"
  ],
  "course": {
    "schemaVersion": 1,
    "gradesSlug": "math-120",
    "courseSlug": "ubc-math-120",
    "code": "MATH 120",
    "buckets": [
      "<50",
      "50-54",
      "55-59",
      "60-63",
      "64-67",
      "68-71",
      "72-75",
      "76-79",
      "80-84",
      "85-89",
      "90-100"
    ],
    "campuses": {
      "UBCV": [
        {
          "session": "2014W",
          "year": 2014,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 38,
          "avg": 72.84,
          "avgCoverage": 1,
          "buckets": [
            0,
            0,
            0,
            0,
            7,
            0,
            0,
            0,
            0,
            0,
            8
          ],
          "bucketTotal": 15,
          "bucketsComplete": false,
          "below50": 0,
          "below50Share": null
        },
        {
          "session": "2015W",
          "year": 2015,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 34,
          "avg": 77.44,
          "avgCoverage": 1,
          "buckets": [
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            5,
            8
          ],
          "bucketTotal": 13,
          "bucketsComplete": false,
          "below50": 0,
          "below50Share": null
        },
        {
          "session": "2016W",
          "year": 2016,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 29,
          "avg": 73.03,
          "avgCoverage": 1,
          "buckets": [
            2,
            0,
            1,
            4,
            4,
            3,
            0,
            3,
            4,
            3,
            5
          ],
          "bucketTotal": 29,
          "bucketsComplete": true,
          "below50": 2,
          "below50Share": 0.069
        },
        {
          "session": "2017W",
          "year": 2017,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 41,
          "avg": 72.15,
          "avgCoverage": 1,
          "buckets": [
            1,
            4,
            6,
            2,
            4,
            3,
            2,
            1,
            6,
            6,
            6
          ],
          "bucketTotal": 41,
          "bucketsComplete": true,
          "below50": 1,
          "below50Share": 0.0244
        },
        {
          "session": "2018W",
          "year": 2018,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 56,
          "avg": 70.25,
          "avgCoverage": 1,
          "buckets": [
            4,
            2,
            4,
            5,
            3,
            10,
            5,
            7,
            6,
            5,
            5
          ],
          "bucketTotal": 56,
          "bucketsComplete": true,
          "below50": 4,
          "below50Share": 0.0714
        },
        {
          "session": "2019W",
          "year": 2019,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 31,
          "avg": 70.52,
          "avgCoverage": 1,
          "buckets": [
            2,
            0,
            1,
            4,
            6,
            4,
            6,
            0,
            3,
            3,
            2
          ],
          "bucketTotal": 31,
          "bucketsComplete": true,
          "below50": 2,
          "below50Share": 0.0645
        },
        {
          "session": "2020W",
          "year": 2020,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 51,
          "avg": 75.82,
          "avgCoverage": 1,
          "buckets": [
            3,
            0,
            2,
            3,
            1,
            4,
            6,
            3,
            16,
            8,
            5
          ],
          "bucketTotal": 51,
          "bucketsComplete": true,
          "below50": 3,
          "below50Share": 0.0588
        },
        {
          "session": "2021W",
          "year": 2021,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 45,
          "avg": 74.42,
          "avgCoverage": 1,
          "buckets": [
            6,
            0,
            4,
            3,
            2,
            4,
            2,
            0,
            5,
            7,
            12
          ],
          "bucketTotal": 45,
          "bucketsComplete": true,
          "below50": 6,
          "below50Share": 0.1333
        },
        {
          "session": "2022W",
          "year": 2022,
          "term": "winter",
          "generation": "tableau-dashboard-v2",
          "sections": 2,
          "reported": 79,
          "avg": 78.72,
          "avgCoverage": 1,
          "buckets": [
            1,
            2,
            8,
            3,
            2,
            9,
            7,
            2,
            4,
            14,
            27
          ],
          "bucketTotal": 79,
          "bucketsComplete": true,
          "below50": 1,
          "below50Share": 0.0127,
          "median": 85,
          "p25": 68.7,
          "p75": 90.7
        },
        {
          "session": "2023W",
          "year": 2023,
          "term": "winter",
          "generation": "tableau-dashboard-v2",
          "sections": 2,
          "reported": 106,
          "avg": 73.76,
          "avgCoverage": 1,
          "buckets": [
            11,
            4,
            1,
            5,
            5,
            4,
            6,
            12,
            17,
            20,
            12
          ],
          "bucketTotal": 97,
          "bucketsComplete": false,
          "below50": 11,
          "below50Share": 0.1134,
          "median": 80.4,
          "p25": 66.5,
          "p75": 86.1
        },
        {
          "session": "2024W",
          "year": 2024,
          "term": "winter",
          "generation": "tableau-dashboard-v2",
          "sections": 2,
          "reported": 77,
          "avg": 80.01,
          "avgCoverage": 1,
          "buckets": [
            6,
            3,
            2,
            0,
            4,
            3,
            1,
            4,
            10,
            16,
            28
          ],
          "bucketTotal": 77,
          "bucketsComplete": true,
          "below50": 6,
          "below50Share": 0.0779,
          "median": 86.2,
          "p25": 76.8,
          "p75": 91.9
        },
        {
          "session": "2025W",
          "year": 2025,
          "term": "winter",
          "generation": "tableau-dashboard-v2",
          "sections": 1,
          "reported": 61,
          "avg": 82.1,
          "avgCoverage": 1,
          "buckets": [
            2,
            1,
            1,
            1,
            0,
            4,
            3,
            2,
            13,
            19,
            15
          ],
          "bucketTotal": 61,
          "bucketsComplete": true,
          "below50": 2,
          "below50Share": 0.0328,
          "median": 86,
          "p25": 81,
          "p75": 89
        }
      ]
    }
  }
}