Kirby wrote:
> Our founder, Scott, was therefore highly suspicious of Khan Academy,
> not because the videos were of low quality, but because in his experience
> too many people were missing too much of the hands-on component.
> Perfunctory multiple choice tests based on memorizing (regurgitating
> information) were in Scott's mind a terrible travesty purveying only the
> illusion of learning.
I have followed Scott's blogs for a number of years now, and I have
learned quite a bit from his writings. However, I don't know much
about the details of the software he created. Did any of the
math-related educational software he create have step-by-step problem
solving abilities? For example, could his software solve high school
level equations the way a human typically would and show all of the
steps it took to arrive at a solution? In my opinion, any math related
educational software that does not have step-by-step abilities like
this (either in the tutorial software or in the automatic grading
software) is also only providing the illusion of learning.
> Does a human ever see the final result?
Yes. The students submit their worksheets using an LMS, and I am
looking at their programs for now. However, I am grading their
exercises using the same grading code that the students have. As I
look at a student's code, if I see a property of the code or the
result it returns that I forgot to have the grader check for, I create
grading code for this property and add it to the other grading code
for this exercise. My goal is to make the grading code so good that I
don't need to physically look at student code.
Beyond this, each time a fold is evaluated in an assignment worksheet,
a copy of the code the fold contains is placed into a log file along
with a timestamp and other metadata. This log is turned in along with
the worksheet it goes with so the following information can be
determined:
a) How much time a student spent on each exercise in an assignment -
This information is helpful for determining if a given student is
having trouble grasping one or more concepts that a specific exercise
was designed to relay. If a significant number of students took a long
time to finish a given exercise, this indicates that the educational
materials that relate to the exercise need to be improved.
b) When the student worked on each exercise - This information is
helpful for answering questions such as: Did the student start working
on the assignment soon after it was given out, or did they wait until
just before it was due to start it? What time of the day did the
student do most of the work? Did they complete most of the assignment
in lab, or did they do it late at night in their dorm room?
c) How did the student evolve the code to arrive at a solution? For
example, did they build up their program from small separately tested
parts, or did they try to write the complete program before testing
any of it?
d) Did the student cheat? - If a complete and complex program that
does not produce any errors appears in an empty fold, there is a good
chance it was pasted into the fold.
> Fine points of style need to be caught by the human eye sometimes.
> Like sometimes they use one-letter variable names, a bad habit inherited
> from mathematicians. :-D
Automatic grading code can check for style properties of students
code. For example, in the following MathPiper code, the code in the
%mathpiper_grade fold checks to make sure that only variable names
that are longer than a single character are used in the %mathpiper
fold:
%mathpiper,name="Exercise 2",subtype="exercise"
a := RandomInteger(2);
If(a =? 1)
{
b := "HEADS";
};
If(a =? 2)
{
b := "TAILS";
};
b;
%/mathpiper
%output,parent="Exercise 2",sequence="28",timestamp="2015-09-18
14:28:50.355",preserve="false"
Result: "TAILS"
. %/output
%mathpiper_grade,name="Exercise 2"
FoldGrade("The program uses variable names that are longer than a
single character", 1)
{
UnFlatten(MapSingle(Lambda([variable], Length(ToString(variable))
>? 1), VarList(foldCode)), "&?", True);
};
%/mathpiper_grade
%output,parent="Exercise 2",sequence="29",timestamp="2015-09-18
14:29:06.52",preserve="false"
Result: False
Side Effects:
FAIL: The program uses variable names that are longer than a
single character. (0/1)
0/1 points
. %/output
If there are other properties of code that you think would be useful
for an automatic grader to check for, I would love to hear about them
:-)
Ted