Basics of AS Psychology Quiz 2

The AS Psychology Quiz 2 consisted of 13 questions covering the 3 core studies of “The Cognitive Approach” worth a total value of 40 points. The questions and their point values can be seen in the table below:

##KNITTED TABLE OF QUESTIONS AND POINT VALUES
QuestionsTable <- 
  Quiz2Grades %>%
    head(13) %>%
    subset(select = c(Qnum, Question, Value)) %>%
    setNames(c("Number", "Question", "Value")) %>%
    knitr::kable(caption = "AS Psychology- Questions and Values", row.names = F) %>%
    kable_styling(full_width = F) 

save_kable(QuestionsTable, "QuestionsTable.png")

QuestionsTable
AS Psychology- Questions and Values
Number Question Value
1 State the Aim of Andrade et al 1
2a Describe What is meant by theory of mind 2
2b Outline how one result from Baron-Cohen et al supports the concept of “Theory of Mind” 2
3 Definte one assumptions of the cognitive approach 2
4 Describe the materials that were used in both t he “doodling” condition and the “control” condition of the study by Andrade 4
5 Describe how Andrade recruited her sample of participants and explain why she decided to recruit them in this way 4
6 Describe one application to everyday life that the Landey et al study could have. Explain who would benefit from this application. 4
7a In Laney et al, name the sampling technique 1
7b Describe one advantage of this sampling technique in this study 3
8a Explain what is meant by a “ceiling effect” 2
8b Suggest why a “ceiling effect” is a problem in Baron-Cohen et al.  2
8c Studies from the cognitive approach can be used to help people understand a mental health issue. Describe how the results of the study by Baron-Cohen et al can help with understanding and/or treating autism 4
9 Evaluate Laney et al in terms of two strengths and two weaknesses/ At least one of your evaluation points must be about quantitative data 10

Overall Performance

Generally, the first thing we want to look at in one of these analyses is the overall distribution of grades, which we can see in the histogram below (Recall that you can tell this is a histogram rather than a bar chart because the Dependent variable (grades) is on the X axis).

#Single Histogram
#Histograms
ggplot(data=Quiz2Totals, aes(x=Grade)) +
  geom_histogram(aes(y=..density..), alpha = 0.6, position = "identity") +
  labs(x="Grade (Percentage)", y="Density") +
  stat_function(fun=dnorm, args = list(mean=mean(Quiz2Totals$Grade), sd=sd(Quiz2Totals$Grade)), 
                color="black", size   = 1.4) +
  scale_fill_manual(values= c("darkred", "darkgrey")) +
  scale_x_continuous(limits = c(0,100)) +
  theme_alan() +
  ggtitle("Histogram of Grades in AS Psychology Quiz 2")

ggsave(here("Quiz 2 Histogram.png"), plot = last_plot(), device = NULL, path = NULL,
       width = 8, height = 4, units = c("in", "cm", "mm"),
       dpi = 600)

The first thing we can note is a normal distribution (Shapiro-Wilk Normality test: W= 0.89, p= 0.009). Ultimately in most methods of assessment a normal distribution is desirable.

Overall performance was very high, with an average score of 79.17% and a standard deviation of 12.5 (Range = 45% to 97.5%).

A low grade of 43.9%, while not outstanding, was far better than our midterm low of 18%, which was encouraging, and showed that students across the board improved substantially on this test. There are many reasons for this - students in both classes worked very hard, the quiz covered a narrower range of topics and less points than the midterm in the same amount of time, and overall the questions on this quiz were probably a bit on the easy side.

Lets see if we can observe any of those things by looking at the test on a question-by-question basis, which you can see in the bar chart below (Recall that you can tell this is a bar chart and not a histogram because the dependent variable (grades) is on the y axis, and because there are spaces between the levels of the factor (question number) on the X axis - which means they represent independent data points).

Quiz2Summary <- summarySE(Quiz2Grades, measurevar = "Grade", groupvars = c("Teacher", "Qnum"))

ggplot(data=Quiz2Summary, aes(x=Qnum, y= Grade, fill = Teacher)) +
  geom_bar(stat= "summary", position = pd, width = 0.8) +
  geom_errorbar(aes(ymin= Grade - se, ymax= Grade + se), width= 0.2, size = 1, position= pd)+
  #annotate("text", x=11.5, y=7.2, label = "Average Grades", hjust = 0, fontface = "bold") +
  #annotate("text", x=11.5, y=6.7, label = "Alan's Class = 52.3%", hjust = 0, color = "darkred") +
  #annotate("text", x=11.5, y=6.2, label = "June's Class = 67.2%", hjust = 0, color = "darkgrey") +
  labs(x="Question", y="Average Grade (Value)") +
  theme_alan() +
  #scale_y_continuous(limits = c(0,3), breaks=c(0:3)) +
  scale_color_manual(values= c("darkred", "darkgrey")) +
  scale_fill_manual(values= c("darkred", "darkgrey")) +
  ggtitle("Bar Plot of Grades on AS Psychology Quiz 2") 

ggsave(here("Quiz2Grades.png"), plot = last_plot(), device = NULL, path = NULL,
       width = 8, height = 4, units = c("in", "cm", "mm"),
       dpi = 600)

This is one way to visualize the results, but without discussion and reference to the specific questions, it isn’t very valuable. What it does reveal is that performance between the two classes was very similar on all questions, with only performance on the final 10 point evaluate question being different (and not significantly so) between the two classes.

Between Class Performance

Most valuably we can look at overall performance differences between the two classes, then perhaps return to any performance differences on individual questions that seem notable. You can see the distribution of performance between the two classes in the histogram below:

#Histograms by Class
JuneQ2Grades <- subset(Quiz2Totals, Teacher == "June")
AlanQ2Grades <- subset(Quiz2Totals, Teacher == "Alan")


ggplot(data=Quiz2Totals, aes(x=Grade, fill = Teacher)) +
  geom_histogram(aes(y=..density..), alpha = 0.6, position = "identity") +
  labs(x="Grade (Percentage)", y="Density") +
  # geom_text(x= 180, y = .075, label = str_wrap(testreport, 20)) +
  stat_function(fun=dnorm, args = list(mean=mean(JuneQ2Grades$Grade), sd=sd(JuneQ2Grades$Grade)), color="darkgrey", size = 1.2) +
  stat_function(fun=dnorm, args = list(mean=mean(AlanQ2Grades$Grade), sd=sd(AlanQ2Grades$Grade)), color="darkred", size = 1.2) +
  scale_fill_manual(values= c("darkred", "darkgrey")) +
  scale_x_continuous(limits = c(0,100)) +
  theme_alan() +
  ggtitle("Histogram of Grades in AS Psychology Quiz 2 - Comparison of Classes")

ggsave(here("Quiz 2 Class Histograms.png"), plot = last_plot(), device = NULL, path = NULL,
       width = 8, height = 4, units = c("in", "cm", "mm"),
       dpi = 600)

testcomp <- t.test(JuneQ2Grades$Grade, AlanQ2Grades$Grade, warning = FALSE, message = FALSE)

ClassGrades
AS Psychology- By Class Performance
Teacher Average Grade
Alan 80.7
June 77.5

We can observe two main things from the above histogram. First, June’s class performance was more varied, with two students scoring below 50% on the test. This is not particularly surprising - since the Midterm two students who were low performing in Alan’s AS Psychology course dropped the class, so his grades now reflect the performance of his stronger remaining students.

Nonetheless, the distributions of the two sets of grades are relatively normal, although again Alan’s students are tightly clustered around the mean, as can be seen by the clear modal peak in the distribution of his students scores.

The most notable thing is that there is now no significant difference in performance between the two classes, whereas on all previous assessments the performance of students in Alan’s class lagged behind substantially by around 15%. Certainly some of this performance gain can be attributed to shedding students who did not obtain very high scores, but it also appears clear that although students in both classes improved relative to the midterm, Alan’s students improved substantially.

By-Question Performance

Looking at differences between classes can provide us with one metric of performance, but ultimately as teachers we also want to be able to identify problem areas for our students, both in terms of content and in terms of types of questions that students are struggling with. The by-question performance was shown above previously, but lets take a look at it below again:

ggplot(data=Quiz2Summary, aes(x=Qnum, y= Grade, fill = Teacher)) +
  geom_bar(stat= "summary", position = pd, width = 0.8) +
  geom_errorbar(aes(ymin= Grade - se, ymax= Grade + se), width= 0.2, size = 1, position= pd)+
  #annotate("text", x=11.5, y=7.2, label = "Average Grades", hjust = 0, fontface = "bold") +
  #annotate("text", x=11.5, y=6.7, label = "Alan's Class = 52.3%", hjust = 0, color = "darkred") +
  #annotate("text", x=11.5, y=6.2, label = "June's Class = 67.2%", hjust = 0, color = "darkgrey") +
  labs(x="Question", y="Average Grade (Value)") +
  theme_alan() +
  #scale_y_continuous(limits = c(0,3), breaks=c(0:3)) +
  scale_color_manual(values= c("darkred", "darkgrey")) +
  scale_fill_manual(values= c("darkred", "darkgrey")) +
  ggtitle("Bar Plot of Grades on AS Psychology Quiz 2") 

So again that distribution doesn’t tell us very much - overall performance was good, performance between the classes was similar, etc. Lets look a bit more closely at the questions. In the interest of ease we’ll do this a few questions at a time

Quiz2Grades$GradeF <- factor(Quiz2Grades$Grade)

Quiz2Group1 <- subset(Quiz2Grades, Qnum == "1"|Qnum == "2a"|Qnum == "2b"|Qnum == "3")
Quiz2Group2 <- subset(Quiz2Grades, Qnum == "4"|Qnum == "5"|Qnum == "6"|Qnum == "7a")
Quiz2Group3 <- subset(Quiz2Grades, Qnum == "7b"|Qnum == "8a"|Qnum == "8b"|Qnum == "8c")
Quiz2Group4 <- subset(Quiz2Grades, Qnum == "9")

ggplot(data=Quiz2Group1, aes(x=GradeF)) +
  geom_histogram(stat = "count", fill = "darkred") +
  labs(x="Score", y="Count") +
  theme_alan() +
  facet_wrap(~Qnum, scales = "free_x", ncol = 2)+
  theme(text = element_text(size=24)) +
  ggtitle("AS Psychology Quiz 2 - By Question Histograms I")

We can see that all of our first 4 questions was pretty easy, with question 1 being a giveaway that every single student earned a mark on, and questions 2b and 3 having similar at-ceiling performance, with only question 2a (“Describe What is meant by theory of mind”) discriminating performance well.

ggplot(data=Quiz2Group2, aes(x=GradeF)) +
  geom_histogram(stat = "count", fill = "darkred") +
  labs(x="Score", y="Count") +
  theme_alan() +
  facet_wrap(~Qnum, scales = "free_x", ncol = 2)+
  theme(text = element_text(size=24)) +
  ggtitle("AS Psychology Quiz 2 - By Question Histograms II")

The next set of questions were somewhat more discerning.

Although all students early at least 2 marks on Question 4 (“Describe the materials that were used in both t he”doodling" condition and the “control” condition of the study by Andrade"), the grades from 2-4 were fairly evenly split.

For Question 5 (“Describe how Andrade recruited her sample of participants and explain why she decided to recruit them in this way”) a fair number of students failed to earn full marks, although again very few students obtained one or no marks.

Question 6 (“Describe one application to everyday life that the Landey et al study could have. Explain who would benefit from this application.”) was interesting. It is indeed a question from previous Cambridge examinations, but the mark scheme does not make clear how to actually award 4 marks on the question, which doesn’t really invite enough depth to properly give a 4 mark response. This can be seen in the distribution of scores on this question, which was otherwise quite easy and which students performed very well on. Ultimately I (Alan) felt that the decision of which few students received a 4 on this question was somewhat capricious, so for calculating grades we’ve lowered this to a 3 point question (the students who earned a 4 on it were given a bonus mark). This is already reflected in the data reported previously.

Question 7 (“In Laney et al, name the sampling technique”) was again a 1 point “gimme” question, and was especially a gimme question because of a mistake in the Cambridge Textbook. The mark scheme for this question correctly identifies the sampling method of this study as “opportunity sampling”, but unfortunately both the textbook and the study guides identify it as “volunteer sampling”. Because of this, we accepted either answer (and accepted a discussion of either in the subsequent Question 7b). Fortunately, the boundary in real life between opportunity and volunteer sampling is not actually very clear cut either!

ggplot(data=Quiz2Group3, aes(x=GradeF)) +
  geom_histogram(stat = "count", fill = "darkred") +
  labs(x="Score", y="Count") +
  theme_alan() +
  facet_wrap(~Qnum, scales = "free_x", ncol = 2)+
  theme(text = element_text(size=24)) +
  ggtitle("AS Psychology Quiz 2 - By Question Histograms III")

Question 7b (“Describe one advantage of this sampling technique in this study”) was actually one of the most discerning questions on the test, because even though two sets of answers were accepted most students failed to earn full marks. In general this was because they did not relate the question to specifics of the study, and only talked about their answer in general terms.

Questions 8a (“Explain what is meant by a”ceiling effect"“) and 8b (”Suggest why a “ceiling effect” is a problem in Baron-Cohen et al.“) were both very easy, but performance on Question 8c (”Studies from the cognitive approach can be used to help people understand a mental health issue. Describe how the results of the study by Baron-Cohen et al can help with understanding and/or treating autism") was again fairly spread over the range of possible responses, although again only one student earned a score of 1/4 and no students received a score of zero for the question.

ggplot(data=Quiz2Group4, aes(x=GradeF)) +
  geom_histogram(stat = "count", fill = "darkred") +
  labs(x="Score", y="Count") +
  theme_alan() +
  facet_wrap(~Qnum, scales = "free_x", ncol = 2)+
  theme(text = element_text(size=24)) +
  ggtitle("AS Psychology Quiz 2 - By Question Histograms IV")

Performance on the final question (“Evaluate Laney et al in terms of two strengths and two weaknesses/ At least one of your evaluation points must be about quantitative data”) was really strong, and I think this owes in large part to the incredible amount of practice that students have had at answering these long format questions over the previous weeks in order to better prepare them for the rigors of the full Cambridge Examinations. This performance increase came despite the fact that we have also started to taper our marking of high-value questions to be more in-line with Cambridge standards.

What this does show is that the work students are putting in is helping. Almost all of our students are now at the point that they can produce competent answers to these questions, which is much more than could be said for them at the start of the year!

Performance Improvement

In our analysis of Midterm performance, we decided that one possible explanation for the lower performance of Alan’s classes in the first two assessments was that they had been unfairly stuck with a teacher who was forced to teach them via online learning - something we know to be harder for most students, but especially difficult for students who thrive when interacting with their instructors directly.

We agreed that if Alan’s students could improve their performance and demonstrate that being on equal footing when it comes to in-class teaching would increase their grades, that we would also retroactively increase their midterm grades.

I am happy to say that my students have done exactly that - coming from being 15 points behind June’s class on the midterm to actually perform slightly better than them on this class. I have observed something similar in Practice quizzes, where many of my students have seen continued improvement week after week.

MidtermTotals <- 
  MidtermGrades %>%
  unite(Combo, Teacher, Student, sep = "-", remove = FALSE)  %>%
  group_by(Combo) %>%
  dplyr::summarise(sum = sum(Grade)) %>%
  mutate(Grade = round(sum/50*100+8, 1)) %>%
  mutate(Grade = ifelse(Grade > 100, 100, Grade))%>%
  separate(Combo, into = c("Teacher", "Student"), sep = "-", remove = TRUE) %>%
  arrange(-Grade) 

ImprovementTable <-
  Quiz2Totals %>%
    mutate(Midterm = as.numeric(plyr::mapvalues(Student,
                                        from = MidtermTotals$Student,
                                        to= MidtermTotals$Grade))) %>%
  setNames(c("Teacher", "Student", "Anon", "sum", "Quiz2", "Midterm")) %>%
  subset(select = c(Teacher, Student, Anon, Midterm, Quiz2)) %>%
  mutate(Difference = Quiz2 - Midterm) %>%
  arrange(-Difference)

ImprovementTableKnit <-
  ImprovementTable %>%
    knitr::kable(caption = "AS Psychology- Improvement Table", "html", row.names = F) %>%
    kable_styling(full_width = F) 

save_kable(ImprovementTableKnit, "AS Psychology - Improvement Table.png")

ImprovementTableKnitAnon <-
  ImprovementTable %>%
    subset(select = -c(Teacher, Student)) %>%
    knitr::kable(caption = "AS Psychology- Improvement Table", "html", row.names = F) %>%
    kable_styling(full_width = F) 

ImprovementTableKnitAnon
AS Psychology- Improvement Table
Anon Midterm Quiz2 Difference
A5 54 82.5 28.5
A2 62 87.5 25.5
A8 50 75.0 25.0
A6 66 90.0 24.0
A9 62 82.5 20.5
A3 50 70.0 20.0
J7 26 45.0 19.0
A11 74 92.5 18.5
A7 66 82.5 16.5
J4 66 80.0 14.0
A12 84 97.5 13.5
A13 74 85.0 11.0
A1 72 82.5 10.5
A4 50 60.0 10.0
J5 74 82.5 8.5
J13 80 87.5 7.5
A10 70 77.5 7.5
A14 58 65.0 7.0
J9 80 85.0 5.0
J6 46 50.0 4.0
J1 86 87.5 1.5
J12 92 90.0 -2.0
J3 78 75.0 -3.0
J10 100 92.5 -7.5
J11 88 77.5 -10.5
J8 96 85.0 -11.0
J2 84 70.0 -14.0
JuneTable <- subset(ImprovementTable, Teacher == "June")
AlanTable <- subset(ImprovementTable, Teacher == "Alan")

Best <- 
  AlanTable %>%
    arrange(-Difference)

To rehearse, on the Midterm June’s students earned an average grade of 76.6%, 12.9% higher than Alan’s students.

Overall improvement was very strong. June’s class didn’t improve much from the Midterm to Quiz 2, with an average improvement of 0.9%. Alan’s class on the otherhand improved across the board - every single student improved their score from the midterm, which shows how hard they have been working.

NB- We should be aware of some “regression to the mean” here - many of June’s students had nowhere to go but down, and some of Alan’s had nowhere to go but up, so its unsurprising that that is what happened (exceptional scores like 100% are exactly that… exceptional! Most students won’t achieve them every single time!)

So how do we adjust the grades of Alan’s students from the Midterm? Do we simply give all of them the “missing” 12.9% and call it a day? I think that wouldn’t be advisable. First, I think it’s likely that there is indeed a ceiling effect on this test, which was quite a bit easier than previous assessments. Second, I think that would remove some of the impetus my students currently have to study really hard.

As such I have decided to roll out midterm grade improvements in two phases. For now, each of my students will be awarded an additional 6.45% - half of the deficit they experienced in the midterm. The remaining half of the deficit will be issued to my students if they can show that this improvement was not a fluke by scoring close to June’s students on the End of Term exam in January.

With this revision in mind, the grades for the two classes now look like the below:

ImprovementTable2 <-
  ImprovementTable %>%
  mutate(`Midterm (R)` = ifelse(Teacher == "Alan", Midterm + 6.2, Midterm)) %>%
  arrange(Teacher) %>%
  mutate(`Quiz 1 (R)` = as.numeric(plyr::mapvalues(Student,
                                        from = SeptGrades$Student,
                                        to= SeptGrades$Revised.Grade))) %>%
  subset(select = c(Teacher, Student, Anon, `Quiz 1 (R)`, `Midterm (R)`, Quiz2)) 

#All Students
ImprovementTableKnit2 <-
  ImprovementTable2 %>%
    knitr::kable(caption = "AS Psychology- Revised Grades", "html", row.names = F) %>%
    kable_styling(full_width = F) 

save_kable(ImprovementTableKnit2, "AS Psychology - Revised Grades.png")

#Alan Anon
ImprovementTableKnit2AlanAnon <-
  ImprovementTable2 %>%
    subset(Teacher == "Alan") %>%
    subset(select = -c(Teacher, Student)) %>%
    knitr::kable(caption = "AS Psychology- Revised Grades - Alan's Class", "html", row.names = F) %>%
    kable_styling(full_width = F) 

ImprovementTableKnit2AlanAnon
AS Psychology- Revised Grades - Alan’s Class
Anon Quiz 1 (R) Midterm (R) Quiz2
A5 38.3 60.2 82.5
A2 66.7 68.2 87.5
A8 46.9 56.2 75.0
A6 71.1 72.2 90.0
A9 75.7 68.2 82.5
A3 47.4 56.2 70.0
A11 87.8 80.2 92.5
A7 57.6 72.2 82.5
A12 98.9 90.2 97.5
A13 87.3 80.2 85.0
A1 71.1 78.2 82.5
A4 36.7 56.2 60.0
A10 85.8 76.2 77.5
A14 42.4 64.2 65.0
#June Anon
ImprovementTableKnit2JuneAnon <-
  ImprovementTable2 %>%
    subset(Teacher == "Alan") %>%
    subset(select = -c(Teacher, Student)) %>%
    knitr::kable(caption = "AS Psychology- Revised Grades - June's Class", "html", row.names = F) %>%
    kable_styling(full_width = F) 

ImprovementTableKnit2JuneAnon
AS Psychology- Revised Grades - June’s Class
Anon Quiz 1 (R) Midterm (R) Quiz2
A5 38.3 60.2 82.5
A2 66.7 68.2 87.5
A8 46.9 56.2 75.0
A6 71.1 72.2 90.0
A9 75.7 68.2 82.5
A3 47.4 56.2 70.0
A11 87.8 80.2 92.5
A7 57.6 72.2 82.5
A12 98.9 90.2 97.5
A13 87.3 80.2 85.0
A1 71.1 78.2 82.5
A4 36.7 56.2 60.0
A10 85.8 76.2 77.5
A14 42.4 64.2 65.0
write.csv(ImprovementTable2, here("ASGradeExport.csv"))
ClassGrades2 <-
  ImprovementTable2 %>%
    group_by(Teacher) %>%
    dplyr::summarise_at(c("Quiz 1 (R)", "Midterm (R)", "Quiz2"), mean) %>%
    mutate_if(is.numeric, round, 1) %>%
    setNames(c("Teacher", "Quiz 1 (R)", "Midterm (R)", "Quiz 2 (R)")) %>%
    knitr::kable(caption = "AS Psychology- By Class Performance", row.names = F) %>%
    kable_styling(full_width = F) 

ClassGrades2
AS Psychology- By Class Performance
Teacher Quiz 1 (R) Midterm (R) Quiz 2 (R)
Alan 65.3 69.9 80.7
June 77.5 76.6 77.5
save_kable(ImprovementTableKnit, "AS Psychology - Revised Class Grades.png")

Grade Boundaries

With almost all grades in hand it is now possible to advise students on the grades that they will require on their final exam to obtain the various grade boundaries in the course. For example a student with a 67% in the course currently would require a 93% on the End-of-Term exam to receive an A Grade (80%) for the semester. (NB- The table below only contains grades for Alan’s students because I do not have projected homework and participation grades for June’s class)

ASGradeSheet <- read.csv(here("ASGradeSheet.csv"))

ASGradeSheetRescale <- 
  ASGradeSheet %>%
    mutate(`Quiz 1 (7.5 marks)` = round(Quiz.1..R./100*7.5,1)) %>%
    mutate(`Midterm (20 marks)` = round(Midterm..R./100*20,1)) %>%
    mutate(`Quiz 2 (7.5 marks)` = round(Quiz.2/100*7.5,1)) %>%
    mutate(`Participation (5 marks)` = Participation) %>%
    mutate(`Homework (10 marks)` = Homework) %>%
    mutate(Total = `Quiz 1 (7.5 marks)` + `Midterm (20 marks)` + `Quiz 2 (7.5 marks)` + `Participation (5 marks)` + `Homework (10 marks)`) %>%
    subset(select = c(Teacher, Student, Anon, `Quiz 1 (7.5 marks)`, `Quiz 2 (7.5 marks)`, `Midterm (20 marks)`, 
                    `Participation (5 marks)`, `Homework (10 marks)`, Total))

ASGradeSheetRescaleKnit <- 
  ASGradeSheetRescale %>%
    subset(Teacher == "Alan") %>%
    subset(select = -c(Teacher, Anon))%>%
    knitr::kable(caption = "AS Psychology- Overall Performance - Alan's Class", row.names = F) %>%
    kable_styling(full_width = F) 

save_kable(ASGradeSheetRescaleKnit, "AS Psychology - Overall Table.png")

#Anon
ASGradeSheetRescaleKnitAnon <- 
  ASGradeSheetRescale %>%
    subset(Teacher == "Alan") %>%
    subset(select = -c(Teacher, Student))%>%
    knitr::kable(caption = "AS Psychology- Overall Performance - Alan's Class", row.names = F) %>%
    kable_styling(full_width = F) 

ASGradeSheetRescaleKnitAnon
AS Psychology- Overall Performance - Alan’s Class
Anon Quiz 1 (7.5 marks) Quiz 2 (7.5 marks) Midterm (20 marks) Participation (5 marks) Homework (10 marks) Total
A12 7.4 7.3 18.0 5 10 47.7
A11 6.6 6.9 16.0 4 10 43.5
A6 5.3 6.8 14.4 4 10 40.5
A2 5.0 6.6 13.6 5 10 40.2
A13 6.5 6.4 16.0 4 10 42.9
A7 4.3 6.2 14.4 3 8 35.9
A5 2.9 6.2 12.0 3 7 31.1
A1 5.3 6.2 15.6 4 8 39.1
A9 5.7 6.2 13.6 4 8 37.5
A10 6.4 5.8 15.2 3 7 37.4
A8 3.5 5.6 11.2 3 6 29.3
A3 3.6 5.2 11.2 4 5 29.0
A4 2.8 4.5 11.2 2 5 25.5
A14 3.2 4.9 12.8 1 6 27.9

Grade Boundaries 1- Projected

So that’s our list of students and their current grades - what about the grades they need to obtain to reach the grade boundaries of the course? We can look at this in several ways (NB- The table below only contains grades for Alan’s students because I do not have projected homework and participation grades for June’s class)

ASGradeSheetBoundaries1 <- 
  ASGradeSheetRescale %>%
    mutate(`A Star` = (89.5 - Total) * 2) %>%
    mutate(A = `A Star` - 20) %>%
    mutate(B = A - 20) %>%
    mutate(C = B - 20) %>%
    mutate(D = C - 20) %>%
    mutate(E = D - 20) %>%
    mutate(`A Star` = ifelse(`A Star` >100, "NP", `A Star`)) %>%
    mutate(A = ifelse(A >100, "NP", A)) %>%
    mutate(E = ifelse(E < 0 , "NA", round(E,2))) %>%
    arrange(-Total) %>%
    subset(select = - Total) 

ASGradeSheetBoundaries1Alan <- 
  ASGradeSheetBoundaries1 %>%
    subset(Teacher == "Alan") %>%
    subset(select = -c(Teacher, Anon)) %>%
    knitr::kable(caption = "AS Psychology- Grade Boundaries I - Alan's Class", row.names = F) %>%
    add_header_above(c(" " = 1, "Current Grades" = 5, "Grade Boundaries (NP = Not Possible)" = 6)) %>%
    footnote(general = "Grade Boundaries represent the grade (percentage) a student would have to achieve on the End of Term Exam") %>%
    kable_styling(full_width = F) 

save_kable(ASGradeSheetBoundaries1Alan, "Boundaries 1 Alan.png")

ASGradeSheetBoundaries1AlanAnon <- 
  ASGradeSheetBoundaries1 %>%
    subset(Teacher == "Alan") %>%
    subset(select = - c(Teacher, Student)) %>%
    knitr::kable(caption = "AS Psychology- Grade Boundaries I - Alan's Class", row.names = F) %>%
    add_header_above(c(" " = 1, "Current Grades" = 5, "Grade Boundaries (NP = Not Possible)" = 6)) %>%
    footnote(general = "Grade Boundaries represent the grade (percentage) a student would have to achieve on the End of Term Exam") %>%
    kable_styling(full_width = F) 

ASGradeSheetBoundaries1AlanAnon
AS Psychology- Grade Boundaries I - Alan’s Class
Current Grades
Grade Boundaries (NP = Not Possible)
Anon Quiz 1 (7.5 marks) Quiz 2 (7.5 marks) Midterm (20 marks) Participation (5 marks) Homework (10 marks) A Star A B C D E
A12 7.4 7.3 18.0 5 10 83.6 63.6 43.6 23.6 3.6 NA
A11 6.6 6.9 16.0 4 10 92 72 52.0 32.0 12.0 NA
A13 6.5 6.4 16.0 4 10 93.2 73.2 53.2 33.2 13.2 NA
A6 5.3 6.8 14.4 4 10 98 78 58.0 38.0 18.0 NA
A2 5.0 6.6 13.6 5 10 98.6 78.6 58.6 38.6 18.6 NA
A1 5.3 6.2 15.6 4 8 NP 80.8 60.8 40.8 20.8 0.8
A9 5.7 6.2 13.6 4 8 NP 84 64.0 44.0 24.0 4
A10 6.4 5.8 15.2 3 7 NP 84.2 64.2 44.2 24.2 4.2
A7 4.3 6.2 14.4 3 8 NP 87.2 67.2 47.2 27.2 7.2
A5 2.9 6.2 12.0 3 7 NP 96.8 76.8 56.8 36.8 16.8
A8 3.5 5.6 11.2 3 6 NP NP 80.4 60.4 40.4 20.4
A3 3.6 5.2 11.2 4 5 NP NP 81.0 61.0 41.0 21
A14 3.2 4.9 12.8 1 6 NP NP 83.2 63.2 43.2 23.2
A4 2.8 4.5 11.2 2 5 NP NP 88.0 68.0 48.0 28
Note:
Grade Boundaries represent the grade (percentage) a student would have to achieve on the End of Term Exam

Grade Boundaries 2- Participation and Homework

The grades above are based on current projections, which for many students include grades below the maximum for participation, homework, or both. All students should ultimately be able to obtain 5 marks for participation (and this should be their encouragement to participate more!), and its still possible for all students to obtain 10 marks for homework (the homework grade is assessed based on the quality of the best 10 homework items submitted).

So lets take a look at what their grades would be like if they obtained all of these marks

ASGradeSheetBoundaries2 <- 
  ASGradeSheetRescale %>%
    mutate(`Participation (5 marks)` = 5) %>%
    mutate(`Homework (10 marks)` = 10) %>%
    mutate(Total = `Quiz 1 (7.5 marks)` + `Quiz 2 (7.5 marks)` + `Midterm (20 marks)` + `Participation (5 marks)` + `Homework (10 marks)`) %>%
    arrange(-Total) %>%
    mutate(`A Star` = (89.5 - Total) * 2) %>%
    mutate(A = `A Star` - 20) %>%
    mutate(B = A - 20) %>%
    mutate(C = B - 20) %>%
    mutate(D = C - 20) %>%
    mutate(E = D - 20) %>%
    mutate(`A Star` = ifelse(`A Star` >100, "NP", `A Star`)) %>%
    mutate(A = ifelse(A >100, "NP", A)) %>%
    mutate(E = ifelse(E < 0 , "NA", round(E,2))) %>%
    subset(select = - Total) 

# Alan
ASGradeSheetBoundaries2Alan <- 
  ASGradeSheetBoundaries2 %>%
    subset(Teacher == "Alan") %>%
    subset(select = -c(Teacher, Anon)) %>%
    knitr::kable(caption = "AS Psychology- Grade Boundaries II - Alan's Class", row.names = F) %>%
    add_header_above(c(" " = 1, "Current Grades" = 5, "Grade Boundaries (NP = Not Possible)" = 6)) %>%
    footnote(general = "Grade Boundaries represent the grade (percentage) a student would have to achieve on the End of Term Exam") %>%
    kable_styling(full_width = F) 

save_kable(ASGradeSheetBoundaries2Alan, "Boundaries 2 Alan.png")

#Alan Anonymous

ASGradeSheetBoundaries2AlanAnon <- 
  ASGradeSheetBoundaries2 %>%
    subset(Teacher == "Alan") %>%
    subset(select = -c(Teacher, Student)) %>%
    knitr::kable(caption = "AS Psychology- Grade Boundaries I - Alan's Class", row.names = F) %>%
    add_header_above(c(" " = 1, "Current Grades" = 5, "Grade Boundaries (NP = Not Possible)" = 6)) %>%
    footnote(general = "Grade Boundaries represent the grade (percentage) a student would have to achieve on the End of Term Exam") %>%
    kable_styling(full_width = F) 

ASGradeSheetBoundaries2AlanAnon
AS Psychology- Grade Boundaries I - Alan’s Class
Current Grades
Grade Boundaries (NP = Not Possible)
Anon Quiz 1 (7.5 marks) Quiz 2 (7.5 marks) Midterm (20 marks) Participation (5 marks) Homework (10 marks) A Star A B C D E
A12 7.4 7.3 18.0 5 10 83.6 63.6 43.6 23.6 3.6 NA
A11 6.6 6.9 16.0 5 10 90 70 50.0 30.0 10.0 NA
A13 6.5 6.4 16.0 5 10 91.2 71.2 51.2 31.2 11.2 NA
A10 6.4 5.8 15.2 5 10 94.2 74.2 54.2 34.2 14.2 NA
A1 5.3 6.2 15.6 5 10 94.8 74.8 54.8 34.8 14.8 NA
A6 5.3 6.8 14.4 5 10 96 76 56.0 36.0 16.0 NA
A9 5.7 6.2 13.6 5 10 98 78 58.0 38.0 18.0 NA
A2 5.0 6.6 13.6 5 10 98.6 78.6 58.6 38.6 18.6 NA
A7 4.3 6.2 14.4 5 10 99.2 79.2 59.2 39.2 19.2 NA
A5 2.9 6.2 12.0 5 10 NP 86.8 66.8 46.8 26.8 6.8
A14 3.2 4.9 12.8 5 10 NP 87.2 67.2 47.2 27.2 7.2
A8 3.5 5.6 11.2 5 10 NP 88.4 68.4 48.4 28.4 8.4
A3 3.6 5.2 11.2 5 10 NP 89 69.0 49.0 29.0 9
A4 2.8 4.5 11.2 5 10 NP 92 72.0 52.0 32.0 12
Note:
Grade Boundaries represent the grade (percentage) a student would have to achieve on the End of Term Exam
# June
ASGradeSheetBoundaries2June <- 
  ASGradeSheetBoundaries2 %>%
    subset(Teacher == "June") %>%
    subset(select = -c(Teacher, Anon)) %>%
    knitr::kable(caption = "AS Psychology- Grade Boundaries II - June's Class", row.names = F) %>%
    add_header_above(c(" " = 1, "Current Grades" = 5, "Grade Boundaries (NP = Not Possible)" = 6)) %>%
    footnote(general = "Grade Boundaries represent the grade (percentage) a student would have to achieve on the End of Term Exam") %>%
    kable_styling(full_width = F) 

save_kable(ASGradeSheetBoundaries2June, "Boundaries 2 June.png")

#June Anonymous

ASGradeSheetBoundaries2JuneAnon <- 
  ASGradeSheetBoundaries2 %>%
    subset(Teacher == "June") %>%
    subset(select = -c(Teacher, Student)) %>%
    knitr::kable(caption = "AS Psychology- Grade Boundaries II - June's Class", row.names = F) %>%
    add_header_above(c(" " = 1, "Current Grades" = 5, "Grade Boundaries (NP = Not Possible)" = 6)) %>%
    footnote(general = "Grade Boundaries represent the grade (percentage) a student would have to achieve on the End of Term Exam") %>%
    kable_styling(full_width = F) 

ASGradeSheetBoundaries2JuneAnon
AS Psychology- Grade Boundaries II - June’s Class
Current Grades
Grade Boundaries (NP = Not Possible)
Anon Quiz 1 (7.5 marks) Quiz 2 (7.5 marks) Midterm (20 marks) Participation (5 marks) Homework (10 marks) A Star A B C D E
J10 7.5 6.9 20.0 5 10 80.2 60.2 40.2 20.2 0.2 NA
J12 7.5 6.8 18.4 5 10 83.6 63.6 43.6 23.6 3.6 NA
J8 5.7 6.4 19.2 5 10 86.4 66.4 46.4 26.4 6.4 NA
J1 6.8 6.6 17.2 5 10 87.8 67.8 47.8 27.8 7.8 NA
J11 7.1 5.8 17.6 5 10 88 68 48.0 28.0 8.0 NA
J9 6.8 6.4 16.0 5 10 90.6 70.6 50.6 30.6 10.6 NA
J13 6.5 6.6 16.0 5 10 90.8 70.8 50.8 30.8 10.8 NA
J2 6.5 5.2 16.8 5 10 92 72 52.0 32.0 12.0 NA
J3 4.3 5.6 15.6 5 10 98 78 58.0 38.0 18.0 NA
J5 4.2 6.2 14.8 5 10 98.6 78.6 58.6 38.6 18.6 NA
J4 5.5 6.0 13.2 5 10 99.6 79.6 59.6 39.6 19.6 NA
J6 5.0 3.8 9.2 5 10 NP 93 73.0 53.0 33.0 13
J7 2.1 3.4 5.2 5 10 NP NP 87.6 67.6 47.6 27.6
Note:
Grade Boundaries represent the grade (percentage) a student would have to achieve on the End of Term Exam

Grade Boundaries 3- Bonus Quiz

As it stands, an A* is out of the range of possibility for many of the students. For some this is unlikely to change and probably represents their level of understanding of AS Psychology. For others, this is because of a very disappointing performance on one of the quizzes (mostly Quiz 1). Because of this, June and I have agreed to give the students an additional Bonus Quiz on December 22nd at 4:10 PM. Students will be able to use their grade on this quiz to replace their lowest current quiz grade. For example if a student earned a grade of 3/7.5 (40%) on Quiz 1, but then earned an 80% on this bonus quiz, it would replace that grade and their Quiz 1 Grade would become 6/7.5.

The projected grades below are based on students obtaining a grade on the Bonus Quiz 30% higher (2.25 marks) than their lowest quiz score.

ASGradeSheetBoundaries3 <- 
  ASGradeSheetRescale %>%
    mutate(`Participation (5 marks)` = 5) %>%
    mutate(`Homework (10 marks)` = 10) %>%
    mutate(`High Quiz (7.5 marks)` = pmax(`Quiz 1 (7.5 marks)`, `Quiz 2 (7.5 marks)`)) %>%
    mutate(`Low Quiz (7.5 marks)` = pmin(`Quiz 1 (7.5 marks)`, `Quiz 2 (7.5 marks)`)) %>%
    mutate(`Bonus Quiz (7.5 marks)` = `Low Quiz (7.5 marks)` + 2.25) %>%
    mutate(`Bonus Quiz (7.5 marks)` = ifelse(`Bonus Quiz (7.5 marks)` > 7.5, 7.5, `Bonus Quiz (7.5 marks)`)) %>%
    mutate(Total = `High Quiz (7.5 marks)` + `Bonus Quiz (7.5 marks)` + `Midterm (20 marks)` + `Participation (5 marks)` + `Homework (10 marks)`) %>%
    arrange(-Total) %>%
    subset(select = c(Teacher, Student, Anon, `High Quiz (7.5 marks)`, `Bonus Quiz (7.5 marks)`, `Midterm (20 marks)`, 
                    `Participation (5 marks)`, `Homework (10 marks)`, Total)) %>%
    mutate(`A Star` = (89.5 - Total) * 2) %>%
    mutate(A = `A Star` - 20) %>%
    mutate(B = A - 20) %>%
    mutate(C = B - 20) %>%
    mutate(D = C - 20) %>%
    mutate(E = D - 20) %>%
    mutate(`A Star` = ifelse(`A Star` >100, "NP", `A Star`)) %>%
    mutate(A = ifelse(A >100, "NP", A)) %>%
    mutate(E = ifelse(E < 0 , "NA", round(E,2))) %>%
    subset(select = - Total) 

# Alan
ASGradeSheetBoundaries3Alan <- 
  ASGradeSheetBoundaries3 %>%
    subset(Teacher == "Alan") %>%
    subset(select = -c(Teacher, Anon)) %>%
    knitr::kable(caption = "AS Psychology- Grade Boundaries III - Alan's Class", row.names = F) %>%
    add_header_above(c(" " = 1, "Current Grades" = 5, "Grade Boundaries (NP = Not Possible)" = 6)) %>%
    footnote(general = "Grade Boundaries represent the grade (percentage) a student would have to achieve on the End of Term Exam") %>%
    kable_styling(full_width = F) 

save_kable(ASGradeSheetBoundaries3Alan, "Boundaries 3 Alan.png")

#Alan Anonymous
ASGradeSheetBoundaries3AlanAnon <- 
  ASGradeSheetBoundaries3 %>%
    subset(Teacher == "Alan") %>%
    subset(select = -c(Teacher, Student)) %>%
    knitr::kable(caption = "AS Psychology- Grade Boundaries III - Alan's Class", row.names = F) %>%
    add_header_above(c(" " = 1, "Current Grades" = 5, "Grade Boundaries (NP = Not Possible)" = 6)) %>%
    footnote(general = "Grade Boundaries represent the grade (percentage) a student would have to achieve on the End of Term Exam") %>%
    kable_styling(full_width = F) 

ASGradeSheetBoundaries3AlanAnon
AS Psychology- Grade Boundaries III - Alan’s Class
Current Grades
Grade Boundaries (NP = Not Possible)
Anon High Quiz (7.5 marks) Bonus Quiz (7.5 marks) Midterm (20 marks) Participation (5 marks) Homework (10 marks) A Star A B C D E
A12 7.4 7.50 18.0 5 10 83.2 63.2 43.2 23.2 3.2 NA
A11 6.9 7.50 16.0 5 10 88.2 68.2 48.2 28.2 8.2 NA
A13 6.5 7.50 16.0 5 10 89 69 49.0 29.0 9.0 NA
A1 6.2 7.50 15.6 5 10 90.4 70.4 50.4 30.4 10.4 NA
A10 6.4 7.50 15.2 5 10 90.8 70.8 50.8 30.8 10.8 NA
A6 6.8 7.50 14.4 5 10 91.6 71.6 51.6 31.6 11.6 NA
A2 6.6 7.25 13.6 5 10 94.1 74.1 54.1 34.1 14.1 NA
A9 6.2 7.50 13.6 5 10 94.4 74.4 54.4 34.4 14.4 NA
A7 6.2 6.55 14.4 5 10 94.7 74.7 54.7 34.7 14.7 NA
A5 6.2 5.15 12.0 5 10 NP 82.3 62.3 42.3 22.3 2.3
A14 4.9 5.45 12.8 5 10 NP 82.7 62.7 42.7 22.7 2.7
A8 5.6 5.75 11.2 5 10 NP 83.9 63.9 43.9 23.9 3.9
A3 5.2 5.85 11.2 5 10 NP 84.5 64.5 44.5 24.5 4.5
A4 4.5 5.05 11.2 5 10 NP 87.5 67.5 47.5 27.5 7.5
Note:
Grade Boundaries represent the grade (percentage) a student would have to achieve on the End of Term Exam
# June
ASGradeSheetBoundaries3June <- 
  ASGradeSheetBoundaries3 %>%
    subset(Teacher == "June") %>%
    subset(select = -c(Teacher, Anon)) %>%
    knitr::kable(caption = "AS Psychology- Grade Boundaries III - June's Class", row.names = F) %>%
    add_header_above(c(" " = 1, "Current Grades" = 5, "Grade Boundaries (NP = Not Possible)" = 6)) %>%
    footnote(general = "Grade Boundaries represent the grade (percentage) a student would have to achieve on the End of Term Exam") %>%
    kable_styling(full_width = F) 

save_kable(ASGradeSheetBoundaries3June, "Boundaries 3 June.png")

#June Anonymous
ASGradeSheetBoundaries3JuneAnon <- 
  ASGradeSheetBoundaries3 %>%
    subset(Teacher == "June") %>%
    subset(select = -c(Teacher, Student)) %>%
    knitr::kable(caption = "AS Psychology- Grade Boundaries III - June's Class", row.names = F) %>%
    add_header_above(c(" " = 1, "Current Grades" = 5, "Grade Boundaries (NP = Not Possible)" = 6)) %>%
    footnote(general = "Grade Boundaries represent the grade (percentage) a student would have to achieve on the End of Term Exam") %>%
    kable_styling(full_width = F) 

ASGradeSheetBoundaries3JuneAnon
AS Psychology- Grade Boundaries III - June’s Class
Current Grades
Grade Boundaries (NP = Not Possible)
Anon High Quiz (7.5 marks) Bonus Quiz (7.5 marks) Midterm (20 marks) Participation (5 marks) Homework (10 marks) A Star A B C D E
J10 7.5 7.50 20.0 5 10 79 59 39.0 19.0 -1.0 NA
J12 7.5 7.50 18.4 5 10 82.2 62.2 42.2 22.2 2.2 NA
J8 6.4 7.50 19.2 5 10 82.8 62.8 42.8 22.8 2.8 NA
J11 7.1 7.50 17.6 5 10 84.6 64.6 44.6 24.6 4.6 NA
J1 6.8 7.50 17.2 5 10 86 66 46.0 26.0 6.0 NA
J2 6.5 7.45 16.8 5 10 87.5 67.5 47.5 27.5 7.5 NA
J9 6.8 7.50 16.0 5 10 88.4 68.4 48.4 28.4 8.4 NA
J13 6.6 7.50 16.0 5 10 88.8 68.8 48.8 28.8 8.8 NA
J3 5.6 6.55 15.6 5 10 93.5 73.5 53.5 33.5 13.5 NA
J5 6.2 6.45 14.8 5 10 94.1 74.1 54.1 34.1 14.1 NA
J4 6.0 7.50 13.2 5 10 95.6 75.6 55.6 35.6 15.6 NA
J6 5.0 6.05 9.2 5 10 NP 88.5 68.5 48.5 28.5 8.5
J7 3.4 4.35 5.2 5 10 NP NP 83.1 63.1 43.1 23.1
Note:
Grade Boundaries represent the grade (percentage) a student would have to achieve on the End of Term Exam

Grade Boundaries 4- Revised Midterm

There is one final bit of good news for Alan’s students. As mentioned above, if Alan’s students remain on par with June’s students on the End of Term exam, their grades on the Midterm will be scaled by an an additional 6.2%. The table below shows their required EoT exam grades if they obtain this additional grade scaling.

With this additional scaling, a term grade of A or A* is possible for every student in the class!

ASGradeSheetBoundaries4 <- 
  ASGradeSheetRescale %>%
    mutate(`Participation (5 marks)` = 5) %>%
    mutate(`Homework (10 marks)` = 10) %>%
    mutate(`High Quiz (7.5 marks)` = pmax(`Quiz 1 (7.5 marks)`, `Quiz 2 (7.5 marks)`)) %>%
    mutate(`Low Quiz (7.5 marks)` = pmin(`Quiz 1 (7.5 marks)`, `Quiz 2 (7.5 marks)`)) %>%
    mutate(`Bonus Quiz (7.5 marks)` = `Low Quiz (7.5 marks)` + 2.25) %>%
    mutate(`Bonus Quiz (7.5 marks)` = ifelse(`Bonus Quiz (7.5 marks)` > 7.5, 7.5, `Bonus Quiz (7.5 marks)`)) %>%
    mutate(`Midterm (20 marks)` = `Midterm (20 marks)` + 1.2) %>%
    mutate(Total = `High Quiz (7.5 marks)` + `Bonus Quiz (7.5 marks)` + `Midterm (20 marks)` + `Participation (5 marks)` + `Homework (10 marks)`) %>%
    arrange(-Total) %>%
    subset(select = c(Teacher, Student, Anon, `High Quiz (7.5 marks)`, `Bonus Quiz (7.5 marks)`, `Midterm (20 marks)`, 
                    `Participation (5 marks)`, `Homework (10 marks)`, Total)) %>%
    mutate(`A Star` = (89.5 - Total) * 2) %>%
    mutate(A = `A Star` - 20) %>%
    mutate(B = A - 20) %>%
    mutate(C = B - 20) %>%
    mutate(D = C - 20) %>%
    mutate(E = D - 20) %>%
    mutate(`A Star` = ifelse(`A Star` >100, "NP", `A Star`)) %>%
    mutate(A = ifelse(A >100, "NP", A)) %>%
    mutate(E = ifelse(E < 0 , "NA", round(E,2))) %>%
    subset(select = - Total) 

# Alan
ASGradeSheetBoundaries4Alan <- 
  ASGradeSheetBoundaries4 %>%
    subset(Teacher == "Alan") %>%
    subset(select = -c(Teacher, Anon)) %>%
    knitr::kable(caption = "AS Psychology- Grade Boundaries IV - Alan's Class", row.names = F) %>%
    add_header_above(c(" " = 1, "Current Grades" = 5, "Grade Boundaries (NP = Not Possible)" = 6)) %>%
    footnote(general = "Grade Boundaries represent the grade (percentage) a student would have to achieve on the End of Term Exam") %>%
    kable_styling(full_width = F) 

save_kable(ASGradeSheetBoundaries4Alan, "Boundaries 4 Alan.png")

#Alan Anonymous
ASGradeSheetBoundaries4AlanAnon <- 
  ASGradeSheetBoundaries4 %>%
    subset(Teacher == "Alan") %>%
    subset(select = -c(Teacher, Student)) %>%
    knitr::kable(caption = "AS Psychology- Grade Boundaries IV - Alan's Class", row.names = F) %>%
    add_header_above(c(" " = 1, "Current Grades" = 5, "Grade Boundaries (NP = Not Possible)" = 6)) %>%
    footnote(general = "Grade Boundaries represent the grade (percentage) a student would have to achieve on the End of Term Exam") %>%
    kable_styling(full_width = F) 

ASGradeSheetBoundaries4AlanAnon
AS Psychology- Grade Boundaries IV - Alan’s Class
Current Grades
Grade Boundaries (NP = Not Possible)
Anon High Quiz (7.5 marks) Bonus Quiz (7.5 marks) Midterm (20 marks) Participation (5 marks) Homework (10 marks) A Star A B C D E
A12 7.4 7.50 19.2 5 10 80.8 60.8 40.8 20.8 0.8 NA
A11 6.9 7.50 17.2 5 10 85.8 65.8 45.8 25.8 5.8 NA
A13 6.5 7.50 17.2 5 10 86.6 66.6 46.6 26.6 6.6 NA
A1 6.2 7.50 16.8 5 10 88 68 48.0 28.0 8.0 NA
A10 6.4 7.50 16.4 5 10 88.4 68.4 48.4 28.4 8.4 NA
A6 6.8 7.50 15.6 5 10 89.2 69.2 49.2 29.2 9.2 NA
A2 6.6 7.25 14.8 5 10 91.7 71.7 51.7 31.7 11.7 NA
A9 6.2 7.50 14.8 5 10 92 72 52.0 32.0 12.0 NA
A7 6.2 6.55 15.6 5 10 92.3 72.3 52.3 32.3 12.3 NA
A5 6.2 5.15 13.2 5 10 99.9 79.9 59.9 39.9 19.9 NA
A14 4.9 5.45 14.0 5 10 NP 80.3 60.3 40.3 20.3 0.3
A8 5.6 5.75 12.4 5 10 NP 81.5 61.5 41.5 21.5 1.5
A3 5.2 5.85 12.4 5 10 NP 82.1 62.1 42.1 22.1 2.1
A4 4.5 5.05 12.4 5 10 NP 85.1 65.1 45.1 25.1 5.1
Note:
Grade Boundaries represent the grade (percentage) a student would have to achieve on the End of Term Exam

Thanks for reading this report. I hope it encourages all of you to complete all remaining homework and also to participate more in class. It should also encourage you to study hard for the bonus quiz - for most of you an A star or an A is still within reach, even if you aren’t currently there.

If you have any questions or comments about student performance in the class, please don’t hesitate to get in touch via email to Alan Nielsen or June Zhu.

This report was generated using R Markdown.