Course requirement tracker to make sure you're on track to graduate :)
uwreq/
├── backend/
│ ├── course-data/
│ │ ├── course_offerings.csv
│ │ ├── courses.json
│ │ └── csv_to_json.js
│ └── requirements/
│ ├── BCS Computer Science.json
│ ├── BCS Data Science.json
│ ├── BMath Computer Science.json
│ ├── BCFM Computing and Financial Management.json
│ ├── breadth.json
│ └── depth.json
├── public/
│ └── styles/
│ └── main.css
├── routes/
│ └──uwflow.js
├── utils/
│ ├── checkMajorProgress.js
│ └── uwflow.js
├── views/
│ ├── layout.ejs
│ ├── homepage.ejs
│ ├── about.ejs
│ ├── contact.ejs
│ ├── features.ejs
│ └── result.ejs
├── .gitignore
├── index.js
├── package.json
├── package-lock.json
└── README.md
git clone https://github.com/jovitta-seb/uwreq cd uwreq npm install nodemon index.js
This project uses open, public course data from the University of Waterloo's undergraduate calendar (https://uwaterloo.ca/academic-calendar/undergraduate-studies/catalog#/courses)
If the calendar is updated, make necessary changes to the csv and regenerate JSON by running csv-to-json.js
Course sentiment data taken from UWFlow https://github.com/UWFlow/uwflow/releases/tag/v1.0.0
Each program is represented as an object containing:
{ program: "...", // excluded_courses: [], // optional — courses that cannot be counted towards the degree required_courses: [], elective_requirement: [], additional_requirement: [], // optional — degree specific communication_requirement: {}, breadth_requirement: {}, depth_requirement: {} }
- all_required: All listed courses must be completed
- one_required: Any one of the listed courses must be completed
- n_required: Given count of listed courses must be completed
- range_required: Complete the specified number of courses from a course range (e.g., CS340-CS398) and/or level range (e.g., CS6, CS7)
- one_group_required: Atleast one of the nested groups must be satisfied
- Course ranges: CS340-CS398 means any CS course numbered 340 through 398
- Level ranges: CS6/CS7 means any CS course at the 600-level/700-level
- Category ranges: Any course in a specific category (ex: ACTSC, STAT, etc)