Links
-
Live Demo: https://schedule-advisor.herokuapp.com/
Summary
Schedule advisor is a project that I built for my Advanced Software Development Techniques class along with four other students. This project aims to streamline the process of getting schedule approval from advisors, a task that currently is mundane and tedious at its best, and a painstaking headache at its worst. Schedule Advisor pulls data from our schools Student Information System (SIS) and presents it in a much more digestable manner, offering tools like detecting time conflicts, allowing students to easily add lab and discussion sessions, as well as a course recommendation feature. After a schedule is built using the tools, the student can easily submit it to their advisor for review, and get timely feedback on it!
This project was also given the title of best project that semester (out of over 40 projects) by both the professors that taught the course.
The project has various features including:
- Pulling data from the UVA Student Information API on a nlightly basis to ensure fast and extensible course search times
- Various course search features
- The creation and management of multiple schedules
- Credit overload limits for the different schools at UVA
- Checking for schedule conflicts
- A course recommendation algorithm based on similar schedules that other students have made
- The ability to submit the schedule to your advisor, and get feedback on it
Languages Used: Python, HTML, CSS, Javascript
Technologies Used: Django, Bootstrap, Heroku
Takeaways
This project taught me a lot about creating software. Not only did this project deepen my technical skills, it also greatly increased my soft skills, as it required collaborating with four other students over the course of a semester. Each member also had their own team role which can be seen in the Contributors section
Technical Takeaways
This project taught me a great deal about working with an MVC framework. Throughout this project, we had to thoughtffully design our systems, so that the data was decoupled from the views to allow for easier addition of new features and a cleaner development experience in general. This project strengthened my understanding of ORMs, url routing, request handling, and view templates. I came away with a strong understanding of how the Django framework operates, but also how to design web systems in general. I also gained skills deploying to a “production enviornment” with a CI/CD system that ran an automated test suite and deployed the project to Heroku on push to main (master).
“Soft-Skill” Takeaways
As mentioned, this project was a huge collaboration effort. Throughout the duration of this project, our team had bi-weekly sprint meetings in which we had to meet certian goals to satisfy “user requirements”. In the associated course, we learned about the software development lifecycle as well as Agile development. In this project, we went through every step of the software development lifecycle, from requirement elicitation, to design, to implementation, to delivering the final product (as well as maitanence after the fact).
This project also gave me more experience working in a larger team. Our team used the github issue tracker to keep track of everything that needed to be done, and divied up work from there. Members created feature branches to implement changes (or fixes) which were then peer reviewed by other members before being merged into the main branch. We were able to collaborate mostly in an ad hoc fasion (using messaging channels like discord and group chats) to get most work done, as well as having longer in person meetings upfront to talk about longer term goals and larger design objectives. Overall this was a great experience to work with other great students at my institution to create a product that we were all satisfied with.
Demo
Contributors
- Jacob Hobbs (fdu5ff) - Scrum Master
- Garrett Burroughs (me) (gab8un) - DevOps Manager
- Christian Bliss (cjb7wm) - Requirements Manager
- Christopher Johnson (vjx9mh) - UI/UX Designer
- Jiaji Ma (yjk8jd) - Testing Manager