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.

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.

File formats

CORS accepts two file formats for historical offerings:
FormatHow it’s processed
.csvRead directly as a flat table. Column names are normalized before parsing.
.xlsxPassed 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
year,semester,campus,course_prefix,course_num,total_enrolled,passed_count,failed_count,fail_ratio,is_offered
2020,Fall,Beirut,BIF,205,34,25,1,0.26,1
2021,Spring,Byblos,CSC,243,45,40,2,0.15,1

Column reference

ColumnTypeRequiredDescription
yearintegerYes4-digit academic year, e.g. 2021. Rows with a missing or non-numeric year are skipped.
semesterstringYesFall, Spring, or Summer. Value is capitalized on import.
campusstringNoBeirut or Byblos. Defaults to Beirut if omitted.
course_prefixstringYes*Department prefix, e.g. CSC. Used together with course_num to build the course code.
course_numintegerYes*Numeric portion of the course code, e.g. 243.
course_codestringYes*Full course code, e.g. CSC243. Use this instead of course_prefix + course_num.
total_enrolledintegerNoTotal students enrolled in the section.
passed_countintegerNoNumber of students who passed.
failed_countintegerNoNumber of students who failed.
fail_ratiofloatNoFailure 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_offeredbooleanNo1 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:
  1. course_codecourse codecourse
  2. If none of the above yield a value: combines course_prefix (or prefix) with course_num (or number or course_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 nameAccepted aliases
total_enrolledtotal enrolled, enrolled, total
passed_countpassed, pass
failed_countfailed, fail
fail_ratiofailure_rate
semesterterm, sem
yearyr
is_offeredis offered, offered
course_prefixprefix
course_numnumber, 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.
After uploading, check the Offerings Ledger for any unexpected fail_ratio values near 0.0. These often indicate rows where total_enrolled was zero or missing, causing the auto-calculation to fall back to 0.0.

Troubleshooting

If the upload returns “0 offerings processed”, your file is missing the columns CORS needs to identify each row. Ensure every row has a valid 4-digit year and a resolvable course code (either a course_code column or both course_prefix and course_num columns).