About Circles
For setting up Circles locally, please follow the instructions provided on the GitHub README’s
Introduction
Circles is a degree planner for UNSW students aiming to provide an easier way to plan when to take their courses and explore potential courses available and review their degree progression. We have 3 pages which aim to achieve our mentioned goals: Course Selector Page, Term Planner Page and Degree Progression Page.
If you have any questions, please contact either @Hussain Nawaz (Unlicensed) or @Leonardo Fan (Unlicensed).
UNSW Handbook Scraper
In order to get the data for the courses, we scrape the UNSW handbook. However, the enrolment conditions for courses are written in plain English. We use several tricks to process the condition text, mainly involving regex. After this data is cleaned up and organised, it is ready to be used.
Data Processing
(Currently, we simply store this data locally in plain text. In the future, it will be stored on the cloud and loaded as needed).
The data required for each program is different (the courses for SENGAH are completely different to the courses for ACTL for example). This is why we must process the data again specifically for each program. This involves several things, some of which are:
Making manual fixes to the data (e.g. spelling mistakes, program specific changes, etc)
Organising any other information which might be useful (such as a list of courses required by this program, etc)
Flowchart + Progression Checker
The flowchart is very interactive and allows people to click on courses to select/unselect them. Selecting a course unlocks other courses. Unselecting a course locks courses. Due to the complex nature of UNSW enrolment conditions, this step is very algorithm heavy and requires constant communication with the Webscraping team.
At UNSW, you must meet certain requirements in order to complete your program. For example, in SENGAH, you must complete all your level 1, 2, 3 and 4 core courses, 36 units of Discipline Electives, 168 total units, etc. We track this using the progression checker.
Tech Stack | Scraper
Python is used for web scraping and interpreting course conditions
Tech Stack | Frontend
React-JS Framework
Redux for state management
Ant Design component library
Tech Stack | Backend
MongoDB database
FastAPI to build our APIs