Skip to main content

Documentation Index

Fetch the complete documentation index at: https://cors-lau.vercel.app/docs/llms.txt

Use this file to discover all available pages before exploring further.

CORS accepts three categories of data files. Each category has specific format requirements for columns, field names, and accepted file types. Use this reference when preparing files for upload or troubleshooting ingestion errors.
Upload all data files from the Data Management page. After uploading new data, click Recalibrate Intelligence in the Recommendation Engine to retrain the ML models on the updated dataset.

Course catalog

Accepted file type: .json only The course catalog defines every course in your curriculum — its name, prerequisites, study plan, and type. CORS accepts two JSON formats. Both are equivalent; use whichever matches your existing data.

Format A — dictionary keyed by course code

Each key is a course code. This is the most compact format.
course-catalog-format-a.json
{
  "CSC201": {
    "course_name": "Computer Applications",
    "prerequisites": ["CSC101"],
    "study_plan": "both",
    "type": "core"
  },
  "CSC301": {
    "course_name": "Data Structures",
    "prerequisites": ["CSC201"],
    "study_plan": "fall",
    "type": "core"
  }
}

Format B — array with a code field

Each element is an object with a code property. Useful when your tooling generates arrays.
course-catalog-format-b.json
[
  {
    "code": "CSC201",
    "course_name": "Computer Applications",
    "prerequisites": ["CSC101"],
    "type": "core"
  },
  {
    "code": "CSC301",
    "course_name": "Data Structures",
    "prerequisites": ["CSC201"],
    "type": "core"
  }
]

Field reference

FieldRequiredAccepted valuesDescription
course_nameYesAny stringFull course title
prerequisitesNoArray of course codesCourses that must be completed before enrolling
typeYescore, elective, masters, minorCourse classification
study_planNofall, spring, bothWhich semester(s) the course is typically offered

Cross-listed courses

For courses cross-listed between departments, use the combined code as the key or code value:
cross-listed.json
{
  "CSC401/BIF401": {
    "course_name": "Bioinformatics Algorithms",
    "prerequisites": ["CSC301", "BIF301"],
    "study_plan": "spring",
    "type": "elective"
  }
}

Historical offerings

Accepted file types: .csv, .xlsx Historical offerings tell the ML model which courses were offered in past semesters, how many students enrolled, and how many passed or failed. This is the primary training signal for the recommendation models.

Required columns

Your file must include all of the following:
ColumnDescription
yearAcademic year as a four-digit integer (e.g. 2024)
semesterFall, Spring, or Summer
campusBeirut or Byblos
total_enrolledTotal students enrolled in the section
passed_countStudents who passed
failed_countStudents who failed
For the course identifier, include either:
  • course_code — a single column with the full code (e.g. CSC201), or
  • course_prefix and course_num — separate columns (e.g. CSC and 201)

Optional columns

ColumnDescription
fail_ratioRatio of students who failed. Auto-calculated from failed_count / total_enrolled if omitted.
is_offeredBoolean (1/0 or true/false) indicating whether the course was offered that semester. Inferred from the presence of a row if omitted.

Example (CSV)

historical-offerings.csv
year,semester,campus,course_code,total_enrolled,passed_count,failed_count
2024,Fall,Beirut,CSC201,42,38,4
2024,Fall,Beirut,CSC301,30,27,3
2024,Spring,Byblos,MTH201,55,48,7

Faculty records

Accepted file types: .json, .csv, .xlsx Faculty records define each professor’s name, department, and optionally their availability windows. Availability windows are used by the Timetable Scheduler to flag violations when a course is scheduled outside a professor’s available hours.

Day notation

CodeDay
MMonday
TTuesday
WWednesday
RThursday
FFriday

Availability string format

Availability is expressed as a string: "DAYS HH:MM HH:MM"
  • DAYS — one or more day codes concatenated (e.g. MWF, TR)
  • First time — availability start (24-hour format)
  • Second time — availability end (24-hour format)
Examples:
StringMeaning
"MWF 08:00 12:00"Available Monday, Wednesday, Friday from 8 AM to noon
"TR 10:00 16:00"Available Tuesday and Thursday from 10 AM to 4 PM
"MTWRF 09:00 17:00"Available every weekday from 9 AM to 5 PM
If a professor has no availability entry, or if the field is omitted, CORS treats that professor as having unconstrained availability. Availability violations are only flagged when an explicit window is configured.

JSON format example

faculty-records.json
[
  {
    "name": "Dr. Rima Khoury",
    "courses": ["CSC243", "CSC301"],
    "availability": [
      "MWF 08:00 14:00"
    ]
  },
  {
    "name": "Dr. Elie Nasr",
    "courses": ["MTH201", "MTH301"],
    "availability": [
      "TR 10:00 16:00"
    ]
  },
  {
    "name": "Dr. Lara Haddad",
    "courses": ["BIF205", "BIF305"],
    "availability": []
  }
]

CSV format example

faculty-records.csv
name,courses,days,start,end
"Dr. Rima Khoury","CSC243, CSC301",MWF,08:00,14:00
"Dr. Elie Nasr","MTH201, MTH301",TR,10:00,16:00

Data management overview

How to upload, update, and manage your data files in CORS.

Run your first analysis

Use your uploaded data to generate course recommendations.