Introduction
There is also a (German) video on YouTube related to this article:
At German universities, the wonderfully absolute-scaled points are converted into ordinal scales (usually the grades 1.0, 1.3, 1.7, 2.0, 2.3, 2.7, 3.0, 3.3, 3.7, 4.0, 5.0). It may surprise some that this often doesn’t follow a fixed schema. In this short article, we will look at a few calculations and find that grade intervals are equal in size only in exceptional cases.
Quickly upfront: An overview (at the bottom) offers quick navigation for a specific maximum score. If you only want to know the boundaries, these tables suffice. If you’re curious, read on here.
Calculation
We will conduct a small analysis in R, for which we first need to load a few packages:
In the first step, we divide the 11 grades across the range between 50% and 100%. From 50% onwards, an exam is considered passed.
[1] 50 55 60 65 70 75 80 85 90 95 100
This would already be the first step towards standardization. The boundaries all have equal distances, although the range between 95% and 100% is slightly larger, as 100% is included. In other ranges, the upper value is no longer in the interval. For example, the first range goes from 50 to 54.999, with 55 already in the next interval. Tendentially, the range for 1.0 will thus be larger. This is, of course, unfortunate and subjective (one could also enlarge any other range), but it is not the biggest issue (as we will soon see).
Next, we need a function that combines the maximum score, the percentages, and the corresponding grades and outputs a table of boundaries. Nothing special happens here, except for the function findInterval
, which assigns the points to the boundaries. Since the maximum score also needs a grade, we set the parameter rightmost.closed
to TRUE
.
create_grade <- function ( points , percent , grade ) {
max_points <- max ( points )
interval <- findInterval ( points , c ( 0 , max ( points ) * percent / 100 ) ,
rightmost.closed = T )
df <- data.frame ( points ,
grade = grade [ interval ] )
cut_points <- df %>%
group_by ( grade ) %>%
summarize ( min = min ( points ) , max = max ( points ) ) %>%
mutate ( diff = max - min ) # the length of the interval
return ( cut_points )
}
Now we can create a few typical cases. The points are generated here via seq
with steps of 0.5, as most exams also award half points.
max_points <- seq ( 20 , 40 , 0.5 )
grade <- c ( 5 , 4 , 3.7 , 3.3 , 3 , 2.7 , 2.3 , 2 , 1.7 , 1.3 , 1 )
points <- lapply ( max_points , function ( x ) seq ( 0 , x , 0.5 ) )
grade_list <- lapply ( points , create_grade , percent , grade )
names ( grade_list ) <- paste0 ( "Max Points: " , max_points )
Grade Key Tables
Now we can generate the tables, here using kableExtra
. It’s important to note that kbl
without kable_styling
leads to incorrectly formatted tables. The Hugo theme used seems to assume that the first column has no name, which usually isn’t the case. The cryptic cat
command ensures quick navigation by creating an accordion.
res <- Map ( function ( x , y )
kable_styling ( kbl ( x , col.names = c ( "Grade" , "Min" , "Max" , "Diff" ) ) ) ,
grade_list ,
names ( grade_list )
)
for ( i in seq ( res ) ) {
cat ( '\n' , '<details class="details-example"><summary>↳' , names ( res [ i ] ) , '</summary>' )
print ( res [[ i ] ] )
cat ( '\n</details>' )
}
↳ Max Points: 20
Grade
Min
Max
Diff
1.0
19
20.0
1.0
1.3
18
18.5
0.5
1.7
17
17.5
0.5
2.0
16
16.5
0.5
2.3
15
15.5
0.5
2.7
14
14.5
0.5
3.0
13
13.5
0.5
3.3
12
12.5
0.5
3.7
11
11.5
0.5
4.0
10
10.5
0.5
5.0
0
9.5
9.5
↳ Max Points: 20.5
Grade
Min
Max
Diff
1.0
19.5
20.5
1.0
1.3
18.5
19.0
0.5
1.7
17.5
18.0
0.5
2.0
16.5
17.0
0.5
2.3
15.5
16.0
0.5
2.7
14.5
15.0
0.5
3.0
13.5
14.0
0.5
3.3
12.5
13.0
0.5
3.7
11.5
12.0
0.5
4.0
10.5
11.0
0.5
5.0
0.0
10.0
10.0
↳ Max Points: 21
Grade
Min
Max
Diff
1.0
20.0
21.0
1.0
1.3
19.0
19.5
0.5
1.7
18.0
18.5
0.5
2.0
17.0
17.5
0.5
2.3
16.0
16.5
0.5
2.7
15.0
15.5
0.5
3.0
14.0
14.5
0.5
3.3
13.0
13.5
0.5
3.7
12.0
12.5
0.5
4.0
10.5
11.5
1.0
5.0
0.0
10.0
10.0
↳ Max Points: 21.5
Grade
Min
Max
Diff
1.0
20.5
21.5
1.0
1.3
19.5
20.0
0.5
1.7
18.5
19.0
0.5
2.0
17.5
18.0
0.5
2.3
16.5
17.0
0.5
2.7
15.5
16.0
0.5
3.0
14.0
15.0
1.0
3.3
13.0
13.5
0.5
3.7
12.0
12.5
0.5
4.0
11.0
11.5
0.5
5.0
0.0
10.5
10.5
↳ Max Points: 22
Grade
Min
Max
Diff
1.0
21.0
22.0
1.0
1.3
20.0
20.5
0.5
1.7
19.0
19.5
0.5
2.0
18.0
18.5
0.5
2.3
16.5
17.5
1.0
2.7
15.5
16.0
0.5
3.0
14.5
15.0
0.5
3.3
13.5
14.0
0.5
3.7
12.5
13.0
0.5
4.0
11.0
12.0
1.0
5.0
0.0
10.5
10.5
↳ Max Points: 22.5
Grade
Min
Max
Diff
1.0
21.5
22.5
1.0
1.3
20.5
21.0
0.5
1.7
19.5
20.0
0.5
2.0
18.0
19.0
1.0
2.3
17.0
17.5
0.5
2.7
16.0
16.5
0.5
3.0
15.0
15.5
0.5
3.3
13.5
14.5
1.0
3.7
12.5
13.0
0.5
4.0
11.5
12.0
0.5
5.0
0.0
11.0
11.0
↳ Max Points: 23
Grade
Min
Max
Diff
1.0
22.0
23.0
1.0
1.3
21.0
21.5
0.5
1.7
20.0
20.5
0.5
2.0
18.5
19.5
1.0
2.3
17.5
18.0
0.5
2.7
16.5
17.0
0.5
3.0
15.0
16.0
1.0
3.3
14.0
14.5
0.5
3.7
13.0
13.5
0.5
4.0
11.5
12.5
1.0
5.0
0.0
11.0
11.0
↳ Max Points: 23.5
Grade
Min
Max
Diff
1.0
22.5
23.5
1.0
1.3
21.5
22.0
0.5
1.7
20.0
21.0
1.0
2.0
19.0
19.5
0.5
2.3
18.0
18.5
0.5
2.7
16.5
17.5
1.0
3.0
15.5
16.0
0.5
3.3
14.5
15.0
0.5
3.7
13.0
14.0
1.0
4.0
12.0
12.5
0.5
5.0
0.0
11.5
11.5
↳ Max Points: 24
Grade
Min
Max
Diff
1.0
23.0
24.0
1.0
1.3
22.0
22.5
0.5
1.7
20.5
21.5
1.0
2.0
19.5
20.0
0.5
2.3
18.0
19.0
1.0
2.7
17.0
17.5
0.5
3.0
16.0
16.5
0.5
3.3
14.5
15.5
1.0
3.7
13.5
14.0
0.5
4.0
12.0
13.0
1.0
5.0
0.0
11.5
11.5
↳ Max Points: 24.5
Grade
Min
Max
Diff
1.0
23.5
24.5
1.0
1.3
22.5
23.0
0.5
1.7
21.0
22.0
1.0
2.0
20.0
20.5
0.5
2.3
18.5
19.5
1.0
2.7
17.5
18.0
0.5
3.0
16.0
17.0
1.0
3.3
15.0
15.5
0.5
3.7
13.5
14.5
1.0
4.0
12.5
13.0
0.5
5.0
0.0
12.0
12.0
↳ Max Points: 25
Grade
Min
Max
Diff
1.0
24.0
25.0
1.0
1.3
22.5
23.5
1.0
1.7
21.5
22.0
0.5
2.0
20.0
21.0
1.0
2.3
19.0
19.5
0.5
2.7
17.5
18.5
1.0
3.0
16.5
17.0
0.5
3.3
15.0
16.0
1.0
3.7
14.0
14.5
0.5
4.0
12.5
13.5
1.0
5.0
0.0
12.0
12.0
↳ Max Points: 25.5
Grade
Min
Max
Diff
1.0
24.5
25.5
1.0
1.3
23.0
24.0
1.0
1.7
22.0
22.5
0.5
2.0
20.5
21.5
1.0
2.3
19.5
20.0
0.5
2.7
18.0
19.0
1.0
3.0
17.0
17.5
0.5
3.3
15.5
16.5
1.0
3.7
14.5
15.0
0.5
4.0
13.0
14.0
1.0
5.0
0.0
12.5
12.5
↳ Max Points: 26
Grade
Min
Max
Diff
1.0
25.0
26.0
1.0
1.3
23.5
24.5
1.0
1.7
22.5
23.0
0.5
2.0
21.0
22.0
1.0
2.3
19.5
20.5
1.0
2.7
18.5
19.0
0.5
3.0
17.0
18.0
1.0
3.3
16.0
16.5
0.5
3.7
14.5
15.5
1.0
4.0
13.0
14.0
1.0
5.0
0.0
12.5
12.5
↳ Max Points: 26.5
Grade
Min
Max
Diff
1.0
25.5
26.5
1.0
1.3
24.0
25.0
1.0
1.7
23.0
23.5
0.5
2.0
21.5
22.5
1.0
2.3
20.0
21.0
1.0
2.7
19.0
19.5
0.5
3.0
17.5
18.5
1.0
3.3
16.0
17.0
1.0
3.7
15.0
15.5
0.5
4.0
13.5
14.5
1.0
5.0
0.0
13.0
13.0
↳ Max Points: 27
Grade
Min
Max
Diff
1.0
26.0
27.0
1.0
1.3
24.5
25.5
1.0
1.7
23.0
24.0
1.0
2.0
22.0
22.5
0.5
2.3
20.5
21.5
1.0
2.7
19.0
20.0
1.0
3.0
18.0
18.5
0.5
3.3
16.5
17.5
1.0
3.7
15.0
16.0
1.0
4.0
13.5
14.5
1.0
5.0
0.0
13.0
13.0
↳ Max Points: 27.5
Grade
Min
Max
Diff
1.0
26.5
27.5
1.0
1.3
25.0
26.0
1.0
1.7
23.5
24.5
1.0
2.0
22.0
23.0
1.0
2.3
21.0
21.5
0.5
2.7
19.5
20.5
1.0
3.0
18.0
19.0
1.0
3.3
16.5
17.5
1.0
3.7
15.5
16.0
0.5
4.0
14.0
15.0
1.0
5.0
0.0
13.5
13.5
↳ Max Points: 28
Grade
Min
Max
Diff
1.0
27.0
28.0
1.0
1.3
25.5
26.5
1.0
1.7
24.0
25.0
1.0
2.0
22.5
23.5
1.0
2.3
21.0
22.0
1.0
2.7
20.0
20.5
0.5
3.0
18.5
19.5
1.0
3.3
17.0
18.0
1.0
3.7
15.5
16.5
1.0
4.0
14.0
15.0
1.0
5.0
0.0
13.5
13.5
↳ Max Points: 28.5
Grade
Min
Max
Diff
1.0
27.5
28.5
1.0
1.3
26.0
27.0
1.0
1.7
24.5
25.5
1.0
2.0
23.0
24.0
1.0
2.3
21.5
22.5
1.0
2.7
20.0
21.0
1.0
3.0
19.0
19.5
0.5
3.3
17.5
18.5
1.0
3.7
16.0
17.0
1.0
4.0
14.5
15.5
1.0
5.0
0.0
14.0
14.0
↳ Max Points: 29
Grade
Min
Max
Diff
1.0
28.0
29.0
1
1.3
26.5
27.5
1
1.7
25.0
26.0
1
2.0
23.5
24.5
1
2.3
22.0
23.0
1
2.7
20.5
21.5
1
3.0
19.0
20.0
1
3.3
17.5
18.5
1
3.7
16.0
17.0
1
4.0
14.5
15.5
1
5.0
0.0
14.0
14
↳ Max Points: 29.5
Grade
Min
Max
Diff
1.0
28.5
29.5
1.0
1.3
27.0
28.0
1.0
1.7
25.5
26.5
1.0
2.0
24.0
25.0
1.0
2.3
22.5
23.5
1.0
2.7
21.0
22.0
1.0
3.0
19.5
20.5
1.0
3.3
18.0
19.0
1.0
3.7
16.5
17.5
1.0
4.0
15.0
16.0
1.0
5.0
0.0
14.5
14.5
↳ Max Points: 30
Grade
Min
Max
Diff
1.0
28.5
30.0
1.5
1.3
27.0
28.0
1.0
1.7
25.5
26.5
1.0
2.0
24.0
25.0
1.0
2.3
22.5
23.5
1.0
2.7
21.0
22.0
1.0
3.0
19.5
20.5
1.0
3.3
18.0
19.0
1.0
3.7
16.5
17.5
1.0
4.0
15.0
16.0
1.0
5.0
0.0
14.5
14.5
↳ Max Points: 30.5
Grade
Min
Max
Diff
1.0
29.0
30.5
1.5
1.3
27.5
28.5
1.0
1.7
26.0
27.0
1.0
2.0
24.5
25.5
1.0
2.3
23.0
24.0
1.0
2.7
21.5
22.5
1.0
3.0
20.0
21.0
1.0
3.3
18.5
19.5
1.0
3.7
17.0
18.0
1.0
4.0
15.5
16.5
1.0
5.0
0.0
15.0
15.0
↳ Max Points: 31
Grade
Min
Max
Diff
1.0
29.5
31.0
1.5
1.3
28.0
29.0
1.0
1.7
26.5
27.5
1.0
2.0
25.0
26.0
1.0
2.3
23.5
24.5
1.0
2.7
22.0
23.0
1.0
3.0
20.5
21.5
1.0
3.3
19.0
20.0
1.0
3.7
17.5
18.5
1.0
4.0
15.5
17.0
1.5
5.0
0.0
15.0
15.0
↳ Max Points: 31.5
Grade
Min
Max
Diff
1.0
30.0
31.5
1.5
1.3
28.5
29.5
1.0
1.7
27.0
28.0
1.0
2.0
25.5
26.5
1.0
2.3
24.0
25.0
1.0
2.7
22.5
23.5
1.0
3.0
20.5
22.0
1.5
3.3
19.0
20.0
1.0
3.7
17.5
18.5
1.0
4.0
16.0
17.0
1.0
5.0
0.0
15.5
15.5
↳ Max Points: 32
Grade
Min
Max
Diff
1.0
30.5
32.0
1.5
1.3
29.0
30.0
1.0
1.7
27.5
28.5
1.0
2.0
26.0
27.0
1.0
2.3
24.0
25.5
1.5
2.7
22.5
23.5
1.0
3.0
21.0
22.0
1.0
3.3
19.5
20.5
1.0
3.7
18.0
19.0
1.0
4.0
16.0
17.5
1.5
5.0
0.0
15.5
15.5
↳ Max Points: 32.5
Grade
Min
Max
Diff
1.0
31.0
32.5
1.5
1.3
29.5
30.5
1.0
1.7
28.0
29.0
1.0
2.0
26.0
27.5
1.5
2.3
24.5
25.5
1.0
2.7
23.0
24.0
1.0
3.0
21.5
22.5
1.0
3.3
19.5
21.0
1.5
3.7
18.0
19.0
1.0
4.0
16.5
17.5
1.0
5.0
0.0
16.0
16.0
↳ Max Points: 33
Grade
Min
Max
Diff
1.0
31.5
33.0
1.5
1.3
30.0
31.0
1.0
1.7
28.5
29.5
1.0
2.0
26.5
28.0
1.5
2.3
25.0
26.0
1.0
2.7
23.5
24.5
1.0
3.0
21.5
23.0
1.5
3.3
20.0
21.0
1.0
3.7
18.5
19.5
1.0
4.0
16.5
18.0
1.5
5.0
0.0
16.0
16.0
↳ Max Points: 33.5
Grade
Min
Max
Diff
1.0
32.0
33.5
1.5
1.3
30.5
31.5
1.0
1.7
28.5
30.0
1.5
2.0
27.0
28.0
1.0
2.3
25.5
26.5
1.0
2.7
23.5
25.0
1.5
3.0
22.0
23.0
1.0
3.3
20.5
21.5
1.0
3.7
18.5
20.0
1.5
4.0
17.0
18.0
1.0
5.0
0.0
16.5
16.5
↳ Max Points: 34
Grade
Min
Max
Diff
1.0
32.5
34.0
1.5
1.3
31.0
32.0
1.0
1.7
29.0
30.5
1.5
2.0
27.5
28.5
1.0
2.3
25.5
27.0
1.5
2.7
24.0
25.0
1.0
3.0
22.5
23.5
1.0
3.3
20.5
22.0
1.5
3.7
19.0
20.0
1.0
4.0
17.0
18.5
1.5
5.0
0.0
16.5
16.5
↳ Max Points: 34.5
Grade
Min
Max
Diff
1.0
33.0
34.5
1.5
1.3
31.5
32.5
1.0
1.7
29.5
31.0
1.5
2.0
28.0
29.0
1.0
2.3
26.0
27.5
1.5
2.7
24.5
25.5
1.0
3.0
22.5
24.0
1.5
3.3
21.0
22.0
1.0
3.7
19.0
20.5
1.5
4.0
17.5
18.5
1.0
5.0
0.0
17.0
17.0
↳ Max Points: 35
Grade
Min
Max
Diff
1.0
33.5
35.0
1.5
1.3
31.5
33.0
1.5
1.7
30.0
31.0
1.0
2.0
28.0
29.5
1.5
2.3
26.5
27.5
1.0
2.7
24.5
26.0
1.5
3.0
23.0
24.0
1.0
3.3
21.0
22.5
1.5
3.7
19.5
20.5
1.0
4.0
17.5
19.0
1.5
5.0
0.0
17.0
17.0
↳ Max Points: 35.5
Grade
Min
Max
Diff
1.0
34.0
35.5
1.5
1.3
32.0
33.5
1.5
1.7
30.5
31.5
1.0
2.0
28.5
30.0
1.5
2.3
27.0
28.0
1.0
2.7
25.0
26.5
1.5
3.0
23.5
24.5
1.0
3.3
21.5
23.0
1.5
3.7
20.0
21.0
1.0
4.0
18.0
19.5
1.5
5.0
0.0
17.5
17.5
↳ Max Points: 36
Grade
Min
Max
Diff
1.0
34.5
36.0
1.5
1.3
32.5
34.0
1.5
1.7
31.0
32.0
1.0
2.0
29.0
30.5
1.5
2.3
27.0
28.5
1.5
2.7
25.5
26.5
1.0
3.0
23.5
25.0
1.5
3.3
22.0
23.0
1.0
3.7
20.0
21.5
1.5
4.0
18.0
19.5
1.5
5.0
0.0
17.5
17.5
↳ Max Points: 36.5
Grade
Min
Max
Diff
1.0
35.0
36.5
1.5
1.3
33.0
34.5
1.5
1.7
31.5
32.5
1.0
2.0
29.5
31.0
1.5
2.3
27.5
29.0
1.5
2.7
26.0
27.0
1.0
3.0
24.0
25.5
1.5
3.3
22.0
23.5
1.5
3.7
20.5
21.5
1.0
4.0
18.5
20.0
1.5
5.0
0.0
18.0
18.0
↳ Max Points: 37
Grade
Min
Max
Diff
1.0
35.5
37.0
1.5
1.3
33.5
35.0
1.5
1.7
31.5
33.0
1.5
2.0
30.0
31.0
1.0
2.3
28.0
29.5
1.5
2.7
26.0
27.5
1.5
3.0
24.5
25.5
1.0
3.3
22.5
24.0
1.5
3.7
20.5
22.0
1.5
4.0
18.5
20.0
1.5
5.0
0.0
18.0
18.0
↳ Max Points: 37.5
Grade
Min
Max
Diff
1.0
36.0
37.5
1.5
1.3
34.0
35.5
1.5
1.7
32.0
33.5
1.5
2.0
30.0
31.5
1.5
2.3
28.5
29.5
1.0
2.7
26.5
28.0
1.5
3.0
24.5
26.0
1.5
3.3
22.5
24.0
1.5
3.7
21.0
22.0
1.0
4.0
19.0
20.5
1.5
5.0
0.0
18.5
18.5
↳ Max Points: 38
Grade
Min
Max
Diff
1.0
36.5
38.0
1.5
1.3
34.5
36.0
1.5
1.7
32.5
34.0
1.5
2.0
30.5
32.0
1.5
2.3
28.5
30.0
1.5
2.7
27.0
28.0
1.0
3.0
25.0
26.5
1.5
3.3
23.0
24.5
1.5
3.7
21.0
22.5
1.5
4.0
19.0
20.5
1.5
5.0
0.0
18.5
18.5
↳ Max Points: 38.5
Grade
Min
Max
Diff
1.0
37.0
38.5
1.5
1.3
35.0
36.5
1.5
1.7
33.0
34.5
1.5
2.0
31.0
32.5
1.5
2.3
29.0
30.5
1.5
2.7
27.0
28.5
1.5
3.0
25.5
26.5
1.0
3.3
23.5
25.0
1.5
3.7
21.5
23.0
1.5
4.0
19.5
21.0
1.5
5.0
0.0
19.0
19.0
↳ Max Points: 39
Grade
Min
Max
Diff
1.0
37.5
39
1.5
1.3
35.5
37
1.5
1.7
33.5
35
1.5
2.0
31.5
33
1.5
2.3
29.5
31
1.5
2.7
27.5
29
1.5
3.0
25.5
27
1.5
3.3
23.5
25
1.5
3.7
21.5
23
1.5
4.0
19.5
21
1.5
5.0
0.0
19
19.0
↳ Max Points: 39.5
Grade
Min
Max
Diff
1.0
38
39.5
1.5
1.3
36
37.5
1.5
1.7
34
35.5
1.5
2.0
32
33.5
1.5
2.3
30
31.5
1.5
2.7
28
29.5
1.5
3.0
26
27.5
1.5
3.3
24
25.5
1.5
3.7
22
23.5
1.5
4.0
20
21.5
1.5
5.0
0
19.5
19.5
↳ Max Points: 40
Grade
Min
Max
Diff
1.0
38
40.0
2.0
1.3
36
37.5
1.5
1.7
34
35.5
1.5
2.0
32
33.5
1.5
2.3
30
31.5
1.5
2.7
28
29.5
1.5
3.0
26
27.5
1.5
3.3
24
25.5
1.5
3.7
22
23.5
1.5
4.0
20
21.5
1.5
5.0
0
19.5
19.5
The tables can serve the standardization of grade calculation at universities. However, it would be much better to simply specify percentage values from the maximum achievable points. This has only advantages, but there are certainly some legal and bureaucratic hurdles. Nevertheless, students could be informed of both the achieved percentages and the grade. Students would surely realize that percentage values are more meaningful and would also demand this information for other exams. This way, a critical mass for change could be reached.
Tables as CSV for Import into OPAL
March 2023 Addendum: In the LMS OPAL (which we currently use), grade mappings can now be imported as CSV. We only need to create the CSV files:
Map ( function ( x , y ) write.table ( x [ , c ( 1 , 3 , 2 ) ] , file = y , col.names = F ,
row.names = F , sep = ";" ) ,
grade_list ,
paste0 ( substr ( names ( grade_list ) , 13 , 16 ) , ".csv" ) )
20.csv 20.5.csv 21.csv 21.5.csv 22.csv 22.5.csv 23.csv 23.5.csv 24.csv 24.5.csv 25.csv 25.5.csv 26.csv 26.5.csv 27.csv 27.5.csv 28.csv 28.5.csv 29.csv 29.5.csv 30.csv 30.5.csv 31.csv 31.5.csv 32.csv 32.5.csv 33.csv 33.5.csv 34.csv 34.5.csv 35.csv 35.5.csv 36.csv 36.5.csv 37.csv 37.5.csv 38.csv 38.5.csv 39.csv 39.5.csv 40.csv