Description:

Each semester, students spend countless hours meticulously crafting their schedules for the next round of courses. Some will even plan out multiple semesters in advance, making sure they're set to graduate on time! But what if you could have someone else plan those courses for you... instantly? Gradu8 will generate a road map of your entire college career, based off of a few user preferences (major, concentration, desired credits per semester, etc.). Students can then update this map throughout their college careers, adding whatever minors or double majors they might have picked up along the way. Welcome to a new way to plan. Welcome to Gradu8.

Inspiration:

We were frustrated with the amount of times we had planned and re-planned our college careers, so we wanted something to do it for us!

What it does:

It searches through a graph of UMass classes and tries to find the quickest way to graduate based off of a couple of user-inputted attributes!

How we built it:

We used a combination of Python and Flask for the backend and the frontend. The frontend was way more HTML/CSS heavy, whereas the backend was mostly Python code! (This suited the different strengths of our team members pretty well!) BACKEND: The Computer Science course curriculum was built into a graph, which we then wrote an algorithm to search as fast as possible. FRONT END: Using HTML and CSS, we created empty fields which we later populated with data by communicating with the Flask backend.

Challenges we ran into:

There were... a lot! Here are a couple: - Not having access to a large database of classes (ala Spire). We had two choices: either we had to write some sort of web-crawler that would populate our own database of classes, or we could just carefully handcraft a model from a small selection of classes. (Since we all were pretty familiar with the Computer Science curriculum, we chose that one!) - Communicating the needs of each subteam (backend, frontend, database) to eachother! We tried to solve this with a ton of instruction to eachother (check out "dictionaryInstructions.txt" in the GitHub repo for an example of some of our documentation) and a TON of whiteboard drawings. There were a lot of moving pieces that weren't able to test until everything was done, and we needed to do all of that integration preeeetty fast. - Testing was another rough part! We couldn't really test the frontend's communication with the backend until the search algorithm was done, and we couldn't test the search algorithm to the fullest degree until we had finished the database! So, testing came in important waves, each a little more tense and down-to-the-wire than the last. - Sleep! (Or the lack thereof!)

Accomplishments that we're proud of:

- Creating an accurate graph for the Computer Science course curriculum - Writing an algorithm to search through this graph to find the quickest path to graduation - Crafting a slick, user-friendly front-end UI for the website - Thinking of a full "future-feature" list to plan out the app's potential - Splitting the team responsibilities threefold (into disparate "front-end", "back-end", and "database crafting" teams) - Being able prioritize taken courses, major concentration, and "course threshold" into the searching method

What we learned:

A *ton.* - We wanted to flex the skills we all had as a team, and be able to create a small vertical slice of our larger idea. I think we all learned a ton about how each of the pieces interacted with eachother, as well as the flow of project creation from start to finish. - A lot of us learned how to use Flask! (Some of us didn't even know how to even begin *touching* a front-end, but we got to experience its creation the whole way!) - We learned that you can (theoretically) graduate from UMass CS within 6 semesters. 5, if you're a smart cookie who came into college with a bunch of AP credits! (The big barriers to nailing a semester like this would be the course scheduling of UMass, but there's a lot of variables you can take into consideration for calculating your courses that'd help account for this.) - We learned a couple of random tidbits about the CS course graph and traversing it, including: i) You can take a 400-level course (490P) in your third semester if the courses are set up right ii) You don't need to crush yourself with 19-credit semesters - if you came into college with no college credit, you could take 16-17 credit semesters, specify a concentration, *and* graduate a semester early. There's so much more - this experience has been crazy fun for all of us, and we've learned an incredible amount!

What's next:

We have a lot of planned features, including: - Including more colleges outside of Computer Science - Supporting double major and minor options - Automating the generation of the course database (either with a web crawler, *or*, if we somehow got access to it, Spire's course graph itself) - Search heuristics and constraints (like conditions common to CompSci students' preferences, i.e. "I don't want to take 240 and 250 in the same semester") - Integration with RateMyProfessor to learn more information about each course and what might be best to take Overall, we anticipate that we could make these schedules smarter, and more customizable. This could be used as a tool for academic advisors (and integrated into a database like Spire), or put straight into the hands of students. The possibilities are really exciting!

Built with:

Computers, Red Bull, and determination! (And Python and Flask.)

Prizes we're going for:

HAVIT RGB Mechanical Keyboard

$100 Amazon Gift Cards

Hustle Award

Grand Prize

Misfit Shine 2

Team Members

Nathan Duarte, Sharvil Kekre, Rishabh Srivastava, Kuhu Wadhwa, and Trevor Hubbard
View on Github