Skip to content

Course Form ​

Field reference for course catalog entries.

Fields ​

Backed by records.courses.

FieldColumnTypeRequiredNotes
Course IDcourse_idIntegerAutoPrimary key
Course Codecourse_codeText(20)YesSubject and number together, e.g. BIOL-101
TitletitleText(200)Yes
DescriptiondescriptionTextNo
Credit Hours Mincredit_hours_minDecimalYes
Credit Hours Maxcredit_hours_maxDecimalNoUpper bound for variable-credit courses
Is Variable Creditis_variable_creditBooleanYesThe course may carry a range of credits. Whether students choose is set per section (course_sections.is_variable_credit); see Sections
Contact Hourscontact_hoursDecimalNoOne total; lecture/lab/other are not split out
Credit Systemcredit_system_idInteger (FK)Yes
Course Levelcourse_level_idSelect (Lookup)NoLower division, upper division, graduate
Grading Systemgrading_system_idInteger (FK)No
Is Repeatableis_repeatableBooleanYesRepeatable for credit: every attempt counts toward GPA
Maximum Attemptsmax_repeatsIntegerNoTotal attempts, the first included; NULL = unlimited, at least 1. Only for repeatable courses -- see Repeats and Retakes
Allows Section Descriptorallows_section_descriptorBooleanYesSections may carry a subtitle
Year Patternyear_patternText(20)YesWhich years the course is offered
Lab Feelab_feeDecimalNoDefault lab fee for the course
Source IDsource_idText(20)NoColleague/ODS source key
Statusstatus_idSelect (Lookup)YesCOURSE_STATUS
Effective Dateeffective_dateDateNo
End Dateend_dateDateNo

Subject and catalogue number are not separate columns — course_code holds both. There is also no department_id on a course: ownership is reached through the course code's course code record, not stored on the course itself.

Computed Fields (Read-Only) ​

FieldDescription
Course CodeConcatenation of Subject + Course Number (e.g., "BIOL 101")
Credits DisplayShows range if variable (e.g., "1-3") or single value
Status DisplayHuman-readable status from lookup

Validation Rules ​

  1. Subject + Course Number must be unique across all courses
  2. If Credits Max is set, it must be greater than Credits Min
  3. Maximum Attempts is ignored when Is Repeatable is false; a blank (or 0) is saved as unlimited
  4. End Date must be on or after Effective Date if set

Requisites ​

Prerequisites and corequisites come from two places, and only one of them is the real source.

Every Colleague requisite rule a course carries (migration 285), written by migrate-requirements --steps=course-prereqs. Read-only in the SIS: change the rule in Colleague and the next import follows. The rule's courses are the requirement-block tree the link points to.

FieldColumnTypeNotes
Coursecourse_idInteger (FK)The course that carries the rule
Colleague Ruleacad_reqmt_idText(20)ACAD_REQMTS id; unique per course
Rule Blockblock_idInteger (FK)Top requirement block of the rule
TimingtimingChar(1)P prior: completed (or in progress, or planned) in an earlier term. E either: an earlier term or the same term. C concurrent: a corequisite, taken in the same term
EnforcementenforcementText(2)RQ required. RM recommended: never enforced
PositionpositionIntegerOrder on the course
SourcesourceText(20)CRS_REQS (current), or CRS_PREREQS for the legacy rule on a course with no current prior rule

courses.prereq_block_id remains as a pointer to the primary prior rule only. A course can carry several rules, for example a prerequisite and a corequisite.

Minimum grades sit on the rule's blocks and groups (min_grade_id, allowed_grades, migration 286). The nearest one above a course applies. A grade meets it when its grade points are at or above the minimum's, or when the rule lists it as allowed (for example S). Missing a prior rule is overridable. A corequisite (C) is only ever a warning.

Hand-entered requisites (records.course_requisites) ​

The Requisites sub-form on the course screen:

FieldColumnTypeNotes
Requisite Typerequisite_type_idSelect (Lookup)REQUISITE_TYPE
Required Courserequisite_course_idSelect (FK)
Course Patternrequisite_patternText
Minimum Grademin_grade_idSelect (FK)
Can Be Concurrentcan_be_concurrentBoolean
Grouprequisite_groupIntegerRows in the same group are alternatives

Of these rows, only corequisites (type COREQ or COREQUISITE) are checked, as a warning alongside the imported ones. A hand-entered prerequisite is stored but not enforced; add it in Colleague instead. See Courses.

Student Information System Documentation