Changes

6,458 bytes removed ,  14:36, 7 July 2009
removed code section, it has been replaced with collaboration section
Line 479: Line 479:  
[[image:ScreenInstalling.png]]
 
[[image:ScreenInstalling.png]]
   −
== Code ==
  −
  −
Code (parser.awk) can be downloaded [http://www.filedropper.com/parser here] <br>
  −
Date file (students.dat) can be downloaded [http://www.filedropper.com/students here]
  −
<br>
  −
<br>
  −
  −
With data in the same directory and with your PWD also as the same directory.
  −
Issue the command @ the command line:
  −
<pre>awk -f parser.awk students.dat</pre>
  −
  −
  −
<br>
  −
'''Parser.awk:'''
  −
<pre>
  −
#Wesley Dillingham
  −
#Filename parser.awk
  −
#Last updated May 17th 2009
  −
  −
BEGIN{
  −
printf("%-11s%-8s%-11s%-8s%-11s%-8s%-11s%-8s%-11s%-11s\n", "Student", "Only +", "Contains +", "Only -", "Contains -", "Only
  −
*", "Contains *", "Only /", "Contains /", "Understands OoO?")
  −
}
  −
  −
{
  −
#*****Field Reference *************
  −
  −
#MAC=$1
  −
#NAME=$2
  −
#OPERATION=$3
  −
#SUCCESS=$4
  −
  −
#************************************
  −
  −
#Because in the end statement we will have to loop through one of the arrays, which will be localized according
  −
#to specific aritmetic operations (- + / *). We need to account for the fact that some students may not answer a
  −
#question with one of these operations, and if we looped through that particular operation, we would not represent
  −
#that student in any of the logic containted within that loop in the END{} statment. Therefore an associative array
  −
#which absolutely, accounts for any student, contained in the .dat, the CLASS[] array.
  −
CLASS[$2]
  −
 
  −
#any line that has division, but not necessarily just. 
  −
if ( match($3, /\//) )
  −
{
  −
#How many division problem student $2 encounters = divison[$2]
  −
division[$2]++
  −
  −
if ( $4 == "1" )
  −
{
  −
division_correct[$2]++
  −
}
  −
}
  −
  −
#any line with multiplication but not  neccearily just multiplication
  −
if ( match($3, /\*/) )
  −
{
  −
#How many multiplication problem student $2 encounters = multiplication[$2]
  −
multiplication[$2]++
  −
  −
if ( $4 == "1" )
  −
{
  −
multiplication_correct[$2]++
  −
}
  −
  −
}
  −
  −
#any line with addition but not necessarily just addition
  −
if ( match($3, /\+/) )
  −
{
  −
#How many addition problem student $2 encounters = addition[$2]
  −
addition[$2]++
  −
  −
if ( $4 == "1" )
  −
{
  −
addition_correct[$2]++
  −
}
  −
}
  −
  −
#contains subtractions, excludes negative numbers, as it only matches expressions with a "-" sandwiched b/w two digits
  −
if ( match($3, /[0-9]\-[0-9]/) ) 
  −
{
  −
#How many subtraction problem student $2 encounters = subtraction[$2]
  −
subtraction[$2]++
  −
  −
if ( $4 == "1" )
  −
{
  −
subtraction_correct[$2]++
  −
}
  −
}
  −
  −
  −
  −
# Matches operations with ONLY DIVISION
  −
if ( match($3, /\//) && !match($3, /[0-9]\-[0-9]/) && !match($3, /\+/) && !match($3, /\*/) )
  −
{
  −
  −
#How many ONLY division problem student $2 encounters = 0_divison[$2]
  −
o_division[$2]++
  −
  −
if ( $4 == "1" )
  −
{
  −
o_division_correct[$2]++
  −
}
  −
  −
  −
}
  −
  −
# Matches operations with ONLY SUBTRACTION
  −
if (  !match($3, /\//) && match($3, /[0-9]\-[0-9]/) && !match($3, /\+/) && !match($3, /\*/) )
  −
{
  −
#How many ONLY subtraction problem student $2 encounters = o_subtraction[$2]
  −
o_subtraction[$2]++
  −
  −
if ( $4 == "1" )
  −
{
  −
o_subtraction_correct[$2]++
  −
}
  −
  −
}
  −
  −
# Matches operations with ONLY ADDITION
  −
if (  !match($3, /\//) && !match($3, /[0-9]\-[0-9]/) && match($3, /\+/) && !match($3, /\*/) )
  −
{
  −
#How many ONLY Addition problem student $2 encounters = o_addition[$2]
  −
o_addition[$2]++
  −
  −
if ( $4 == "1" )
  −
{
  −
o_addition_correct[$2]++
  −
}
  −
  −
}
  −
  −
# Matches operations with ONLY MULTIPLICATION
  −
if (  !match($3, /\//) && !match($3, /[0-9]\-[0-9]/) && !match($3, /\+/) && match($3, /\*/) )
  −
{
  −
#How many ONLY MULTIPLICATION problem student $2 encounters = o_multiplication[$2]
  −
o_multiplication[$2]++
  −
  −
if ( $4 == "1" )
  −
{
  −
o_multiplication_correct[$2]++
  −
}
  −
  −
}
  −
  −
#How many problems an individual student faced: for classwide statistics we simply use the built-in var NR
  −
numproblems[$2]++
  −
  −
#Determine if it is a compound operation if so increment by one, this requires 4 if's as we have to check if each of them exists in
  −
# conjuntion with another.
  −
#Keep track of total compounds and compounds correct.
  −
#Else-if structure required because if stringed If's were used each compound match would register twice.
  −
  −
if ( match($3, /\//) && ( match($3, /[0-9]\-[0-9]/) || match($3, /\+/) || match($3, /\*/) ) )
  −
{
  −
compound[$2]++
  −
  −
if ($4 == "1") #if correct
  −
{
  −
compound_correct[$2]++
  −
}
  −
}
  −
else if (  match($3, /[0-9]\-[0-9]/) && (match($3, /\//) || match($3, /\+/) || match($3, /\*/) ) )
  −
{
  −
compound[$2]++
  −
  −
if ($4 == "1") #if correct
  −
{
  −
compound_correct[$2]++
  −
}
  −
  −
}
  −
else if ( match($3, /\+/) && ( match($3, /[0-9]\-[0-9]/) || match($3, /\//) || match($3, /\*/) ) )
  −
{
  −
compound[$2]++
  −
  −
if ($4 == "1") #if correct
  −
{
  −
compound_correct[$2]++
  −
}
  −
}
  −
else if  ( match($3, /\*/) && ( match($3, /\+/) ||  match($3, /[0-9]\-[0-9]/) || match($3, /\//) ) )
  −
{
  −
compound[$2]++
  −
  −
if ($4 == "1") #if correct
  −
{
  −
compound_correct[$2]++
  −
}
  −
  −
}
  −
else # This allows for easy way to harness non compound statements, instead of going through a whole new slew of logic statements.
  −
{
  −
  −
non_compound[$2]++
  −
  −
if ($4 == "1") #if correct
  −
{
  −
non_compound_correct[$2]++
  −
}
  −
  −
}
  −
  −
  −
if ( $4 == "1" )
  −
{totalcorrect[$2]++}
  −
  −
}#end of AWK_MAIN
  −
END{
  −
  −
  −
  −
#loops through all of the elements in the array CLASS[]
  −
#Here We will print out the students
  −
  −
for (student in CLASS)
  −
{
  −
  −
# A student doesnt understand order of operations if their is a greater than 20% difference in between compound
  −
# operations and single operation instructions, but only if lower on the compound instruction side.
  −
# or if they get less than 70% on compounds, because getting a 51% on compounds and 70% on non compounds doesnt satisfy
  −
# understaning of OoO
  −
  −
if ( ( (non_compound_correct[student] / non_compound[student]) - (compound_correct[student] / compound[student]) > .2 ) ||
  −
( (non_compound_correct[student] / non_compound[student]) ) < .7)
  −
{
  −
understands= "no"
  −
}
  −
else
  −
{
  −
understands= "yes"
  −
}
  −
  −
  −
#need to address divide by 0 issue
  −
printf("%-11s%-8s%-11s%-8s%-11s%-8s%-11s%-8s%-11s%-11s\n", student,
  −
int(o_addition_correct[student]*100/o_addition[student]), int(addition_correct[student]*100/addition[student]),
  −
int(o_subtraction_correct[student]*100/o_addition[student]), int(subtraction_correct[student]*100/subtraction[student]),
  −
int(o_multiplication_correct[student]*100/o_multiplication[student]),
  −
int(multiplication_correct[student]*100/multiplication[student]), int(o_division_correct[student]*100/o_division[student]),
  −
int(division_correct[student]*100/division[student]), understands) 
  −
  −
  −
  −
}
  −
  −
} #end of AWK_END
  −
  −
  −
  −
</pre>
      
==After Class Plans==
 
==After Class Plans==
236

edits