Currently, GPA calculations are found to be extremely tedious and require students to track their progress and remain updated on their academic standings. This requires shuffling through course outlines, grade calculators, and grade books and is an ineffective method as it requires manual inputs from the user.

We used a pool of resources to spark inspiration. This included a list of interesting scripts, extensions, and APIs and are useful for all kinds of things beyond hacks. Being students ourselves, we understood the frustration of manually inputting grades into online GPA calculators. This sparked an interest in creating an extension that would display the average based on current grades as well as display the current GPA based on those grades.

All in all, we focused on increasing efficiency and creating a conjunction between current GPA calculators as well as final grade calculators in an easy two-step extension.

What it does

GRADEX scans the grades webpage and allows the user to change the GPA scale based on their corresponding school scale (4.0/4.3). In addition, approaching the end of the term, the user is also able to obtain the required grade on the final exam in order to achieve the desired grade in the course. Once the "Scan Page" button is pressed, the extension scans through the grades page to receive any data containing grades as well as their corresponding titles and displays the accumulated grades in a chart format for the user to view.

How we built it

We used chrome storage APIs in addition to web development stack to fully customize this extension. We also used the template provided in the chrome extension workshop. By converting the table into a csv, we were then able to fully implement it into our extension.

Challenges we ran into

1) It was difficult to manipulate the DOM of the extension by using values we acquired through the web page DOM. Fortunately, we figured it out using the chrome. runtime.send/listen to message tool. This allowed us to have "super global" variables that can be accessed by the extension through the web page. 2) We've never worked with extensions, and so it was very difficult to traverse our way around errors. We found our way though, and it all was a result of level-headed thinking and relying on the basics.

Accomplishments that we're proud of

GRADEX is a unique project that pushed past various obstacles throughout its conception. Our team is most proud of the fact that GRADEX is capable of navigating d2l bright-space's extremely variable HTML code to create a chrome extension that serves a need in the student population. GRADEX not only calculates current course GPAs but also allows students to plan their academic term by letting them calculate their goals for final assessment marks. Our proudest accomplishment is creating a product that benefits students and contributes to their academic growth and success.

What we learned

We are so much more confident in JS promises and async functions. This came about as we realized that the calls to local storage were happening before the chrome.execute scripts, despite it appearing later in the code.This then made us realize that its because the script was a promise, and we needed to implement async properties to access it. We've always been kinda afraid of promises because i never initially got them, but this made me feel a lot more confident.

What's next for GRADEX

Going forward, GRADEX has a lot of potential. This extension can be expanded to include more resources focused on student success. GRADEX wishes to move into the future with an extension that stresses the importance of academic success in balance with all other aspects of life. Preparing pupils to be the best possible students is the goal for GRADEX and moving forward they will continue to pursue that.

Share this project: