Thinking about the problems we face as UW students, we discussed the challenges of juggling degree requirements and prerequisites. Finding valuable electives requires sifting through the course calendar, which is huge and difficult to parse through. We wanted to find an easy solution to this recurring problem faced by university students by taking it from hours of strain to the click of a button.
What it does
When you upload your UW transcript, we parse through the image-recognition output to produce a list of courses you have taken. If we got it wrong, feel free to correct the output in the editable field. Once you confirm your list, we assemble a table of the courses you are eligible for based on the prerequisites you possess. We conveniently organize the catalog to suit the needs of Engineering students, who must complete a certain number of courses from list A (impact courses), list B (engineering economics courses), and list C (humanities and social sciences courses) (https://ugradcalendar.uwaterloo.ca/page/ENG-BASc-and-BSE-Complementary-Studies-Engineering). Select a course from the list to view its description. If you find a course you fancy, add it to your favourites so you can easily access it later.
How I built it
CourseCatchr is built with Android Studio in Java. We integrated PickiT, an Android library that returns real paths from URIs, to formulate correct file locations for the transcript images that can be added and processed. Further, we interacted with Firebase in two places. First, we accessed its image-recognition software so that you can upload your transcript instead of manually typing in each of your courses. Next, we used Firebase’s realtime database to store information about current elective courses for undergraduates in the faculty of Engineering at the University of Waterloo.
Challenges I ran into
Initially, we struggled with the learning curve of jumping into a new technology. Only half of our team was familiar with Android Studio, Java, and XML. However, armed with YouTube, Google, and each other, we persevered in this challenge. Similarly, none of us were at all familiar with Firebase. Despite this, we created a database, retrieved its data, and accessed the power of image-recognition technology. Everything you see here, we learned throughout the extent of Hack The North. Lastly, we struggled with updating an AlertDialog after removing an item from the list it displayed. Exiting, then re-entering the dialog does update the list, but it would have been great to manage this immediately after removing the item. As such, this remains an improvement on the app in the future.
Accomplishments that I'm proud of
As mentioned, this team entered this hack with little knowledge of the technologies we used. Now, we know how to connect and read information from a Firebase database, and access image-recognition technology. That’s a stark contrast between then and now! Further, we were able to develop algorithms for data derived from different sources, and used functions to get us one step closer to where we needed to be. This includes parsing through output we cannot control to get it into a desired form.
What I learned
Teamwork makes the dream work! Staying in touch with the team is vital in a project setting. Not only does it keep things on track, but it helps everyone get support in problems they are experiencing and ways to move forward in implementation. We now know how to solve problems with the help of the Internet. YouTube and Stack Overflow saved us; without these resources, app development would have been impossible. As a result, we know how to navigate Android Studio, as well as implement a bunch of the features it provides.
What's next for CourseCatchr
Although CourseCatchr is functional as is, there are additional features that would allow for a better and more enriched user experience. First, expanding the capabilities of the database to cater to other faculty requirements would further popularize the app because it automatically opens it up to more students. This could be done by parsing the student’s program using OCR to use later. Second, we could implement a smarter list, where we prioritize electives based on the student’s past courses. This could potentially increase the likelihood a student finds a course they are interested in while minimizing the time they spend searching, which was the goal of CourseCatchr all along.