{
  "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-152",
    "courseSlug": "ubc-math-152",
    "code": "MATH 152",
    "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": 5,
          "reported": 762,
          "avg": 63.93,
          "avgCoverage": 1,
          "buckets": [
            113,
            87,
            77,
            67,
            77,
            79,
            66,
            52,
            77,
            23,
            44
          ],
          "bucketTotal": 762,
          "bucketsComplete": true,
          "below50": 113,
          "below50Share": 0.1483
        },
        {
          "session": "2015W",
          "year": 2015,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 5,
          "reported": 808,
          "avg": 66.96,
          "avgCoverage": 1,
          "buckets": [
            91,
            76,
            79,
            57,
            81,
            76,
            71,
            70,
            94,
            52,
            61
          ],
          "bucketTotal": 808,
          "bucketsComplete": true,
          "below50": 91,
          "below50Share": 0.1126
        },
        {
          "session": "2016W",
          "year": 2016,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 5,
          "reported": 727,
          "avg": 66.61,
          "avgCoverage": 1,
          "buckets": [
            64,
            65,
            67,
            81,
            88,
            80,
            85,
            57,
            77,
            41,
            22
          ],
          "bucketTotal": 727,
          "bucketsComplete": true,
          "below50": 64,
          "below50Share": 0.088
        },
        {
          "session": "2017W",
          "year": 2017,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 6,
          "reported": 795,
          "avg": 67.08,
          "avgCoverage": 1,
          "buckets": [
            67,
            81,
            65,
            74,
            88,
            95,
            79,
            70,
            68,
            66,
            42
          ],
          "bucketTotal": 795,
          "bucketsComplete": true,
          "below50": 67,
          "below50Share": 0.0843
        },
        {
          "session": "2018W",
          "year": 2018,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 6,
          "reported": 829,
          "avg": 65.91,
          "avgCoverage": 1,
          "buckets": [
            60,
            103,
            100,
            99,
            63,
            105,
            78,
            54,
            89,
            52,
            26
          ],
          "bucketTotal": 829,
          "bucketsComplete": true,
          "below50": 60,
          "below50Share": 0.0724
        },
        {
          "session": "2019W",
          "year": 2019,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 6,
          "reported": 950,
          "avg": 77.8,
          "avgCoverage": 1,
          "buckets": [
            10,
            13,
            39,
            43,
            31,
            97,
            115,
            108,
            222,
            138,
            134
          ],
          "bucketTotal": 950,
          "bucketsComplete": true,
          "below50": 10,
          "below50Share": 0.0105
        },
        {
          "session": "2020W",
          "year": 2020,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 6,
          "reported": 942,
          "avg": 73.95,
          "avgCoverage": 1,
          "buckets": [
            8,
            46,
            62,
            67,
            68,
            134,
            108,
            99,
            152,
            100,
            98
          ],
          "bucketTotal": 942,
          "bucketsComplete": true,
          "below50": 8,
          "below50Share": 0.0085
        },
        {
          "session": "2021W",
          "year": 2021,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 7,
          "reported": 925,
          "avg": 66.85,
          "avgCoverage": 1,
          "buckets": [
            62,
            105,
            102,
            108,
            77,
            90,
            84,
            66,
            104,
            61,
            66
          ],
          "bucketTotal": 925,
          "bucketsComplete": true,
          "below50": 62,
          "below50Share": 0.067
        },
        {
          "session": "2022W",
          "year": 2022,
          "term": "winter",
          "generation": "tableau-dashboard-v2",
          "sections": 5,
          "reported": 937,
          "avg": 67.89,
          "avgCoverage": 1,
          "buckets": [
            38,
            91,
            111,
            97,
            94,
            124,
            105,
            65,
            102,
            65,
            45
          ],
          "bucketTotal": 937,
          "bucketsComplete": true,
          "below50": 38,
          "below50Share": 0.0406,
          "median": 68.4,
          "p25": 59.1,
          "p75": 77.3
        },
        {
          "session": "2023W",
          "year": 2023,
          "term": "winter",
          "generation": "tableau-dashboard-v2",
          "sections": 5,
          "reported": 937,
          "avg": 69.12,
          "avgCoverage": 1,
          "buckets": [
            43,
            94,
            83,
            79,
            97,
            100,
            84,
            65,
            130,
            78,
            77
          ],
          "bucketTotal": 930,
          "bucketsComplete": true,
          "below50": 43,
          "below50Share": 0.0462,
          "median": 69.7,
          "p25": 59.3,
          "p75": 80.8
        },
        {
          "session": "2024W",
          "year": 2024,
          "term": "winter",
          "generation": "tableau-dashboard-v2",
          "sections": 5,
          "reported": 927,
          "avg": 73.22,
          "avgCoverage": 1,
          "buckets": [
            55,
            66,
            59,
            73,
            72,
            73,
            58,
            85,
            112,
            129,
            145
          ],
          "bucketTotal": 927,
          "bucketsComplete": true,
          "below50": 55,
          "below50Share": 0.0593,
          "median": 75.2,
          "p25": 62.4,
          "p75": 85.8
        },
        {
          "session": "2025W",
          "year": 2025,
          "term": "winter",
          "generation": "tableau-dashboard-v2",
          "sections": 6,
          "reported": 1001,
          "avg": 70,
          "avgCoverage": 1,
          "buckets": [
            96,
            53,
            77,
            66,
            80,
            87,
            125,
            112,
            150,
            103,
            52
          ],
          "bucketTotal": 1001,
          "bucketsComplete": true,
          "below50": 96,
          "below50Share": 0.0959,
          "median": 73.2,
          "p25": 60.8,
          "p75": 81.4
        }
      ]
    }
  }
}