Changes

1,906 bytes removed ,  04:12, 1 May 2009
no edit summary
Line 37: Line 37:  
** Attempt to create a simple Moodle module extension which can be further built off of to provide further functionality.
 
** 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
 
* Provide a script to move StudentParser.awk's output to ClassParser.awk's input
  −
=="Wishlist Accomplishments "==
  −
      
==Documentation & Resources==
 
==Documentation & Resources==
'''''StudentParser.awk''''' Input file format:
+
<img>http://achumpatoxford.com/u/files/331/0e82d68cfd2c88d8b6dec8d93d1ffd61.png</img>
<pre>
  −
Field Structure:
  −
"Mathematical Operation" "Correct?"
  −
 
  −
example:
  −
45/67 y
  −
</pre>
  −
 
  −
'''''StudentParser.awk''''' Output file format *Incomplete*
  −
<pre>
  −
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
  −
</pre>
  −
 
  −
'''''Grader.awk:'''''
  −
<pre>
  −
#!/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]
  −
 
  −
}
  −
</pre>
  −
 
  −
==Helpful stuff==
 
236

edits