{
 "name": "china-bachelor-programmes",
 "title": "Bachelor Programmes Open to International Students at Chinese Universities (2026)",
 "version": "2026.11",
 "description": "Bachelor Programmes Open to International Students at Chinese Universities (2026): Every bachelor programme in the international catalogues of the universities, with language of instruction and a STEM flag, plus counts per university. Scope: 16 mainland universities in the ARWU 2026 top 100 plus 3 in Hong Kong. The Long Bet, original research by M. Atamanova. Version 2026.11, data checked up to 2026-11-08.",
 "homepage": "https://mariascales.com/research/long-bet/data/china-bachelor-programmes/",
 "licenses": [
  {
   "name": "CC-BY-4.0",
   "path": "https://creativecommons.org/licenses/by/4.0/",
   "title": "Creative Commons Attribution 4.0 International"
  }
 ],
 "sources": [
  {
   "title": "Original research: The Long Bet (mariascales.com)",
   "path": "https://mariascales.com/research/long-bet/"
  },
  {
   "title": "55 pages listed in sources.csv",
   "path": "sources.csv"
  }
 ],
 "resources": [
  {
   "name": "data",
   "path": "data.csv",
   "format": "csv",
   "mediatype": "text/csv",
   "encoding": "utf-8",
   "schema": {
    "fields": [
     {
      "name": "programme_id",
      "type": "string",
      "description": "Row id: `<university_id>__<programme slug>` (a suffix -2, -3 separates programmes of the same name in different schools or languages).",
      "constraints": {
       "required": true
      }
     },
     {
      "name": "university_id",
      "type": "string",
      "description": "Stable slug of the university, the same id as in the other Long Bet datasets (e.g. `tsinghua-university`)."
     },
     {
      "name": "programme_name_en",
      "type": "string",
      "description": "Programme (major) name in English as listed in the catalogue."
     },
     {
      "name": "school_or_faculty",
      "type": "string",
      "description": "School, faculty or department that runs the programme."
     },
     {
      "name": "language",
      "type": "string",
      "description": "Language of instruction: `zh` Chinese, `en` English, `zh_en` bilingual, `fr` French.",
      "constraints": {
       "enum": [
        "en",
        "fr",
        "zh",
        "zh_en"
       ]
      }
     },
     {
      "name": "is_stem",
      "type": "boolean",
      "description": "`true` for natural sciences, mathematics, computing, engineering, materials, earth, environmental and life sciences, biomedical engineering; `false` for medicine, pharmacy, architecture, economics, business, humanities and social sciences. Classified from the programme name."
     },
     {
      "name": "joint_institute",
      "type": "string",
      "description": "Name of the joint institute or partner university when the programme is run with one; null otherwise."
     },
     {
      "name": "status",
      "type": "string",
      "description": "`found` = the fact was read on the source page; `not_found` = the page was checked and the fact is not there: the row records what was looked for, `source_url` gives the URL tried and `note` says what was missing.",
      "constraints": {
       "required": true,
       "enum": [
        "found",
        "not_found"
       ]
      }
     },
     {
      "name": "source_url",
      "type": "string",
      "description": "Page(s) where the fact is stated, \"; \"-separated, primary pages first. For `not_found` rows: the page(s) tried."
     },
     {
      "name": "source_type",
      "type": "string",
      "description": "`official` = university, government, embassy, airport or ranking publisher page; `law` = legal act; `secondary` = media, Wikipedia, agencies, aggregators.",
      "constraints": {
       "enum": [
        "official",
        "secondary"
       ]
      }
     },
     {
      "name": "checked_at",
      "type": "string",
      "description": "Date the row was last read on the source, ISO 8601."
     },
     {
      "name": "confidence",
      "type": "string",
      "description": "`verified` = read on an official or legal page for the current cycle; `partial` = official but older cycle or incomplete, or a reputable secondary source; `estimate` = derived or calculated, method in `note`. Empty for `not_found` rows.",
      "constraints": {
       "enum": [
        "partial",
        "verified"
       ]
      }
     },
     {
      "name": "note",
      "type": "string",
      "description": "Caveats in English. \"Updated 2026-10-23:\" marks text added by the second verification pass of 23 October 2026."
     }
    ],
    "primaryKey": [
     "programme_id"
    ]
   }
  },
  {
   "name": "programmes_summary",
   "path": "programmes_summary.csv",
   "format": "csv",
   "mediatype": "text/csv",
   "encoding": "utf-8",
   "schema": {
    "fields": [
     {
      "name": "university_id",
      "type": "string",
      "description": "Stable slug of the university, the same id as in the other Long Bet datasets (e.g. `tsinghua-university`).",
      "constraints": {
       "required": true
      }
     },
     {
      "name": "catalogue_url",
      "type": "string",
      "description": "Catalogue page or file the counts were taken from."
     },
     {
      "name": "catalogue_cycle",
      "type": "string",
      "description": "Intake or year of the catalogue."
     },
     {
      "name": "intl_bachelor_programmes_total",
      "type": "integer",
      "description": "Number of bachelor programmes open to international applicants in the catalogue (Chinese-taught plus English-taught)."
     },
     {
      "name": "zh_taught_count",
      "type": "integer",
      "description": "Number of Chinese-taught bachelor programmes open to international applicants; null = list not readable."
     },
     {
      "name": "en_taught_count",
      "type": "integer",
      "description": "Number of English-taught bachelor programmes run by the university itself (joint institutes excluded)."
     },
     {
      "name": "en_taught_stem_count",
      "type": "integer",
      "description": "Of `en_taught_count`, programmes with `is_stem` = true."
     },
     {
      "name": "zh_taught_stem_count",
      "type": "integer",
      "description": "Of `zh_taught_count`, programmes with `is_stem` = true."
     },
     {
      "name": "en_taught_list",
      "type": "string",
      "description": "English-taught programmes, \"; \"-separated."
     },
     {
      "name": "joint_institutes",
      "type": "string",
      "description": "Joint institutes or dual-degree programmes with a foreign university."
     },
     {
      "name": "class_composition_en",
      "type": "string",
      "description": "Whether English-taught classes mix international and Chinese students: `mixed_with_chinese` or `unknown`.",
      "constraints": {
       "enum": [
        "mixed_with_chinese",
        "unknown"
       ]
      }
     },
     {
      "name": "class_composition_zh",
      "type": "string",
      "description": "Same for Chinese-taught classes.",
      "constraints": {
       "enum": [
        "mixed_with_chinese",
        "unknown"
       ]
      }
     },
     {
      "name": "duration_years_en",
      "type": "string",
      "description": "Duration of English-taught programmes. Unit: years (range as text)."
     },
     {
      "name": "duration_years_zh",
      "type": "string",
      "description": "Duration of Chinese-taught programmes. Unit: years (range as text; medicine is longer)."
     },
     {
      "name": "fee_differs_en_vs_zh",
      "type": "string",
      "description": "`true` if English-taught programmes cost more than Chinese-taught ones; `unknown` if not stated.",
      "constraints": {
       "enum": [
        "true",
        "unknown"
       ]
      }
     },
     {
      "name": "switch_en_to_zh_allowed",
      "type": "string",
      "description": "Whether a student can move from an English-taught to a Chinese-taught programme: `true`, `false`, `unknown`.",
      "constraints": {
       "enum": [
        "false",
        "true",
        "unknown"
       ]
      }
     },
     {
      "name": "status",
      "type": "string",
      "description": "`found` = the fact was read on the source page; `not_found` = the page was checked and the fact is not there: the row records what was looked for, `source_url` gives the URL tried and `note` says what was missing.",
      "constraints": {
       "required": true,
       "enum": [
        "found"
       ]
      }
     },
     {
      "name": "source_url",
      "type": "string",
      "description": "Page(s) where the fact is stated, \"; \"-separated, primary pages first. For `not_found` rows: the page(s) tried."
     },
     {
      "name": "source_type",
      "type": "string",
      "description": "`official` = university, government, embassy, airport or ranking publisher page; `law` = legal act; `secondary` = media, Wikipedia, agencies, aggregators.",
      "constraints": {
       "enum": [
        "official"
       ]
      }
     },
     {
      "name": "checked_at",
      "type": "string",
      "description": "Date the row was last read on the source, ISO 8601."
     },
     {
      "name": "confidence",
      "type": "string",
      "description": "`verified` = read on an official or legal page for the current cycle; `partial` = official but older cycle or incomplete, or a reputable secondary source; `estimate` = derived or calculated, method in `note`. Empty for `not_found` rows.",
      "constraints": {
       "enum": [
        "estimate",
        "partial",
        "verified"
       ]
      }
     },
     {
      "name": "note",
      "type": "string",
      "description": "Caveats in English. \"Updated 2026-10-23:\" marks text added by the second verification pass of 23 October 2026."
     }
    ],
    "primaryKey": [
     "university_id"
    ]
   }
  },
  {
   "name": "sources",
   "path": "sources.csv",
   "format": "csv",
   "mediatype": "text/csv",
   "encoding": "utf-8",
   "schema": {
    "fields": [
     {
      "name": "source_id",
      "type": "string",
      "description": "Source id, S001 upwards."
     },
     {
      "name": "url",
      "type": "string",
      "description": "URL as cited in the data (spaces encoded as %20)."
     },
     {
      "name": "title",
      "type": "string",
      "description": "Publisher and host of the page."
     },
     {
      "name": "source_type",
      "type": "string",
      "description": "`official`, `law` or `secondary` (most frequent type of the rows citing it)."
     },
     {
      "name": "accessed_at",
      "type": "string",
      "description": "Latest date a row citing the URL was checked, ISO 8601."
     },
     {
      "name": "used_for",
      "type": "string",
      "description": "File, column and number of rows that cite the URL."
     }
    ],
    "primaryKey": [
     "source_id"
    ]
   }
  }
 ]
}
