Individualised test paper generation (and marking)

I would like to use mathematica to create individualised tests that can be printed out for students to complete(handwritten). I would also like to be able to generate individualised printed answers.

(As a bonus I would like to be able to scan in student responses and have them graded. I understand this would involve handwriting recognition which is problematic, but I could make it easier by restricting the answers (eg numbers) and getting student handwriting examples.)

The particular case I have in mind is giving students the coordinates of 3 randomised, integer points in the plane and having them proceed to work out various triangle centers using coordinate geometry. The answers would be points in the plane as pairs of mixed frations or decimals rounded appropriately. I would also have them graph them on paper and with geogebra or desmos.

I have used Mathematica to generate data and export it to Excel and then Mail Merge to Word.

f[{a_, b_, c_}] = a^2 + b^2 - c^2; (*To test Obtuse vs acute*)

SetDirectory["C:XXX\\Triangle Centres\\MailMerge"]

outfile = "out.csv";

l = {};

k = 0;

Do[{
{P, Q, R} =
RandomVariate[MultinormalDistribution[{8, 8}, {{24, 0}, {0, 24}}],
3] // Round,
{p, q, r} =
Sort[Apply[
SquaredEuclideanDistance, {{Q, R}, {P, R}, {P, Q}}, {1}]],
If[f[{p, q, r}] > 0 && r != q, (*Exclude Obtuse or Isosocles*)
{
filenamei = ToString[k] <> "i.png",
in = Insphere[{P, Q, R}] // N // First,
g = RegionCentroid[Triangle[{P, Q, R}]] // N;
ci = Circumsphere[{P, Q, R}] // First // N,
l = Append[l, Flatten[{k, filename, P, Q, R, in, g, ci}]],
Export[filenamei,
Graphics[{PointSize[Large], Point[{P, Q, R}], Line[{P, Q, R, P}],
Insphere[{P, Q, R}] // First // Point, Point[g],
Circumsphere[{P, Q, R}] // First // Point}, Axes -> True,
GridLines -> Automatic, AspectRatio -> 1]],
k++
}]
}, 1000]

k

Export[outfile, l]


Here is the cut and pasted word document (with the points (8,9) and names, etc. included via Mail Merge). I then print this. I haven't implemented answer generation or automatic marking.

Name: Joe Bloggs

Three Points in the Plane
Point A:        ( 8 , 9 )
Point B:        ( 0 , 2 )
Point C:        ( 10 , 2 )
Point Gradient Equation:    y-y_1=m(x-x_1 )

Line AB
Equation:__________________________________________________________________________
__________________________________________________________________________________
Line BA
Equation:__________________________________________________________________________
__________________________________________________________________________________
Line CA
Equation:__________________________________________________________________________
__________________________________________________________________________________

On graph paper:
Plot the points A, B and C
Label the points A, B and C
Draw in the lines AB, BC and AC.
Label the sides by their equations
Altitudes
(An Altitude of a triangle is a line perpendicular to a side through the opposite vertex)
Perpendicular lines have:   m×m_⊥=-1
Altitude through C
Equation:__________________________________________________________________________
__________________________________________________________________________________
Altitude through A
Equation:__________________________________________________________________________
__________________________________________________________________________________
Altitude through B
Equation:__________________________________________________________________________
__________________________________________________________________________________

Point of Intersection (Orthocenter): H=  (  ___________  ,  _______  )
Find the intersection of two altitudes:

Check this point is on the third altitude:

Centroid:   G=(  ___________  ,  _______  )
The centroid is the centre of mass given by G=((x_1+x_2+x_3)/3,(y_1+y_2+y_3)/3)

On a new graph draw the triangle ∆ABC together with the altitudes, orthocentre H and centroid G


Can some one achieve this solely in Mathematica?

The pedagogical aspects of this as discussed at MathEducators stackexchange

Alternative approaches: Latex and Mathematica

• If this is still a big desire, I was just talking to my cohort about having this be a project in our campus’s (currently in pre-build stage) Wolfram Club. I was using this as an example of a non-physics thing we could do, and also attract some teacher interest. I wonder if we might draw inspiration from the limited set analysis techniques that have emerged recently? – CA Trevillian May 21 '19 at 4:56
• Thank you for the template @pdmclean! I’m unsure if I received an email back from you, if so, it was buried! (Did I send one? Hah!) I will see about creating something this weekend, if anyone beats me to it, even better ;) – CA Trevillian May 22 '19 at 13:13
• Also this question you bolded is a perfect example of the need to adapt to certain students. You are clearly asking how in your edit, but a keen student might notice that this is asking “can I”, and not, say, “how can I”. You might be able to detect if an extended explanation was given or not, for example, as opposed to just “Yes!” Or “No.”, and then present the inquiry again, as opposed to creating a “downtrodden” environment for the student, by catching them in catch-22’s. This will still teach one to read carefully and completely, of course, just as the other method would. :D – CA Trevillian May 22 '19 at 13:17

To answer the current bolder question: Yes. I am confident about this. All of the pieces are there, we just need only to put them together now! As for how, on the other hand...it will take a team (of college students) at least a half-semester. And that’s more of a when, not how. We should make a public github to host this. If I am done with certain projects this week, I will code something into a public github and link it here. Anyone else is welcome to begin also, but this is multifaceted in both it’s inevitable use, and the construction that will go into it.

I will make this our club’s first project, as a method of exploring methods of teaching (physics, to start).

So, not entirely an answer, but this is not entirely a question (being that neither would be self contained), and while I cannot comment, I love this idea! I think this would be a great post on Wolfram Community, But I will comment here, anyways:

This sounds like it would be an amazing project for the Wolfram Summer School, for which you have until May 25th (I think?) to apply! Find details here.

Also, I am really intrigued mainly because this is almost parallel or adjacent to an idea for a side project I have in mind to work out during my PhD, while the research group I am apart of seeks to interact more with our surrounding communities through AI , NN, & Machine Learning -focused educational outreach. I would be greatly interested in helping to develop this!

This project would greatly benefit from applications of "Statistical Discourse Analysis", in which, as I understand it, conversation within problem solving (during online lessons, for example) can be categorized and analyzed for inflection points, or changes of density of certain types of interactions, for example, from which more abstract data about the lessons effectiveness, and how the internal interactions played out, can then be interpolated. Details on this, here. I anticipate my explanation and understanding are crass, at best, and for this I have included a reference to Professor Ming Ming Chiu's paper from which my knowledge of this concept originates.

I hope this reaches you well, and I look forward to your possible interest in collaboration with myself and others on this type and level of project! I hope this answer does not come across as overly forward, I would very much like to see this be realized and implemented.

• I'm glad you like it. Please be aware my interests are more mundane than your research seems - I just wanna grade papers... – pdmclean Apr 19 '19 at 9:58
• Send me an email (see my profile) for further discussion. The Summer School thing sounds neat perhaps. – pdmclean Apr 19 '19 at 10:00
• @pdmclean actually same here pretty much, maybe I'm overthinking it, but I'd hope you could adaptively generate lesson plans based on performance. This interest is based off of one of my professor's belief that tests, at their very core, should teach you something in addition to actually testing you. For some creation of a generalized grading book and test submission interface, this would present an enjoyable task :) this would necessitate the use of neural networks for drawing & writing recognition. That can be supplied by another project I am working on, but in a vastly different application – CA Trevillian Apr 19 '19 at 10:08