-
Unsquashed courses for math and physics
-
Array to be sent to the React framework for unsquashed math and physics
-
Squashed courses for math and physics
-
Array to be sent to the Reac framework for squashed math and physics
-
Unsquashed visual from python code for math, physics, and mechanical engineering
-
React Framework opening screen
-
Example of visualized courses with placeholders, with no prerequisite arrows shown.
Inspiration
Each member of our group has opened Degree Works and trouble picturing what their degree path would look like. VCU Mechanical Engineering department did provide some great looking course sequence flowcharts a couple years ago, but those are outdated due to changes in curriculum, and as far as we can tell no other majors at VCU have those flowcharts. The sequence chart was a great help to me in forming my curriculum for the next four years, and I know a program which could automatically generate sequence charts would be of great use to not just VCU, but colleges around the world, as they would be easier to alter with changes in required curriculum than anything handmade.
What it does
What it does right now: Major Mapper is currently able to organize the courses in the order they are meant to be taken in, meaning that they are lined up in order of which they can be taken (for example, taking a class after its prerequisites and with any co-requisites). It is also able to differentiate between courses that are restricted to a specific year of student.
What it will be able to do: In the future Major mapper will be able to differentiate between courses that are only offered in the Spring and in the Fall, and it will have more courses and more majors/classes that are available for students look at. Major Mapper will also be able to regulate the number of credits that the student can take in the semester and will rearrange the classes with the parameters set beforehand.
How we built it
Major Mapper uses node.js for the back-end calculations, and React for the front-end. The class and major data was obtained from VCU's bulletin and processed using excel and Python into a JavaScript dictionary. React framework was then used to create an interface where one enters their desired majors, math and/or physics, and any previously taken courses (previously taken courses does nothing in back-end for now but may be implemented later). The JavaScript code then uses repeating algorithms to sort all the required courses from those majors and general education curriculum courses such that they are ahead of all their prerequisites and in the same semester as any co-requisites. A function called squash can then be applied to limit the number of credit hours per semester.
This can be exported from the java function as an array using an function which would theoretically be used by the React code to create the visualization, however currently the integration between the React flowchart visualizer and the JavaScript back-end is not complete.
Challenges we ran into
The largest challenge the Major Mapper team faced was debugging the almost 700 lines of code that consist of the back-end of the Mapper. The team also faced challenges when debugging the front end of Major Mapper when trying to webhost. All of our JavaScript and React code works individually, but we made one the JS with Mocha, and the React server was being hosted with Express, but now we are not sure if Mocha and Express are compatible. Maybe they are and we will figure it out later, but otherwise we will have to switch how we host the React code.
Accomplishments that we're proud of
- Creating stepped lines in React
- Coming up with a possibly feasible web app idea for further development.
What we learned
We learned a lot about JavaScript coding and how to run node.js. We also learned a good amount about implementing React states and creating more complex visuals by implementing external libraries in the React code.
What's next for Major Mapper
Ideally, next would be refining the sorting, adding the ability to move classes between semesters more practically, staying under a maximum credit limit and not moving courses that are the prerequisites for other courses forwards. It also needs to account for courses which only happen in Fall or Spring, and take in which courses the student has already taken, and any minors or miscellaneous classes the student wants to take. Once Major Mapper can account for all those, we would want to clean up the front-end and make it more user friendly and intuitive. If successful, we could then reach out to VCU about the possibility of integrating Major Mapper into degree works.
JS in GitHub, React in notepad link submitted.
Built With
- googlesheet
- javascript
- node.js
- python
- react
- replit



Log in or sign up for Devpost to join the conversation.