Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

coding "or" prerequistes #119

Open
backyardbiomech opened this issue Jul 30, 2021 · 2 comments
Open

coding "or" prerequistes #119

backyardbiomech opened this issue Jul 30, 2021 · 2 comments
Assignees
Labels
enhancement New feature or request help wanted Extra attention is needed question Further information is requested

Comments

@backyardbiomech
Copy link

I'm very interested to use this tool to analyze our current biology B.S. curriculum as we start to make a few tweaks. However, we have a number of "or" prerequisites. We have three groups of mid-tier courses, with four courses in each group. Students must take at least one course in each group for the major. Most upper division courses then have as a prerequisite any one of the courses from a group.

For example, let's take the Ecology and Evolution group. It has four courses we'll call:

  • BIOL 301
  • BIOL 302
  • BIOL 303
  • BIOL 304

Then there's an upper division BIOL 401, that has prerequisites:

MATH 370 and (BIOL 301 or BIOL 302 or BIOL 303 or BIOL 304)

I could make one "course" that just represents the group to fix the prerequisite problem, but then the individual courses would still need to be listed because after the one that meets the degree requirement, additional courses from the group can count as electives.

Is there any way to code "or" prerequisites in Curricular Analytics?

@haydenfree
Copy link
Member

Hi @backyardbiomech, thanks for taking the time to make this suggestion. We've had a few users reach out about this issue and here are our current thoughts:

For the purpose of computing the complexity of a curriculum, OR relationships are usually irrelevant. All that matters is that you place one of the two (four) courses belonging to the OR relationship into the curriculum so that the prerequisite structure is captured in the curriculum graph. Caveat: If the two (or more) courses involved in the OR relationship have their own prerequisites, and these prerequisites differ, then there is the potential that the course you choose to include in the curriculum will slightly change the overall curricular complexity. In this case, the complexity of the curriculum is actually a range, and not a single value. To determine the range, simply create a different curricula for each of the possible selections of the OR’ed prerequisites that lead to differing curricular complexities; the minimum and maximum curricular complexity values obtained will give you the curricular complexity range for the curriculum.

Given the caveat that there could be a range of complexity values we have considered adding support for representing requistes as a boolean formula using something like Julog. For example (Course A ∧ Course B) ∨ (Course C) or the example you provided, MATH 370 and (BIOL 301 or BIOL 302 or BIOL 303 or BIOL 304).

Perhaps the biggest challenge coming up with a way for users to easily input these requirements. Currently in our file format users enter the requisites as a semi-colon seperated list of course IDs under one of three types. One solution is to allow users to enter groupings like ((1) AND (2 OR 3)), but I suspect this would be a big pain point for many of our users.

@sprinkjm
Copy link

I'm interested in this idea as well; it complicates some analysis as well (e.g., how to calculate a course's complexity). A potential workaround for reading inputs might be 34;14(space)36;14 or (34;14),(36;14) for examples that require taking either 34 or 36 as a prereq. Then previous examples with default AND semantics are supported, and syntactic sugar can help absorb complexity.

That doesn't solve analysis and the 'or' semantics will also complicate visualization—but I'm interested in thinking about the outcomes on how to use it. The cartesian product of ORs will produce a full set of candidate scenarios, and selecting the lowest complexity among those might be a way to handle analysis.

@haydenfree haydenfree added enhancement New feature or request question Further information is requested help wanted Extra attention is needed labels Sep 29, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed question Further information is requested
Projects
None yet
Development

No branches or pull requests

4 participants