Historical offerings are the backbone of CORS’s machine learning models. Every row represents one course section in one semester at one campus, including how many students enrolled, passed, and failed. The more complete this record is, the more accurately the Recommendation Engine can forecast demand and flag at-risk courses.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.
File formats
CORS accepts two file formats for historical offerings:| Format | How it’s processed |
|---|---|
.csv | Read directly as a flat table. Column names are normalized before parsing. |
.xlsx | Passed through the data cleaner, which processes raw institutional grade reports from the university system. If the cleaner fails, the file falls back to a direct Excel read. |
The
.xlsx path is designed for raw grade export files from LAU’s institutional reporting system. If you have already cleaned and structured your data, a .csv with the standard columns is simpler and more predictable.CSV flat format
The standard CSV format uses the following column names. All column names are case-insensitive and leading/trailing spaces are stripped on import.offerings.csv
Column reference
| Column | Type | Required | Description |
|---|---|---|---|
year | integer | Yes | 4-digit academic year, e.g. 2021. Rows with a missing or non-numeric year are skipped. |
semester | string | Yes | Fall, Spring, or Summer. Value is capitalized on import. |
campus | string | No | Beirut or Byblos. Defaults to Beirut if omitted. |
course_prefix | string | Yes* | Department prefix, e.g. CSC. Used together with course_num to build the course code. |
course_num | integer | Yes* | Numeric portion of the course code, e.g. 243. |
course_code | string | Yes* | Full course code, e.g. CSC243. Use this instead of course_prefix + course_num. |
total_enrolled | integer | No | Total students enrolled in the section. |
passed_count | integer | No | Number of students who passed. |
failed_count | integer | No | Number of students who failed. |
fail_ratio | float | No | Failure rate from 0.0 to 1.0. Auto-calculated as failed_count / total_enrolled when total_enrolled > 0. Any value you supply is overwritten. |
is_offered | boolean | No | 1 or True if the course was actually offered that term. Defaults to True. |
*You must supply either
course_code or the combination of course_prefix + course_num. Rows that cannot resolve a course code are skipped.Course code columns
CORS tries column names in this priority order to determine the course code for each row:course_code→course code→course- If none of the above yield a value: combines
course_prefix(orprefix) withcourse_num(ornumberorcourse_number)
Column name aliases
The parser accepts common variations of column names so you do not need to rename columns in your source files:| Canonical name | Accepted aliases |
|---|---|
total_enrolled | total enrolled, enrolled, total |
passed_count | passed, pass |
failed_count | failed, fail |
fail_ratio | failure_rate |
semester | term, sem |
year | yr |
is_offered | is offered, offered |
course_prefix | prefix |
course_num | number, course_number |
After upload
Once the upload succeeds:- All processed records are saved to the database and appear immediately in the Offerings Ledger Preview table on the Data Management page.
- The records are used to retrain the ML models the next time you run an analysis in the Recommendation Engine.
- You can filter the ledger by Fiscal Year, Term, Campus, Department, and Risk Index to verify your data loaded correctly.