Inspiration
Creating a university course plan can be difficult, especially for a new student. There are a few units that a student needs to take in order to complete their course depending on their specialisation or major, and there are even more units they can choose from as their electives. Some units have prerequisites or prohibitions, and some units only run in semester 1 or 2. Researching what units are required for a course and what semesters they are available in, as well as figuring out what order to do them so that prerequisites are met is a tedious process. While there can be course maps available from the university, if people wish to do particular units as electives it is even more tedious and time-consuming to plan out their course.
What it does
Our solution is a web application that allows students studying Bachelor of Computer Science at Monash to automate creating their course plans. Users can input their specialisation and what electives they would like to take, and then the website generates a valid course map that ensures the user completes the requirements for their course and the units they wish to do.
How we built it
The website is built using TypeScript, Svelte, and Tailwind. Scraping the unit data from the handbook was done in TypeScript and Node.js.
Challenges we ran into
The most significant challenge we ran into was generating the course plan/schedule. It was quite difficult to come up with an algorithm that would efficiently generate a plan that would satisfy all the requirements and constraints in a reasonable amount of time. Another challenge we faced was our project structure and sharing types across the different things our team members were working on. A fair bit of code was required to convert objects from one type to another as we sometimes defined our own similar but slightly different types to represent the same thing.
Accomplishments that we're proud of
We are proud that we were able to create a working algorithm to generate the course schedule.
What we learned
One thing we learned is to define all shared types at the beginning so that all team members can share types.
What's next for Course Plan Generator
We could extend this project by supporting a greater range of units and courses.
Built With
- node.js
- svelte
- tailwind
- typescript
Log in or sign up for Devpost to join the conversation.