At Virginia Tech (VT), maintaining your Grade Point Average (GPA) is crucial for academic standing, scholarship eligibility, and graduation requirements. Unlike some institutions that use a simple 4.0 system, VT utilizes a weighted +/- system that offers more granularity in grading.
How VT Calculates GPA
Your GPA is calculated by dividing your total Quality Points by the total number of Credit Hours attempted. Quality points are determined by multiplying the credit hours of a specific course by the point value assigned to the grade you received.
Formula: Total Quality Points / Total Credits Attempted = GPA
Virginia Tech Grading Scale
Use the table below to understand how letter grades translate to quality points at Virginia Tech:
Letter Grade
Quality Points
Description
A
4.0
Excellent
A-
3.7
B+
3.3
B
3.0
Good
B-
2.7
C+
2.3
C
2.0
Satisfactory
C-
1.7
D+
1.3
D
1.0
Poor/Passing
D-
0.7
F
0.0
Failure
Using the Hokie GPA Calculator
This calculator is designed to help Virginia Tech students forecast their semester grades and see the impact on their overall academic progress.
Current Stats (Optional): If you are a returning student, find your current cumulative GPA and total credits earned in Hokie Spa under your unofficial transcript. Enter these to see how this semester will affect your overall standing.
Semester Courses: Enter the credit hours for each class you are taking (usually 1, 3, or 4).
Predicted Grades: Select the grade you anticipate receiving.
Calculate: Hit the button to see your projected Semester GPA and your new Cumulative GPA.
Important Considerations
Pass/Fail Courses: Courses taken as Pass/Fail (P/F) do not impact your GPA calculation, though the credits count toward graduation if passed. Do not include them in this calculator unless you receive an 'F', which counts as 0.0 points.
Course Withdrawal: A grade of 'W' does not affect your GPA.
Academic Warning: Students falling below a 2.0 cumulative GPA may be placed on academic warning or probation.
function calculateVTGPA() {
// 1. Get Current Cumulative Data (Optional)
var currentGpaInput = document.getElementById('current-gpa').value;
var currentCreditsInput = document.getElementById('current-credits').value;
var currentGpa = parseFloat(currentGpaInput);
var currentCredits = parseFloat(currentCreditsInput);
// Validate current stats
if (isNaN(currentGpa)) currentGpa = 0;
if (isNaN(currentCredits)) currentCredits = 0;
// 2. Calculate Semester Data
var semesterPoints = 0;
var semesterCredits = 0;
var hasSemesterData = false;
// Loop through the 6 fixed rows
for (var i = 1; i 0) {
semGpaResult = semesterPoints / semesterCredits;
document.getElementById('res-semester-gpa').innerText = semGpaResult.toFixed(2);
document.getElementById('res-semester-credits').innerText = semesterCredits;
} else {
document.getElementById('res-semester-gpa').innerText = "0.00";
document.getElementById('res-semester-credits').innerText = "0";
}
// 4. Calculate Cumulative Results
var totalPoints = (currentGpa * currentCredits) + semesterPoints;
var totalCredits = currentCredits + semesterCredits;
var cumulativeGpaResult = 0;
var displayCumulative = false;
// If user entered current stats OR entered semester stats, we calculate total
if (totalCredits > 0) {
cumulativeGpaResult = totalPoints / totalCredits;
displayCumulative = true;
}
// 5. Display Cumulative Results
if (displayCumulative) {
document.getElementById('res-cumulative-gpa').innerText = cumulativeGpaResult.toFixed(2);
document.getElementById('res-total-credits').innerText = totalCredits;
} else {
document.getElementById('res-cumulative-gpa').innerText = "–";
document.getElementById('res-total-credits').innerText = "–";
}
// Show result box
document.getElementById('vt-result').style.display = 'block';
}
function resetVTCalculator() {
// Clear Current Stats
document.getElementById('current-gpa').value = ";
document.getElementById('current-credits').value = ";
// Clear Rows
for (var i = 1; i <= 6; i++) {
document.getElementById('credit' + i).selectedIndex = 0;
document.getElementById('grade' + i).selectedIndex = 0;
// Clear text inputs for course names (need to traverse DOM relative to ID, or select all inputs)
// Simplest way for fixed structure:
var rows = document.getElementById('course-rows').getElementsByTagName('input');
for(var j=0; j<rows.length; j++){
rows[j].value = '';
}
}
// Hide Results
document.getElementById('vt-result').style.display = 'none';
// Reset Text
document.getElementById('res-semester-gpa').innerText = "0.00";
document.getElementById('res-semester-credits').innerText = "0";
document.getElementById('res-cumulative-gpa').innerText = "–";
document.getElementById('res-total-credits').innerText = "–";
}