There were a lot of times when we'd spend a couple hours fiddling with AntAlamanc and trying all these different combinations of different classes and their different lectures and discussions. We thought it was really frustrating and wished that there was some application that could do it all for us. With three of the four creators being commuters, we all understood the struggle of creating a convenient schedule that would minimize our time spent on campus, so we were eager to try our hand at an application that would help us.

What it does

The aim of Commutr Course is to make the UCI commuter experience easier. Users of the website will input three classes by department name and course number and will then receive an optimized schedule of the classes and its co-courses, if applicable. Our algorithm optimizes a schedule based on the least amount of days spent on campus, and the number of hours on campus per day, and returns a list of potential schedules sorted in order from most satisfiable to least.

How we built it

Commutr course was built with React and deployed on Github pages. The user interface employs a sequence of input boxes, buttons, CSS flexbox, Javascript, and integration with backend elements. Behind the scenes lies multiple calls to the PeterPortal API using Axios. After the user clicks the “get schedule” button, three calls are made to PeterPortal, one for each selected course. The JSON data is then processed into a nested array of dictionaries specifying lectures and their corresponding discussions and labs. From this data, we then find all of the possible schedules that can be made with these three classes using an algorithm that employs combinations and Cartesian products. We then further refine these results by optimizing for the minimum number of days on campus and the minimum times between the first and last class each day. Finally, three more calls were made to Peter Portal to display the optimized schedule.

Challenges we ran into

On the first day and the first couple hours of the second day, we ran into a lot of issues involving React. We had to restart constantly and create a new repository for our work about 4 or 5 times. This ended up taking a lot of our time so we were always in a time crunch, which subsequently led to room for lots of mistakes that would take up more of our time. The logical errors in our algorithm built up and were ultimately our biggest challenge because it reached a point where we knew what was wrong but didn’t have enough time to fix it.

Accomplishments that we're proud of

This hackathon project was a chance to step out of our comfort zones and not only learn something new but immediately try to implement it in a working solution. For example, Maithy came in knowing nothing about JavaScript and by the end of it was comfortable with writing functions, making API calls, and working with arrays and dictionaries. Audrey found interest in web design after a Fellowship and helped build a flawless frontend in JS and CSS. Teresa is proud of learning how to call and process data from APIs, and even building algorithms from that information. Mia is proud of her beautiful user interface designed by herself on Figma with a seamless color scheme, animated buttons and icons, and minimalist design.

What we learned

The most important lesson we learned was that, even if we are on a time crunch, cutting corners and failing to test certain aspects of the project as we go along is detrimental in the long run. With the thirty-six hour time limit, we were more concerned about producing output than building a strong foundation for our project, especially as it concerns the sorting algorithm. Additional items:

  • we don’t like all nighters
  • that it is impossible to sleep on a couch
  • that promising to shower when getting home at 2 am will not be fulfilled…

What's next for Commutr Course

Given more time, we would improve our data structure and sorting algorithm to better handle the wide variation among courses. When processing the API data, we made several assumptions about the course data that only held true for a limited number of courses. As for expanding the functionality of Commutr Course, an important feature to include is allowing the user to enter as many courses as they would like. They would provide a unit cap that would determine how many of those courses would appear in their optimized schedule. We could als link to the user’s DegreeWorks to check and provide information about prerequisites and corequisites. The user could also add preferences for morning or evening classes and their high priority classes that quarter or filter their schedule to avoid certain times such as morning and evening rush hours. We would also like to include an additional page of “commuter hacks'' that displays useful information such as gas prices, routes, and carpool options.

Built With

Share this project: