Inspiration and Goal

Each semester, every college student has to endure the dreadful process of scheduling their next one. For us, as Pitt students, this process can be uniquely challenging. It’s easy to just choose some classes, generate a schedule and call it a day, but to ensure the schedule is optimized involves far more work--switching between maps to determine whether a ten minute break is long enough to walk from Sennott to Infosci, scouring RateMyProfessor to choose the best instructors, and keeping an eye on your credit total to maintain a manageable workload.

Our team’s goal was to optimize this process, and create a Gemini AI-powered model to deliver insights and advice to Pitt students like us who feel overwhelmed by scheduling their classes. RateMySchedule uses a combination of info pulled from your Pitt Schedule and supplemental user input to calculate ratings in three different areas of your schedule: class break time and feasibility, professor quality and credit workload.

How Did We Do It?

We built a full-stack web app called RateMySchedule using a combination of Flask and Python on the backend, and React, Javascript, HTML/CSS and Bootstrap on the frontend. RateMySchedule works by converting your .ics file downloaded directly from Pitt Peoplesoft to a .csv file, which is then parsed to identify your classes and the breaks between them, including length, origin building and destination. Then, you input the names of your professor for each class and the number of credits it’s worth. RateMySchedule immediately gets to work generating your schedule report card.

For class breaks, we first collected a list of all Pitt Academic buildings and their coordinates, then imputed these into the HERE Routing API to calculate the distance of a walking route between any given building coordinates. This distance was formulated into walking time, then subtracted from the length of the break. We scored each break on the feasibility to make it between the two classes within the time allotted by the schedule. For professor quality, we used an API from the popular site RateMyProfessor, and calculated an overall rating for professors by combining student feedback on metrics like professor rating, difficulty, and percentage of students who 'would take again'. Credit amounts were rated by totaling them and comparing typical credit loads to determine relative difficulty and manageability.

In generating the schedule report card, we implemented the Gemini API to read the data collected and rankings calculated for a given student, and generate personable, intelligent text to provide encouraging and helpful advice to students, as well as explain the reasoning behind their scores. Chat GPT was used to help us understand and handle errors, and assist with CSS styling.

Challenges

There were several challenging aspects of creating this app--we had to work around not having access to the Google Maps API by collecting Pitt coordinate data manually and calculating walking routes through the HERE Routing API instead. We also had to carefully tune our prompts for Gemini API, to ensure it was adding the most accurate and informative text possible to our report cards. This is an area of our project that could be expanded upon boundlessly--with the data we collected for the Gemini API, it could be capable of providing even more specific and helpful advice to users of RateMySchedule. Finally, our team faced the challenge of learning several new tools--for everyone, this was our first full-stack web app project, and our first time working with APIs, AI and advanced front-end development.

What We Learned

We are all incredibly proud of what we have accomplished, and feel more prepared as computer scientists to take on full-stack challenges, and build real, useable applications that we are excited to share with the world. We all learned so much about using Github collaboratively, Python, Flask, React, and every other tool that we implemented, no matter how challenging. The greatest learning experience of all was perhaps learning to work as a team to make our idea come to life, which despite the unique challenges it came with, brought us closer together and improved our collaborative coding skills tenfold.

What the Future Holds

We would like to further develop the AI capabilities of RateMySchedule to deliver even more personalized and detailed reports, possibly taking into consideration a student’s major, class difficulty, and ability to return home during longer class breaks. Implementing a Gemini API chatbot to ask follow-up questions on a schedule is also a goal. We would also like to access more advanced routing capability to make even more accurately timed walking routes for our users. Finally, we would like to adapt RateMySchedule, to be available for students at any college, not just Pitt students.

Share this project:

Updates