What are the prereqs for EECS 336? 356? What depths/breadths do these courses count for? What are my CS major requirements? How do I declare a major?
These are just a few of many questions all prospective CS majors have. Unfortunately for us, this information is not centralized, and certainly not available in a convenient format (real Ian is probably way too busy to answer each and every one of our questions). Pocket Ian aims to address this issue by providing an intuitive, easy interface for obtaining such information.
What it does
Pocket Ian is a messenger chatbot that answers questions related to the Northwestern CS curriculum, such as "What are the prerequisites for ?" "What classes does teach?" "Is available next quarter?" Using Pocket Ian, you can get a quick, succinct, and accurate response to all your CS curriculum related queries.
How we built it
We setup a basic Facebook messenger chatbot running on Heroku, and scraped a OneNote page with EECS curriculum data to use as our database. Working from a general list of questions we wanted Pocket Ian to answer, we were able to use a few clever regex tricks to parse input questions and match key terms to our question database. After identifying important arguments in the question, such as professor and class number, we were able to match the questions with our existing database and retrieve the correct answer. The answer was then formatted and sent back to the user.
Challenges we ran into
Where do we even begin? One challenge was coming up with the correct regex which would also account for spelling mistakes and typos. In the end, we decided to use regex in conjunction with a python autocorrect package. In addition, scraping/cleaning data and choosing the format for the data was another challenge. We chose to represent each course as a JSON/nested dictionary with course numbers as keys, and other information as sub-fields (title, quarters offered, professor, prereqs, etc.).
Accomplishments that we're proud of
Getting the whole thing to work. There were a lot of separate components, each of which needed to work flawlessly for Pocket Ian to do its job.
What we learned
Other than the technical aspects of Pocket Ian's implementation, like the regex, data scraping/representation, and question matching, we definitely learned how important collaboration, teamwork, and systematic testing/debugging were. With so many moving parts, it was important we made sure each worked properly before putting everything together (or nothing would have worked).
What's next for Pocket Ian
Right now, Pocket Ian has a few issues - it can only return queries shorter than a certain length (hence can't give the full list of, say, all courses under the Systems breadth). In the future we would like to add contextual analysis to Pocket Ian by storing previous queries. We would also like to improve sentiment analysis and have a better system for matching the input question to one of the questions in our database. Lastly, we want to turn Pocket Ian into a scheduling tool that can build your curriculum based on your specifications.