Top Level
The degree audit program kicks off a degree audit by automatically generating a top-level plan specification that says what to include using the include mechanism discussed earlier.
The program stars with the following template:
all of "Audit for <UWID>: <LASTNAME>, <GIVEN_NAMES>" {
# Global course specifications
allCourses = ^([A-Z]+)_(([0-9]+X*|XXX|1X000)[A-Z]*)
# Insert includes here for each plan
}allCourses defines a starting course set of all the courses the
student has taken. This could probably get away with just ^[A-Z]+_.*
but the expression given corresponds to “real” courses in the database
and excludes some anomolies. More about what these characters mean in Course Sets.
Into this template are inserted include statements for each of the
student’s plans. There are three cases to distinguish.
Plans with no program
The simplest are plans that do not link to a program, minors being the most common. They result in an include such as
all of using all allCourses {
include(baseCourseDefs,1201, uw.u.sci.cred.biol,
uw.u.sci,
uw.u)
include(BIOLMIN, 1201, uw.u.sci.cred.biol, uw.u.sci.cred.biol)
}The first include uses a standard name baseCourseDefs and the include search mechanism
to any faculty-specific course set definitions. In this example, if uw/u/sci/baseCourseDefs-<TERMID>.plan (for some suitable term) exists, those definitions will be loaded. If they do not
exist, then the defaults in uw/u/baseCourseDefs will be loaded. The part of this includes file that says uw.u.sci.cred.biol is NOT a place that will be searched, it is mearly the plan group.
The second include loads the plan specification itself. Both of these are contained in
an all of requirement to establish the proper scope for the course definitions.
Plans linked to a program
The most common cases are plans linked to a program. This includes the student’s “Plan10”. They result in a somewhat more complicated include. Here’s an example:
all of "SCIH" using all allCourses {
include(baseCourseDefs,1201, uw.u.sci.bac.scidean.other,
uw.u.sci,
uw.u)
include(SCIH, 1201, uw.u.sci.bac.scidean.other, uw.u.sci.bac.scidean.other)
( include(USC25, 1201, uw.u.sci.bac, uw.u.sci.bac)
)
}Again, the first include provides an opportunity to establish some faculty-specific
course definitions.
The second include is for the plan specification for SCIH. Inside that specification, it
will include the associated USC25 program requirements. In other words, the
resulting structure will be something like:
all of "SCIH" using all allCourses {
sci = ^(BIOL_|CHEM_|EARTH_|MNS_|PHYS_|SCI_).* - ^SCI_237
# Other Science-specific course definitions
all of "SCIH plan requirements" {
# Requirements from uw.u.sci.bac.SCIH-1189.plan
all of "USC25 program requirements" {
# Requirements from uw.u.sci.bac.USC25-1189.plan
}
}
}Note
These includes are automatically generated. No need to write these yourself, although understanding at a high level will help you understand how degree audit works.
Specializations
The third case is a student with a specialization. They are handled differently
in the triple-counting rule and so are included within the associated plan.
The following is automatically generated for a real Arts student with
two majors, each having a specialization, plus a minor. Some comments have been
added to explain.
all of "Audit for 20654079: Price, Calvin" {
# Global course specifications
allCourses = ^([A-Z]+)_(([0-9]+X*|XXX|1X000)[A-Z]*)
# The first major (PSCI16HC), plus a specialization (PSCBUS16SP) and the
# program requirements (UAR15).
all of "PSCI16HC" using all allCourses {
include(baseCourseDefs,1179, uw.u.arts.bac.psci,
uw.u.arts,
uw.u)
include(PSCI16HC, 1179, uw.u.arts.bac.psci, uw.u.arts.bac.psci)
( include(PSCBUS16SP, 1209, uw.u.arts.cred.psci, uw.u.arts.cred.psci),
include(UAR15, 1171, uw.u.arts.bac, uw.u.arts.bac)
)
}
# A second major, also with a specialization and repeating the program
# requirements.
all of "ECON16HC" using all allCourses {
include(baseCourseDefs,1201, uw.u.arts.bac.econ,
uw.u.arts,
uw.u)
include(ECON16HC, 1201, uw.u.arts.bac.econ, uw.u.arts.bac.econ)
( include(ECONFN16SP, 1209, uw.u.arts.cred.econ, uw.u.arts.cred.econ),
include(UAR15, 1171, uw.u.arts.bac, uw.u.arts.bac)
)
}
# A minor.
all of using all allCourses {
include(baseCourseDefs,1209, uw.u.arts.cred.psci,
uw.u.arts,
uw.u)
include(INTTRADMIN, 1209, uw.u.arts.cred.psci, uw.u.arts.cred.psci)
}
}Pro Tips
If you wish to know how a plan you are writing is structured, add the clause --pprint top when running your degree audit from the terminal. This will display the top level to you.