CSC 124, Spring 2026
A command-line grade tracking application written in Python. Track courses, grade categories, weighted averages, and semester GPA all from the terminal.
Grade Tracker was built as a semester project for CSC 124. The goal was to create a practical tool to use for all of a student's classes instead of having to guess what your final grade is or doing unnecessary math to calculate your final grade.
The program stores course data locally as JSON so your grades persist between sessions, and uses NumPy for all grade calculations to ensure accuracy with floating-point weights.
- Add courses with a credit count and custom grade categories (e.g. Homework 20%, Exams 50%, Final 30%)
- Calculate your current grade by entering individual assignment scores or a category average — skipping incomplete categories (like a final exam) is supported
- What-if calculator — enter your current grades and a target final grade, and the program tells you exactly what you need to score on remaining work
- Set letter grades for completed courses
- Semester GPA calculator using a standard 4.0 scale, weighted by credit hours
- Persistent storage — courses are saved to
courses.jsonand reloaded on startup
- Jupyter Notebook
- Python 3.8+
- NumPy
Install dependencies:
pip install numpyOn startup, if a save file exists you will be prompted to load your courses. From the main menu:
[1] Add a course
[2] View all courses
[3] Remove a course
[4] Enter / calculate grades
[5] What-if calculator
[6] Set letter grade for a course
[7] Calculate semester GPA
[8] Load courses from file
[9] Save and quit
Enter the course name in DEPT 000 format (e.g. CSC 124, MATH 201), the number of credits, and then define as many grade categories as your syllabus specifies. Weights are entered as decimals and must sum to 100%.
Select a course and choose whether you know your overall category grade or want to enter individual assignment scores. Categories you haven't completed yet (like a final exam) can be skipped.
Enter your grades for completed categories and your target final grade. The program solves for the average score you need across all remaining work to hit that target.
Courses are saved to courses.json in the same directory as the script. The file is created automatically on first save and updated whenever a course is added, removed, or a letter grade is set.
gradeTracker/
├── gradeTracker.py # main application
├── courses.json # auto-generated save file (created at runtime)
└── README.md
Matthew Begg, Roman Colaberdino, Maximus Desir