Curricular Metrics
CurricularAnalytics
— Module.The curriculum-based metrics in this toolbox are based upon the graph structure of a curriculum. Specifically, assume curriculum $c$ consists of $n$ courses $\{c_1, \ldots, c_n\}$, and that there are $m$ requisite (prerequisite or co-requsitie) relationships between these courses. A curriculum graph $G_c = (V,E)$ is formed by creating a vertex set $V = \{v_1, \ldots, v_n\}$ (i.e., one vertex for each course) along with an edge set $E = \{e_1, \ldots, e_m\}$, where a directed edge from vertex $v_i$ to $v_j$ is in $E$ if course $c_i$ is a requisite for course $c_j$.
CurricularAnalytics.blocking_factor
— Function.blocking_factor(c::Curriculum, course::Int)
The blocking factor associated with course $c_i$ in curriculum $c$ with curriculum graph $G_c = (V,E)$ is defined as:
where $I(v_i,v_j)$ is the indicator function, which is $1$ if $v_i \leadsto v_j$, and $0$ otherwise. Here $v_i \leadsto v_j$ denotes that a directed path from vertex $v_i$ to $v_j$ exists in $G_c$, i.e., there is a requisite pathway from course $c_i$ to $c_j$ in curriculum $c$.
blocking_factor(c::Curriculum)
The blocking factor associated with curriculum $c$ is defined as:
where $G_c = (V,E)$ is the curriculum graph associated with curriculum $c$.
CurricularAnalytics.delay_factor
— Function.delay_factor(c::Curriculum, course::Int)
The delay factor associated with course $c_k$ in curriculum $c$ with curriculum graph $G_c = (V,E)$ is the number of vertices in the longest path in $G_c$ that passes through $v_k$. If $\#(p)$ denotes the number of vertices in the directed path $p$ in $G_c$, then we can define the delay factor of course $c_k$ as:
where $v_i \overset{p}{\leadsto} v_j$ denotes a directed path $p$ in $G_c$ from vertex $v_i$ to $v_j$.
delay_factor(c::Curriculum)
The delay factor associated with curriculum $c$ is defined as:
where $G_c = (V,E)$ is the curriculum graph associated with curriculum $c$.
CurricularAnalytics.centrality
— Function.centrality(c::Curriculum, course::Int)
Consider a curriculum graph $G_c = (V,E)$, and a vertex $v_i \in V$. Furthermore, consider all paths between every pair of vertices $v_j, v_k \in V$ that satisfy the following conditions:
- $v_i, v_j, v_k$ are distinct, i.e., $v_i \neq v_j, v_i \neq v_k$ and $v_j \neq v_k$;
- there is a path from $v_j$ to $v_k$ that includes $v_i$, i.e., $v_j \leadsto v_i \leadsto v_k$;
- $v_j$ has in-degree zero, i.e., $v_j$ is a "source"; and
- $v_k$ has out-degree zero, i.e., $v_k$ is a "sink".
Let $P_{v_i} = \{p_1, p_2, \ldots\}$ denote the set of all directed paths that satisfy these conditions. Then the centrality of $v_i$ is defined as
where $\#(p)$ denotes the number of vertices in the directed path $p$ in $G_c$.
centrality(c::Curriculum)
Computes the total centrality associated with all of the courses in curriculum $c$, with curriculum graph $G_c = (V,E)$.
CurricularAnalytics.complexity
— Function.complexity(c::Curriculum, course::Int)
The complexity associated with course $c_i$ in curriculum $c$ with curriculum graph $G_c = (V,E)$ is defined as:
i.e., as a linear combination of the course delay and blocking factors.
complexity(c::Curriculum, course::Int)
The complexity associated with curriculum $c$ with curriculum graph $G_c = (V,E)$ is defined as:
Degree Plan Metrics
... coming soon ...