Garrett Burroughs

Schedule Advisor

A website where UVA students can create and get advising on their schedules

Github Link

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:

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