{
  "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-221",
    "courseSlug": "ubc-math-221",
    "code": "MATH 221",
    "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": "2014S",
          "year": 2014,
          "term": "summer",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 139,
          "avg": 68.75,
          "avgCoverage": 1,
          "buckets": [
            12,
            13,
            10,
            13,
            21,
            11,
            12,
            8,
            16,
            12,
            11
          ],
          "bucketTotal": 139,
          "bucketsComplete": true,
          "below50": 12,
          "below50Share": 0.0863
        },
        {
          "session": "2014W",
          "year": 2014,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 6,
          "reported": 857,
          "avg": 67.79,
          "avgCoverage": 1,
          "buckets": [
            96,
            80,
            81,
            71,
            79,
            75,
            64,
            65,
            81,
            73,
            92
          ],
          "bucketTotal": 857,
          "bucketsComplete": true,
          "below50": 96,
          "below50Share": 0.112
        },
        {
          "session": "2015S",
          "year": 2015,
          "term": "summer",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 128,
          "avg": 70.34,
          "avgCoverage": 1,
          "buckets": [
            7,
            11,
            8,
            14,
            14,
            14,
            10,
            15,
            12,
            8,
            15
          ],
          "bucketTotal": 128,
          "bucketsComplete": true,
          "below50": 7,
          "below50Share": 0.0547
        },
        {
          "session": "2015W",
          "year": 2015,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 6,
          "reported": 929,
          "avg": 67.83,
          "avgCoverage": 1,
          "buckets": [
            94,
            62,
            68,
            81,
            96,
            119,
            91,
            98,
            107,
            57,
            56
          ],
          "bucketTotal": 929,
          "bucketsComplete": true,
          "below50": 94,
          "below50Share": 0.1012
        },
        {
          "session": "2016S",
          "year": 2016,
          "term": "summer",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 79,
          "avg": 76.46,
          "avgCoverage": 1,
          "buckets": [
            2,
            2,
            2,
            1,
            7,
            8,
            9,
            14,
            10,
            12,
            12
          ],
          "bucketTotal": 79,
          "bucketsComplete": true,
          "below50": 2,
          "below50Share": 0.0253
        },
        {
          "session": "2016W",
          "year": 2016,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 9,
          "reported": 1170,
          "avg": 66.03,
          "avgCoverage": 1,
          "buckets": [
            188,
            112,
            117,
            77,
            91,
            105,
            110,
            76,
            100,
            71,
            123
          ],
          "bucketTotal": 1170,
          "bucketsComplete": true,
          "below50": 188,
          "below50Share": 0.1607
        },
        {
          "session": "2017S",
          "year": 2017,
          "term": "summer",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 144,
          "avg": 71.33,
          "avgCoverage": 1,
          "buckets": [
            4,
            10,
            16,
            10,
            8,
            23,
            15,
            13,
            20,
            10,
            15
          ],
          "bucketTotal": 144,
          "bucketsComplete": true,
          "below50": 4,
          "below50Share": 0.0278
        },
        {
          "session": "2017W",
          "year": 2017,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 11,
          "reported": 1139,
          "avg": 70.13,
          "avgCoverage": 1,
          "buckets": [
            100,
            89,
            87,
            81,
            90,
            96,
            126,
            123,
            107,
            106,
            134
          ],
          "bucketTotal": 1139,
          "bucketsComplete": true,
          "below50": 100,
          "below50Share": 0.0878
        },
        {
          "session": "2018S",
          "year": 2018,
          "term": "summer",
          "generation": "tableau-dashboard",
          "sections": 2,
          "reported": 169,
          "avg": 69.59,
          "avgCoverage": 1,
          "buckets": [
            12,
            9,
            18,
            15,
            17,
            21,
            15,
            13,
            25,
            11,
            13
          ],
          "bucketTotal": 169,
          "bucketsComplete": true,
          "below50": 12,
          "below50Share": 0.071
        },
        {
          "session": "2018W",
          "year": 2018,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 10,
          "reported": 1068,
          "avg": 73.24,
          "avgCoverage": 1,
          "buckets": [
            63,
            37,
            58,
            54,
            100,
            96,
            133,
            127,
            161,
            117,
            122
          ],
          "bucketTotal": 1068,
          "bucketsComplete": true,
          "below50": 63,
          "below50Share": 0.059
        },
        {
          "session": "2019S",
          "year": 2019,
          "term": "summer",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 121,
          "avg": 77.64,
          "avgCoverage": 1,
          "buckets": [
            6,
            7,
            3,
            6,
            6,
            10,
            10,
            10,
            14,
            14,
            35
          ],
          "bucketTotal": 121,
          "bucketsComplete": true,
          "below50": 6,
          "below50Share": 0.0496
        },
        {
          "session": "2019W",
          "year": 2019,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 10,
          "reported": 1143,
          "avg": 78.13,
          "avgCoverage": 1,
          "buckets": [
            61,
            41,
            59,
            50,
            64,
            56,
            89,
            91,
            141,
            148,
            343
          ],
          "bucketTotal": 1143,
          "bucketsComplete": true,
          "below50": 61,
          "below50Share": 0.0534
        },
        {
          "session": "2020S",
          "year": 2020,
          "term": "summer",
          "generation": "tableau-dashboard",
          "sections": 2,
          "reported": 156,
          "avg": 77.87,
          "avgCoverage": 1,
          "buckets": [
            3,
            1,
            6,
            7,
            11,
            13,
            19,
            15,
            31,
            25,
            25
          ],
          "bucketTotal": 156,
          "bucketsComplete": true,
          "below50": 3,
          "below50Share": 0.0192
        },
        {
          "session": "2020W",
          "year": 2020,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 8,
          "reported": 1083,
          "avg": 73.43,
          "avgCoverage": 1,
          "buckets": [
            47,
            31,
            46,
            58,
            79,
            138,
            137,
            174,
            193,
            111,
            69
          ],
          "bucketTotal": 1083,
          "bucketsComplete": true,
          "below50": 47,
          "below50Share": 0.0434
        },
        {
          "session": "2021S",
          "year": 2021,
          "term": "summer",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 105,
          "avg": 75.64,
          "avgCoverage": 1,
          "buckets": [
            5,
            1,
            3,
            7,
            10,
            15,
            8,
            12,
            9,
            14,
            21
          ],
          "bucketTotal": 105,
          "bucketsComplete": true,
          "below50": 5,
          "below50Share": 0.0476
        },
        {
          "session": "2021W",
          "year": 2021,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 8,
          "reported": 1100,
          "avg": 71.86,
          "avgCoverage": 1,
          "buckets": [
            105,
            68,
            59,
            57,
            74,
            87,
            115,
            116,
            129,
            114,
            176
          ],
          "bucketTotal": 1100,
          "bucketsComplete": true,
          "below50": 105,
          "below50Share": 0.0955
        },
        {
          "session": "2022S",
          "year": 2022,
          "term": "summer",
          "generation": "tableau-dashboard-v2",
          "sections": 1,
          "reported": 109,
          "avg": 76.2,
          "avgCoverage": 1,
          "buckets": [
            5,
            5,
            4,
            4,
            6,
            7,
            15,
            11,
            14,
            15,
            23
          ],
          "bucketTotal": 109,
          "bucketsComplete": true,
          "below50": 5,
          "below50Share": 0.0459,
          "median": 78,
          "p25": 69,
          "p75": 88
        },
        {
          "session": "2022W",
          "year": 2022,
          "term": "winter",
          "generation": "tableau-dashboard-v2",
          "sections": 9,
          "reported": 1123,
          "avg": 71.79,
          "avgCoverage": 1,
          "buckets": [
            96,
            58,
            65,
            92,
            74,
            100,
            114,
            109,
            149,
            136,
            130
          ],
          "bucketTotal": 1123,
          "bucketsComplete": true,
          "below50": 96,
          "below50Share": 0.0855,
          "median": 74.5,
          "p25": 63,
          "p75": 83.5
        },
        {
          "session": "2023S",
          "year": 2023,
          "term": "summer",
          "generation": "tableau-dashboard-v2",
          "sections": 1,
          "reported": 106,
          "avg": 74.79,
          "avgCoverage": 1,
          "buckets": [
            3,
            6,
            6,
            3,
            9,
            11,
            12,
            6,
            18,
            10,
            15
          ],
          "bucketTotal": 99,
          "bucketsComplete": false,
          "below50": 3,
          "below50Share": 0.0303,
          "median": 75,
          "p25": 66,
          "p75": 84.5
        },
        {
          "session": "2023W",
          "year": 2023,
          "term": "winter",
          "generation": "tableau-dashboard-v2",
          "sections": 8,
          "reported": 1283,
          "avg": 68.17,
          "avgCoverage": 1,
          "buckets": [
            111,
            99,
            89,
            106,
            105,
            127,
            176,
            121,
            168,
            91,
            58
          ],
          "bucketTotal": 1251,
          "bucketsComplete": false,
          "below50": 111,
          "below50Share": 0.0887,
          "median": 71.1,
          "p25": 59.7,
          "p75": 79.2
        },
        {
          "session": "2024S",
          "year": 2024,
          "term": "summer",
          "generation": "tableau-dashboard-v2",
          "sections": 1,
          "reported": 126,
          "avg": 71.3,
          "avgCoverage": 1,
          "buckets": [
            6,
            4,
            11,
            12,
            17,
            13,
            12,
            7,
            16,
            18,
            10
          ],
          "bucketTotal": 126,
          "bucketsComplete": true,
          "below50": 6,
          "below50Share": 0.0476,
          "median": 71.5,
          "p25": 63,
          "p75": 83.8
        },
        {
          "session": "2024W",
          "year": 2024,
          "term": "winter",
          "generation": "tableau-dashboard-v2",
          "sections": 5,
          "reported": 1135,
          "avg": 66.26,
          "avgCoverage": 1,
          "buckets": [
            146,
            113,
            109,
            96,
            84,
            108,
            111,
            83,
            124,
            73,
            88
          ],
          "bucketTotal": 1135,
          "bucketsComplete": true,
          "below50": 146,
          "below50Share": 0.1286,
          "median": 67.3,
          "p25": 55.8,
          "p75": 78.7
        },
        {
          "session": "2025S",
          "year": 2025,
          "term": "summer",
          "generation": "tableau-dashboard-v2",
          "sections": 1,
          "reported": 127,
          "avg": 76.3,
          "avgCoverage": 1,
          "buckets": [
            9,
            4,
            2,
            12,
            8,
            15,
            5,
            8,
            19,
            11,
            34
          ],
          "bucketTotal": 127,
          "bucketsComplete": true,
          "below50": 9,
          "below50Share": 0.0709,
          "median": 80,
          "p25": 65,
          "p75": 90
        },
        {
          "session": "2025W",
          "year": 2025,
          "term": "winter",
          "generation": "tableau-dashboard-v2",
          "sections": 5,
          "reported": 1066,
          "avg": 69.45,
          "avgCoverage": 1,
          "buckets": [
            109,
            90,
            74,
            74,
            77,
            89,
            79,
            90,
            145,
            91,
            148
          ],
          "bucketTotal": 1066,
          "bucketsComplete": true,
          "below50": 109,
          "below50Share": 0.1023,
          "median": 72,
          "p25": 58.5,
          "p75": 83
        }
      ],
      "UBCO": [
        {
          "session": "2014W",
          "year": 2014,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 2,
          "reported": 226,
          "avg": 70.77,
          "avgCoverage": 1,
          "buckets": [
            22,
            11,
            12,
            14,
            23,
            20,
            20,
            27,
            23,
            20,
            34
          ],
          "bucketTotal": 226,
          "bucketsComplete": true,
          "below50": 22,
          "below50Share": 0.0973
        },
        {
          "session": "2015W",
          "year": 2015,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 2,
          "reported": 232,
          "avg": 67.83,
          "avgCoverage": 1,
          "buckets": [
            37,
            12,
            12,
            11,
            15,
            22,
            21,
            26,
            34,
            21,
            21
          ],
          "bucketTotal": 232,
          "bucketsComplete": true,
          "below50": 37,
          "below50Share": 0.1595
        },
        {
          "session": "2016W",
          "year": 2016,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 2,
          "reported": 196,
          "avg": 68.87,
          "avgCoverage": 1,
          "buckets": [
            24,
            10,
            16,
            15,
            17,
            20,
            15,
            17,
            23,
            17,
            22
          ],
          "bucketTotal": 196,
          "bucketsComplete": true,
          "below50": 24,
          "below50Share": 0.1224
        },
        {
          "session": "2017S",
          "year": 2017,
          "term": "summer",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 22,
          "avg": 66.73,
          "avgCoverage": 1,
          "buckets": [
            5,
            2,
            1,
            1,
            0,
            2,
            3,
            0,
            2,
            2,
            4
          ],
          "bucketTotal": 22,
          "bucketsComplete": true,
          "below50": 5,
          "below50Share": 0.2273
        },
        {
          "session": "2017W",
          "year": 2017,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 2,
          "reported": 213,
          "avg": 70.21,
          "avgCoverage": 1,
          "buckets": [
            26,
            16,
            14,
            18,
            13,
            13,
            18,
            16,
            21,
            23,
            35
          ],
          "bucketTotal": 213,
          "bucketsComplete": true,
          "below50": 26,
          "below50Share": 0.1221
        },
        {
          "session": "2018S",
          "year": 2018,
          "term": "summer",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 30,
          "avg": 69.47,
          "avgCoverage": 1,
          "buckets": [
            2,
            3,
            3,
            4,
            4,
            0,
            1,
            4,
            3,
            2,
            4
          ],
          "bucketTotal": 30,
          "bucketsComplete": true,
          "below50": 2,
          "below50Share": 0.0667
        },
        {
          "session": "2018W",
          "year": 2018,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 2,
          "reported": 247,
          "avg": 68.94,
          "avgCoverage": 1,
          "buckets": [
            22,
            14,
            18,
            29,
            23,
            32,
            14,
            30,
            18,
            25,
            22
          ],
          "bucketTotal": 247,
          "bucketsComplete": true,
          "below50": 22,
          "below50Share": 0.0891
        },
        {
          "session": "2019S",
          "year": 2019,
          "term": "summer",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 26,
          "avg": 65.35,
          "avgCoverage": 1,
          "buckets": [
            4,
            1,
            5,
            2,
            3,
            1,
            2,
            2,
            3,
            2,
            1
          ],
          "bucketTotal": 26,
          "bucketsComplete": true,
          "below50": 4,
          "below50Share": 0.1538
        },
        {
          "session": "2019W",
          "year": 2019,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 2,
          "reported": 252,
          "avg": 69.21,
          "avgCoverage": 1,
          "buckets": [
            31,
            17,
            12,
            25,
            24,
            20,
            21,
            15,
            35,
            22,
            30
          ],
          "bucketTotal": 252,
          "bucketsComplete": true,
          "below50": 31,
          "below50Share": 0.123
        },
        {
          "session": "2020S",
          "year": 2020,
          "term": "summer",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 54,
          "avg": 66.69,
          "avgCoverage": 1,
          "buckets": [
            13,
            1,
            2,
            3,
            5,
            5,
            8,
            3,
            7,
            4,
            3
          ],
          "bucketTotal": 54,
          "bucketsComplete": true,
          "below50": 13,
          "below50Share": 0.2407
        },
        {
          "session": "2020W",
          "year": 2020,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 2,
          "reported": 272,
          "avg": 78.81,
          "avgCoverage": 1,
          "buckets": [
            17,
            7,
            6,
            6,
            18,
            12,
            28,
            22,
            40,
            35,
            81
          ],
          "bucketTotal": 272,
          "bucketsComplete": true,
          "below50": 17,
          "below50Share": 0.0625
        },
        {
          "session": "2021S",
          "year": 2021,
          "term": "summer",
          "generation": "tableau-dashboard",
          "sections": 1,
          "reported": 38,
          "avg": 67.71,
          "avgCoverage": 1,
          "buckets": [
            7,
            3,
            2,
            1,
            2,
            1,
            2,
            2,
            7,
            6,
            5
          ],
          "bucketTotal": 38,
          "bucketsComplete": true,
          "below50": 7,
          "below50Share": 0.1842
        },
        {
          "session": "2021W",
          "year": 2021,
          "term": "winter",
          "generation": "tableau-dashboard",
          "sections": 2,
          "reported": 265,
          "avg": 79.16,
          "avgCoverage": 1,
          "buckets": [
            17,
            9,
            6,
            9,
            9,
            12,
            26,
            20,
            31,
            40,
            86
          ],
          "bucketTotal": 265,
          "bucketsComplete": true,
          "below50": 17,
          "below50Share": 0.0642
        },
        {
          "session": "2022W",
          "year": 2022,
          "term": "winter",
          "generation": "tableau-dashboard-v2",
          "sections": 2,
          "reported": 258,
          "avg": 73.77,
          "avgCoverage": 1,
          "buckets": [
            27,
            8,
            14,
            8,
            20,
            22,
            20,
            24,
            32,
            35,
            48
          ],
          "bucketTotal": 258,
          "bucketsComplete": true,
          "below50": 27,
          "below50Share": 0.1047,
          "median": 77.3,
          "p25": 66.5,
          "p75": 86.6
        },
        {
          "session": "2023S",
          "year": 2023,
          "term": "summer",
          "generation": "tableau-dashboard-v2",
          "sections": 1,
          "reported": 30,
          "avg": 81.7,
          "avgCoverage": 1,
          "buckets": [
            1,
            1,
            1,
            1,
            1,
            2,
            2,
            1,
            3,
            1,
            13
          ],
          "bucketTotal": 27,
          "bucketsComplete": true,
          "below50": 1,
          "below50Share": 0.037,
          "median": 89,
          "p25": 72,
          "p75": 95.5
        },
        {
          "session": "2023W",
          "year": 2023,
          "term": "winter",
          "generation": "tableau-dashboard-v2",
          "sections": 2,
          "reported": 300,
          "avg": 71.1,
          "avgCoverage": 1,
          "buckets": [
            26,
            15,
            20,
            22,
            30,
            27,
            25,
            17,
            38,
            28,
            45
          ],
          "bucketTotal": 293,
          "bucketsComplete": false,
          "below50": 26,
          "below50Share": 0.0887,
          "median": 73,
          "p25": 61.8,
          "p75": 84
        },
        {
          "session": "2024S",
          "year": 2024,
          "term": "summer",
          "generation": "tableau-dashboard-v2",
          "sections": 1,
          "reported": 27,
          "avg": 71.7,
          "avgCoverage": 1,
          "buckets": [
            3,
            2,
            2,
            1,
            3,
            1,
            2,
            2,
            1,
            2,
            8
          ],
          "bucketTotal": 27,
          "bucketsComplete": true,
          "below50": 3,
          "below50Share": 0.1111,
          "median": 75,
          "p25": 60,
          "p75": 90.5
        },
        {
          "session": "2024W",
          "year": 2024,
          "term": "winter",
          "generation": "tableau-dashboard-v2",
          "sections": 2,
          "reported": 315,
          "avg": 72.89,
          "avgCoverage": 1,
          "buckets": [
            28,
            16,
            15,
            17,
            30,
            30,
            19,
            33,
            29,
            42,
            56
          ],
          "bucketTotal": 315,
          "bucketsComplete": true,
          "below50": 28,
          "below50Share": 0.0889,
          "median": 75.1,
          "p25": 64,
          "p75": 86.5
        },
        {
          "session": "2025W",
          "year": 2025,
          "term": "winter",
          "generation": "tableau-dashboard-v2",
          "sections": 2,
          "reported": 296,
          "avg": 66.06,
          "avgCoverage": 1,
          "buckets": [
            45,
            22,
            25,
            32,
            26,
            22,
            24,
            19,
            29,
            28,
            24
          ],
          "bucketTotal": 296,
          "bucketsComplete": true,
          "below50": 45,
          "below50Share": 0.152,
          "median": 67,
          "p25": 56.5,
          "p75": 79.8
        }
      ]
    }
  }
}