Skip to main content

Requirement

Overview

A 'Requirement' represents a requirement that can be satisfied. This is probably the most important concept in the API and also has the most cognitive overhead. Requirement is abstract and has multiple classes that derive from it to represent the various types requirements at UTD. An overview of these will be given here:

Course Requirement

A CourseRequirement represents a specific Course that must be taken to satisfy the requirement. This will represent the majority of requirements.

Section Requirement

A SectionRequirement represents a specific Section that must be taken to satisfy the requirement.

Exam Requirement

An ExamRequirement represents a specific Exam credit that must be received to satisfy the requirement.

Major Requirement

A MajorRequirement represents a major that a student must be enrolled in to satisfy the requirement.

Minor Requirement

A MinorRequirement represents a minor that a student must be enrolled in to satisfy the requirement.

GPA Requirement

A GPARequirement represents the minimum GPA a student must have to satisfy the requirement.

A ConsentRequirement represents the need for consent from a faculty member to satisfy the requirement.

Collection Requirement

A CollectionRequirement represents the need to have some number of requirements from a list of Requirements to satisfy the requirement. This is used to represent groups of requirements, "and" relationships, "some" relationships, and "or" relationships. Collections can contain other collections. Since this is probably the most complicated data structure, I will give some examples here.

For example, a CollectionRequirement can contain (inside options) the CourseRequirement CS 2305 and the CourseRequirement CS 2336 with the required property set to 2. This represents a requirement that requires both CS 2305 and CS 2336 (i.e. an "and" relationship) to be satisfied. If the required property was set to 1, only 1 of CS 2305 and CS 2336 would be required (i.e. an "or" relationship).

As a more real example, consider the prerequisites for the course CS 3305. It requires CE 2305 or CS 2305 or TE 2305 with a grade of C or better and MATH 2414 or MATH 2419. This would be represented as a CollectionRequirement with required set to 2. The two options are two separate CollectionRequirements: one CollectionRequirement has a required property of 1 with the options of the CourseRequirements CE 2305, CS 2305, TE 2305 each with a minimum_grade of "C". The other CollectionRequirement has a required of 1 and the two options being the two CourseRequirements MATH 2414 and MATH 2419.

Hours Requirement

An HoursRequirement represents the need to have taken some number of credit hours from a list of CourseRequirements to satisfy the requirement.

Choice Requirement

A ChoiceRequirement represents the need to choose to receive credit from a specific number of courses out of a list of possible courses. This is represented by a CollectionRequirement of CourseRequirements, of which you may choose to receive credit from only CollectionRequirement.required of the listed courses.

Limit Requirement

A LimitRequirement represents a limit on the number of credit hours that a course may be repeated for.

Core Requirement

A CoreRequirement represents the need to have taken a course fulfilling a specific core code, and potentially also for a minimum number of credit hours.

Other Requirement

An OtherRequirement represents some miscellaneous need to satisfy the requirement.

Properties

NameTypeDescriptionExample
typeRequirementTypeThe type of requirement this object represents.collection

CourseRequirement Properties

NameTypeDescriptionExample
typeStringThe type of requirement this object represents.course
class_referenceObjectIdA reference to the class required in MongoDB in the form of an id.ObjectId("61ebbb126e3659537e8a14d6")
minimum_gradeStringThe minimum grade required for the course to fulfill the requirement. An empty string indicates default behavior."C", ""

SectionRequirement Properties

NameTypeDescriptionExample
typeStringThe type of requirement this object represents.section
class_referenceObjectIdA reference to the section required in MongoDB in the form of an id.ObjectId("61ebbb126e3659537e8a14d6")

ExamRequirement Properties

NameTypeDescriptionExample
typeStringThe type of requirement this object represents.exam
exam_referenceObjectIdA reference to the exam required in MongoDB in the form of an id.ObjectId("61ebbb126e3659537e8a14d6")minimum_scoreNumberThe minimum score required on the exam to fulfill the requirement.70

MajorRequirement Properties

NameTypeDescriptionExample
typeStringThe type of requirement this object represents.major
majorStringThe major associated with the requirement.

MinorRequirement Properties

NameTypeDescriptionExample
typeStringThe type of requirement this object represents.minor
majorStringThe minor associated with the requirement.

GPARequirement Properties

NameTypeDescriptionExample
typeStringThe type of requirement this object represents.gpa
minimumNumberThe minimum GPA required to fulfill the requirement.3.5
subsetStringThe subset of courses that are in question when determining the GPA. If empty, this represents overall GPA."Major", ""

ConsentRequirement Properties

NameTypeDescriptionExample
typeStringThe type of requirement this object represents.consent
granterStringWho grants consent.Advisor

OtherRequirement Properties

NameTypeDescriptionExample
typeStringThe type of requirement this object represents.other
descriptionStringA description of what kind of custom criteria will be used to determine if the requirement is satisfied.
conditionStringThe condition given the criteria to determine if the requirement is satisfied.

CollectionRequirement Properties

NameTypeDescriptionExample
typeStringThe type of requirement this object represents.collection
nameStringA name for the collection to indicate what it holds. May be empty if not very applicable."Core Curriculum", "", "Major Requirements"
requiredNumberThe minimum number of required requirements necessary to satisfy the requirement.3
optionsArray - RequirementA list of all the options that can contribute to satisfying the requirement.[CourseRequirement1, CourseRequirement2, CourseRequirement3, CourseRequirement4, CollectionRequirement1]

HoursRequirement Properties

NameTypeDescriptionExample
typeStringThe type of requirement this object represents.hours
requiredNumberThe minimum number of required requirements necessary to satisfy the requirement.3
optionsArray - CourseRequirementA list of all the options that can contribute to satisfying the requirement.[CourseRequirement1, CourseRequirement2, CourseRequirement3, CourseRequirement4, CollectionRequirement1]

ChoiceRequirement Properties

NameTypeDescriptionExample
typeStringThe type of requirement this object represents.choice
choicesCollectionRequirementA CollectionRequirement of CourseRequirements, from which only CollectionRequirement.required courses can be chosen for credit.

LimitRequirement Properties

NameTypeDescriptionExample
typeStringThe type of requirement this object represents.limit
max_hoursNumberThe maximum number of credit hours that a course may be repeated for.3

CoreRequirement Properties

NameTypeDescriptionExample
typeStringThe type of requirement this object represents.core
core_flagStringThe core flag that a course meeting this requirement must fulfill060
hoursNumberThe minimum number of credit hours that a course meeting this requirement must fulfill.3