Functions

Titling this section “functions” is a little abitious. These are just rules that look like programming language functions. They still have to be written and added to the programs that process plan specifications.

Functional requirements are usually included in an all-of rule and often reflect faculty-level requirements. Here’s an example:

all of "UMA10 Computer Science Honours Coop" using all passedCourses {
    minPassedUnits(20.0)
    minPassedUnits(5.0, nonMathCourses)
    maxFailedUnits(2.0)
    minAverage(CAV, 60)
    maxUnits(5.0, unusableCourseAttempts)
    maxUnits(25.0, usableCourseAttempts)
    minFullTimeTerms(8)
    hasMilestone(UENGLPROF)
}
  • Minimum Units:
    • minUnits(<A>, <B>): Require at least <A> units in the set of courses, <B>.
    • minPassedUnits(<A>): Require at least <A> units in the set passedCourses. It is an error if passedCourses has not been previously defined.
    • minPassedUnits(<A>, <B>): Require at least <A> units in the set <B> /\ passedCourses.
      That is, <B> is implicitly intersected with the set of passedCourses; it is an error if passedCourses has not been previously defined.
  • Maximum Units:
    • maxUnits(<A>, <B>): Require no more than <A> units in the set of courses, <B>.
    • maxFailedUnits(<A>): Require no more than <A> units in the set failedCourses. It is an error if failedCourses has not been previously defined.
    • maxFailedUnits(<A>, <B>): Require no more than <A> units in the set <B> /\ failedCourses.
      That is, <B> is implicitly intersected with the set of failedCourses; it is an error if failedCourses has not been previously defined.
  • minAverage(<TYPE>, <A>): Require a minimum average of <A> for the given average type. Allowed types are the ones defined in Quest and are typically one of CAV, MAV, FAV.
    • Degree Audit consults Quest for these values. It’s calculated when grades are released. If it’s not available for the most recent term, it falls back to a previous term. If a student has switched plans since the averages were last calculated, you’ll get something like Manual check: MAV for CSHC not available. Check for a minimum average of 60. You’ll need to either do the check manually or wait for Quest to calculate it.
  • minFullTimeTerms(<N>): Require at least <N> full time terms where a full time term is defined as taking at least 1.5 units (excluding Coop-related courses).
  • hasMilestone(<M>): Student has earned milestone <M>.
  • transferCredit(<BOOLEAN>):
    • true: include courses with transfer credit; exclude others (grading basis code is TRN).
    • false: exclude transfer credits.
  • inProgress(<BOOLEAN>):
    • true: include in-progress courses (taken in the current term or just passed term; no mark recorded).
    • false: exclude in-progress courses.

These kinds of requirements are relatively easy to add. This list is expected to grow over time.

Best Practices

It is reccomended to use the clause minPassedUnits(<A>,<B>) whenever possible, instead of minUnits(<A>, <B> /\ passedCourses).

We are currently unable to add averages for Minors and Options.