Teacher Reporting: Difference between revisions
Appearance
Wwdillingham (talk | contribs) |
Wwdillingham (talk | contribs) |
||
| Line 8: | Line 8: | ||
==Goals== | ==Goals== | ||
Expand upon the PHP of the Moodle Quiz Module to parse questions involving mathematical operations for characteristics contained in the [http://www.doe.mass.edu/frameworks/current.html Massachusetts Curriculum Framework for Mathematics.] The | *Expand upon the PHP of the Moodle Quiz Module to parse questions involving mathematical operations for characteristics contained in the [http://www.doe.mass.edu/frameworks/current.html Massachusetts Curriculum Framework for Mathematics.] | ||
*Run Moodle with the modified quiz module on an XO running [http://wiki.laptop.org/go/School_server XS], The '''X'''O school '''S'''erver. | |||
==Week by week milestones== | ==Week by week milestones== | ||
Revision as of 03:02, 1 May 2009
Description
A custom Moodle quiz module which, in addition to the standard Moodle quiz features, analyzes the questions posed to the student for various qualities, such as compliance with Curriculum Standards.
Group Members
- Project Manager: Wesley Dillingham
- Additional Group Members: Jeremiah Green
Goals
- Expand upon the PHP of the Moodle Quiz Module to parse questions involving mathematical operations for characteristics contained in the Massachusetts Curriculum Framework for Mathematics.
- Run Moodle with the modified quiz module on an XO running XS, The XO school Server.
Week by week milestones
- Week 8: Have both scripts succesfully tabulating relevant information
- Week 9 :Have student to teacher data information transfer succesfully functioning with scripts.
- Week 10: Have integration with kuku, and a gui for teachers data retrieval.
"Required Accomplishment"
Wes
- Get StudentParser.awk to successfully calculate the accuracy for each mathematical operation, plus other relevant information TBD, one example will be success of division with remainders.
- Get ClassParser.awk to successfully calculate class-wide statistics on the same information
- Provide Grader.awk which grades each student, calculates a class average, tallys students in each grade interval.
Jeremiah
- Create Moodle data flow diagram to give an understanding of how the Moodle Server and corresponding database interact with Student and Teachers machines.
- Install Moodle server and DBMS on a test Virtual Machine.
- Attempt PHP calls to the Moodle DBMS.
- Attempt to create a simple Moodle module extension which can be further built off of to provide further functionality.
- Provide a script to move StudentParser.awk's output to ClassParser.awk's input
"Wishlist Accomplishments "
Links & Resources
StudentParser.awk Input file format:
Field Structure: "Mathematical Operation" "Correct?" example: 45/67 y
StudentParser.awk Output file format *Incomplete*
Field Structure: line 1: "Student MAC-Address" line 2+: "Operation type" "correct in decimal" example: 0:1e:8c:25:a0:c1 + .86 - .84 x .91 / .86
Grader.awk:
#!/usr/bin/awk
# grades -- average student grades and determine
# letter grade as well as class averages
# at the command line run: awk -f grader.awk grades.dat
BEGIN { OFS = "\t"; "date +%H:%M:%S" | getline current_time
close("date +%H:%M:%S")
print "Report printed on " current_time
}
# action applied to all input lines
{
# add up the grades
total = 0
for (i = 3; i <= NF; ++i) # i=3 skips first 2 fields - last name, first name
total+=$i
# calculate average
avg = total / (NF - 2)
# assign student's average to element of array
class_avg[NR] = avg
# determine letter grade
if (avg >= 90) grade="A"
else if (avg >= 80) grade="B"
else if (avg >= 70) grade="C"
else if (avg >= 60) grade="D"
else grade="F"
# increment counter for letter grade array
++class_grade[grade]
# print student first name, last name, average interger value, and letter grade
print $2 " " $1, int(avg), grade#, NF, NF
}
# print out class statistics
END {
# calculate class average
for (x = 1; x <= NR; x++)
class_avg_total += class_avg[x]
class_average = class_avg_total / NR
# determine how many above/below average
for (x = 1; x <= NR; x++)
if (class_avg[x] >= class_average)
++above_average
else
++below_average
# print results
print ""
print "Class Average: ", class_average
print "At or Above Average: ", above_average
print "Below Average: ", below_average
# print number of students per letter grade
for (letter_grade in class_grade)
print letter_grade ":", class_grade[letter_grade]
}