Inspiration

The Computer Science course offerings consist of a singular path at the beginning. At the more advanced level, courses prerequisites become more diverse but at the same time grows in number. If a student were to complete the CS major within a limited time and at the same time take as many courses that he/ she is interested in as possible, the planning takes a lot of work. One of our members, Iris, failed 121 on her first semester. She soon realized that her progress is behind and that failing a bottleneck course like this makes it hard to catch up. Being a music major and an honors student at the same time, she also has to make room for her other classes and honors independent study. She therefore had to spend a lot of time calculating credits, keeping track of prerequisites, and predicting what courses will be offered in the next semester.

What it does

We made a full stack web application that allows users to plan out their course for four years. On the website, students can search for classes, intuitively add and move courses between semesters and get detailed directions on how to satisfy their major requirements. Our web application highlights the following functions: Easily draft out plans with the “drag-and-drop” feature. Courses can be dragged between semester boxes and also directly from the search bar. Upon entering the semester box area, the border will light up green or red, indicating whether the modification is valid or not. For example, if a user hovers CS220 over a semester without having CS187 in his/ her past semesters, the border of the semester will light up red. Course Recommendations. We developed an algorithm that recommends courses to students given the courses that he has or has not taken.

How we built it

We chose the MERN(MongoDB, Express, React, Node) Stack for our full stack web application. Our data is scraped from the university course websites using Beautifulsoup, and processed into a MongoDB database via python scripts. Our web application is then deployed with AWS Amplify with a custom domain name from Google Domain. The backend API is hosted by heroku.

Challenges we ran into

There was a lot of web scraping to collect course data from different departments when they all have different formatting. At a higher level, we faced design problems on how to represent the prerequisites and efficiently store the and/or prerequisite relationship. Processing the web-scraped data into a MongoDB database also unexpectedly proved to be a challenging task. For the backend, the main challenges include designing an algorithm to properly recommend courses and to check whether a course movement throughout the semesters produces a valid schedule. As for the frontend, implementing the drag and drop proved to be a challenge, as we expected. Nevertheless, we were able to get most of it working which we are proud of.

Accomplishments that we're proud of

We are proud to design, build, and deliver a full stack web application as a group. Each member contributed according to their forte. Anish learned how to host a web API responsible for user authentication, get/set attributes and other aiding functionalities; Iris learned React on the spot and wrote her first lines of frontend code; Ye Min learned how to coordinate with a backend engineer as a frontend engineer. We think that we have created a product that can truly help others.

What we learned

We learned how to host an Express.js API using Heroku. We also explored AWS Amplify.

What's next for Course Planner

There are a lot of features that we wanted to implement but didn’t have enough time to do: Add the requirement list (~ BS Tracking Form) to our website Fine-tune our recommendation algorithm, possibly introducing some machine learning. Add a workload indicator for each semester given student feedback/ information online. Link the instructors to their personal page, or websites like ratemyprofessor Automate the web scraping process, keep track of past course offering and predict course offering in the future.

Share this project:

Updates

Submission history