- Add `similarity(c1, c2)` : Compute how similar curriculum `c1` is to curriculum `c2`. The similarity metric is computed by comparing how many courses in `c1` are also in `c2`, divided by the total number of courses in `c2`.
- Add `homology(curricula; <keyword arguments>)` : Given a collection of `Curriculum` data objects as input, provide a visulaization that shows how similar each curriculum is (in terms of shared courses) to every other curriculum in the collection.
- Add `dead_end(curric, prefixes)` : Finds all courses in curriculum `curric` that appear at the end of a path (i.e., sink vertices), and returns those courses that do not have one of the course prefixes listed in the `prefixes` array. This data is also added to the metrics dictionary on the `curric` object.
- Fixed bug in `all_paths()` : Will result in a change to metrics.
- `optimize_plan(curric, term_count, min_cpt, max_cpt, obj_order)` now supports `toxic_score_file::String` as a keyword argument. This should be a file path to a toxicity scores CSV.
- Adds a `metadata` dictionary to every data type. As the name implies this will allow for metadata to be stored on data types, such as identifying a course as a core.
- Begins testing CodeCov implementation
- Adds tests for `similarity`, `homology`, and `dead_end` functions.