If you are in NUS, chances are that there might be a module that you are interested in and had planned to take, only for your hopes to be crushed when you realise that it is only offered in the other semester. We wanted a fuss-free alternative to NUSMods to be able to do this, and thus chose to build a Telegram bot as it is one of the most popular messaging applications used by NUS students. Most importantly, to help students set realistic expectations of the modules they can take in the semester.
What it does
- Add modules to a list and check if these modules that the user is interested in is available in the coming semester (in this case, AY 21/22, Sem 2) by pulling data from the NUSmods API. An error message will be returned if the module is not available.
- Ability to add multiple modules to the module list in one go for comparison later.
- View the total enrollment slots available for students (assuming no module pre-allocation and registration has occurred)
- Total MCs of the modules added to the list
- Check if modules in the list can be S/U-ed
- Surprise me function for the laughs
How we built it
We make design and engineering decisions that produces seamless user experience, incorporating rigorous checking to ensure that things are correct (e.g. modules you plan to take in the semester ARE indeed offered). We used a Telegram Bot API to design and implement our telegram bot, using the fruitstorebot from the pre-event workshop as a point of reference. We decided to make a Telegram bot as it is one of the most popular messaging applications used by NUS students.
Challenges we ran into
- Lack of technical knowledge and difficulty in comprehending errors and the NUSmods database initially, having not gone through the trial of fire/inducted by modules such as the legendary CS1010S.
- A team comprising of computer science illiterates (literally, we are from courses that do not teach computing knowledge, neither do we have any 🤪)
- Our goal of building a sorting algorithm to verify and assist timetabling didn't go as planned - we had stayed up overnight to come up with constraint satisfaction optimization code (Backtracking/AC-3), but ran out of time to debug it and make it fully functional.
Accomplishments that we're proud of
Being students from non-computing background/disciplines (our team comprises of students from the Science and Engineering faculty), we had limited working proficiency in Python and many other programming languages. We joined this hackathon as we wanted to see what we could do with our current knowledge, and are proud to be able to build a working prototype that fulfills our objectives.
What we learned
- Sleep is for the weak + increased respect for those in the field of programming (lots of patience is needed!)
- More functionalities of the Telegram bot API
- How to extract data from NUSmods API and present them in a Telegram bot
What's next for NUS Mods Planner Helper
- Assist students to choose lessons, tutorials, labs and examinations (if applicable) that minimizes clashes with other modules with the help of an algorithm that generates and optimizes valid timetables (without module clashes).
- Produce a visual timetable that can be downloaded by users once they are happy with their timetable plan