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.html
on 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 withcid
in 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