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.

The Course Catalog defines every course that CORS knows about — its name, prerequisites, which study plans it belongs to, and its classification. You must upload the catalog before running recommendations or building a timetable, because both features depend on knowing what courses exist and how they relate to each other.

File format

The course catalog must be a JSON file (.json). CSV and XLSX are not accepted for this upload type.

Supported structures

CORS accepts two JSON shapes: a dictionary keyed by course code, or a flat list of course objects.
Use an object where each key is the course code and each value is the course metadata. This is the recommended format.
course-catalog.json
{
  "CSC201": {
    "course_name": "Computer Applications",
    "prerequisites": ["CSC101"],
    "study_plan": "both",
    "type": "core"
  },
  "CSC243": {
    "course_name": "Introduction to OOP",
    "prerequisites": ["CSC201"],
    "study_plan": "fall",
    "type": "core"
  }
}
CORS reads the dictionary key as the code field automatically. You do not need to include a separate code property inside each object.

Fields

Required fields

FieldTypeDescription
codestringUnique course identifier. Used as the dictionary key in dictionary format, or as an explicit field in list format.
course_namestringHuman-readable course title displayed throughout CORS.

Optional fields

FieldTypeAccepted valuesDescription
prerequisitesarray of stringsCourse codesList of course codes that must be completed before this course.
study_planstring"fall", "spring", "both"The semester(s) in which this course is planned to run.
typestring"core", "elective", "masters", "minor"Course classification used for filtering in the Recommendation Engine.

Course code format

A valid course code consists of a department prefix (letters) followed by a course number (digits), with no space between them. Examples: CSC201, BIF305, MTH101, STA210. CORS automatically parses the prefix and level from the code:
  • Prefix — the leading letters, e.g. CSC from CSC201
  • Level — the first digit of the number, e.g. 2 from CSC201 (used to classify the course as 200-level)
Codes with MTH or STA prefixes are automatically flagged as math-related courses, which influences how the Recommendation Engine models prerequisite chains.

Cross-listed courses

If a course is jointly offered by two departments, use slash notation to combine both codes:
CSC401/BIF401
The prefix filter in the Offerings Ledger Preview matches cross-listed courses correctly — a filter on CSC will include CSC401/BIF401.

After upload

Once the upload succeeds, your courses are saved to the database and immediately available in:
  • The Recommendation Engine — courses appear in the offering results and can be individually overridden
  • The Timetable Scheduler — courses can be assigned to time slots, rooms, and faculty
  • The Prerequisite Graph — dependency edges are drawn based on the prerequisites field

Troubleshooting

If the upload returns “0 courses processed”, your JSON does not contain any valid course codes. Check that each entry has a non-empty code field (list format) or that your dictionary keys follow the PREFIX + NUMBER pattern (e.g., CSC201). Keys that are purely numeric or purely alphabetical will not be parsed as course codes.
If you maintain your course registry in a spreadsheet, export it as JSON before uploading. Online CSV-to-JSON converters or scripting tools can produce either the dictionary or list format CORS expects.