An interactive visualization helping University of Calgary staff and students better understand the Computer Science degree.
Interested in the design process? Read the case study
- Downloaded: Run
cpscnetwork.htmlon Google Chrome - Online: Go to http://misscarriemah.github.io/CPSC-Degree/ - optimal on Google Chrome & a desktop
I created a data set based on relevant courses from January 2016:
- Undergraduate SENG courses
- Undergraduate CPSC courses except for CPSC 203 as BSc students receive no credit
- Courses in the Computer Science degree except outside the CPSC field, irrelevant Honours & MATH (e.g. PMAT 527), ENCM & EENG, and Scientific Computation (which was undergoing review)
- Excluded graduate courses and pre-requisite high school courses
- Selected the last 4 academic years for Fall, Winter, Spring, and Summer courses between Fall 2012 and Spring 2016 (CPSC, MATH, PHIL)
- Classified courses as optional if a pre-requisite is met with class A or B and required otherwise
- Converted course links to conjunctive normal form for consistent relationships
Interested in using the database? Read more about it here:
There are two main structures in the "cpscgraph" variable
"courses" - first entry is a nil placeholder to render the graph properly
cid: integer, unique identifier for the nodefaculty: string, four-letter faculty relevant to CPSCnum: integer, course numbercnum: string, combination of faculty + numcname: string, full course nameconsent: string, where you'll need consent from (Department of...)credit/lecture/lab: integer, corresponds with their namesdid: integer, unused - see details.js
"links" - used as relationships for courses
source/target: integer, corresponds withcidin courses structurevalue: integer, helps create the links (you're spot on)0/1: source is a prereq for target, 0 has an "AND" relationship and 1 has an "OR" relationship2/3: source is an antireq for target, 2 has an "AND" relationship and 3 has an "OR" relationship4/5: source is recommended for targe, 4 has an "AND" relationship and 5 has an "OR" relationship
There are three structures
"course2stream" - connects courses & concentration stream
cid: integer, corresponds with cid in cpscgraph.coursescdid: key to degDetails structure
"degDetails" - list of concentrations (0 = none)
cdid: integer, unique key with course2streamtype: string, for concentration name
"availabilityMain" - connects courses & when courses were offered (should be called course2availability for consistency)
cid: integer, corresponds with cid in cpscgraph.coursesaid: string, key to availabilityDetails structure
"availabilityDetails" - semester & year when courses were offered in the past
aid: integer, unique key with availabilityMainstartstamp: integer, unique number used for error handling with the filters (cannot select years that aren't a range)semester: string, for semester name