Teacher Reporting

From Sugar Labs
Revision as of 15:56, 16 June 2009 by Wwdillingham (talk | contribs)
Jump to: navigation, search


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.

The modified Moodle modules will run on a customized XS School Server operating system. Our goal is to allow results and / or grades, from student activities to be readily available to teachers. Based on their wants and needs, the teachers can then generate custom reports on a class or student and have the ability to determine what types of problems students are finding most difficult. In the end we imagine the XS environment running on an XO itself, allowing the teachers the same portability as the students.


To help in code contribution of this project, please visit us at our Git

Group Members


  • 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.
  • Parse mathematical-operation-based and tally percentage of success with each individual operation (+,-,/,* etc).
  • Run Moodle with the modified quiz module on an XO running XS, The XO school Server.
  • Create Moodle data flow diagram to give an understanding of how the Moodle Server and corresponding database interact with Student and Teachers machines.
  • Have Moodle's latest stable release functioning in an XS School Server VirtualBox OSE Virtual Machine
  • Have Moodle's latest stable release functioning on an XO running XS using the techniques outlined here.
  • Have PHP calls successfully querying mock student results from Moodle's MySQL database running on XS.

Data Flow Diagram

Teacher Reporting Diagram.jpg

Curriculum Requirements and Relevant Activities

Students engage in problem solving, communicating, reasoning, connecting, and representing as they:

Id Standard Description Who's working on The activity? What Sugar activity satisfies this objective? What Information does Teacher Reporting App need?
4.N.1 Exhibit an understanding of the base ten number system by reading, modeling, writing, and interpreting whole numbers to at least 100,000; demonstrating an understanding of the values of the digits; and comparing and ordering the numbers. Adam Schreiber Deka
4.N.2 Represent, order, and compare large numbers (to at least 100,000) using various forms, including expanded notation, e.g., 853 = 8 x 100 + 5 x 10 + 3. UTOS-XO, Adam Schreiber Deka
4.N.3 Demonstrate an understanding of fractions as parts of unit wholes, as parts of a collection, and as locations on the number line. None None
4.N.4 Select, use, and explain models to relate common fractions and mixed numbers (1/2, 1/3, 1/4, 1/5, 1/6, 1/8, 1/10, 1/12, and 11/2), find equivalent fractions, mixed numbers, and decimals, and order fractions. None None
4.N.5 Identify and generate equivalent forms of common decimals and fractions less than one whole (halves, quarters, fifths, and tenths). None None
4.N.6 Exhibit an understanding of the base ten number system by reading, naming, and writing decimals between 0 and 1 up to the hundredths. Adam Schreiber Deci
4.N.7 Recognize classes (in particular, odds, evens; factors or multiples of a given number; and squares) to which a number may belong, and identify the numbers in those classes. Use these in the solution of problems. Doug Glenn None
4.N.8 Select, use, and explain various meanings and models of multiplication and division of whole numbers. Understand and use the inverse relationship between the two operations. None None
4.N.9 Select, use, and explain the commutative, associative, and identity properties of operations on whole numbers in problem situations, e.g., 37 x 46 = 46 x 37, (5 x 7) x 2 = 5 x (7 x 2). None None
4.N.10 Select and use appropriate operations (addition, subtraction, multiplication, and division) to solve problems, including those involving money. None None
4.N.11 Know multiplication facts through 12 x 12 and related division facts. Use these facts to solve related multiplication problems and compute related problems, e.g., 3 x 5 is related to 30 x 50, 300 x 5, and 30 x 500.
4.N.12 Add and subtract (up to five-digit numbers) and multiply (up to three digits by two digits) accurately and efficiently. UTOS-XO None
4.N.13 Divide up to a three-digit whole number with a single-digit divisor (with or without remainders) accurately and efficiently. Interpret any remainders. UTOS-XO None
4.N.14 Demonstrate in the classroom an understanding of and the ability to use the conventional algorithms for addition and subtraction (up to five-digit numbers), and multiplication (up to three digits by two digits). None None
4.N.15 Demonstrate in the classroom an understanding of and the ability to use the conventional algorithm for division of up to a three-digit whole number with a single-digit divisor (with or without remainders). None None
4.N.16 Round whole numbers through 100,000 to the nearest 10, 100, 1000, 10,000, and 100,000. User:ossfm Hop-A-Round
4.N.17 Select and use a variety of strategies (e.g., front-end, rounding, and regrouping) to estimate quantities, measures, and the results of whole-number computations up to three-digit whole numbers and amounts of money to $1000, and to judge the reasonableness of the answer. None None
4.N.18 Use concrete objects and visual models to add and subtract common fractions. None None

Patterns, Relations, and Algebra

Students engage in problem solving, communicating, reasoning, connecting, and representing as they:

Id Standard Description Who's working on The activity? What Sugar activity satisfies this objective? What Information does Teacher Reporting App need?
4.P.1 Create, describe, extend, and explain symbolic (geometric) and numeric patterns, including multiplication patterns like 3, 30, 300, 3000, …. Adam Schreiber, User:Dfu Deka
4.P.2 Use symbol and letter variables (e.g. v, x) to represent unknowns or quantities that vary in expressions and in equations or inequalities (mathematical sentences that use =, <, >). None None
4.P.3 Determine values of variables in simple equations, e.g., 4106 – x = 37, 5 = y + 3, and s – y = 3. User:Gdk (developer),User:Rholden https://fedorahosted.org/dungeonsofmongo/
4.P.4 Use pictures, models, tables, charts, graphs, words, number sentences, and mathematical notations to interpret mathematical relationships. None None
4.P.5 Solve problems involving proportional relationships, including unit pricing (e.g., four apples cost 80¢, so one apple costs 20¢) and map interpretation (e.g., one inch represents five miles, so two inches represent ten miles). None None
4.P.6 Determine how change in one variable relates to a change in a second variable, e.g., input-output tables. User:Rholden None


Students engage in problem solving, communicating, reasoning, connecting, and representing as they:

Id Standard Description Who's working on The activity? What Sugar activity satisfies this objective? What Information does Teacher Reporting App need?
4.G.1 Compare and analyze attributes and other features (e.g., number of sides, faces, corners, right angles, diagonals, and symmetry) of two- and three-dimensional geometric shapes. None None
4.G.2 Describe, model, draw, compare, and classify two- and three-dimensional shapes, e.g., circles, polygons- especially triangles and quadrilaterals—cubes, spheres, and pyramids. None None
4.G.3 Recognize similar figures. None None
4.G.4 Identify angles as acute, right, or obtuse. None None
4.G.5 Describe and draw intersecting, parallel, and perpendicular lines. None None
4.G.6 Using ordered pairs of numbers and/or letters, graph, locate, identify points, and describe paths (first quadrant). None None
4.G.7 Describe and apply techniques such as reflections (flips), rotations (turns), and translations (slides) for determining if two shapes are congruent. None None
4.G.8 Identify and describe line symmetry in two-dimensional shapes. None None
4.G.9 Predict and validate the results of partitioning, folding, and combining two- and three-dimensional shapes. None None


Students engage in problem solving, communicating, reasoning, connecting, and representing as they:

Standard Description Who's working on The activity? What Sugar activity satisfies this objective? What Information does Teacher Reporting App need?
4.M.1 Demonstrate an understanding of such attributes as length, area, weight, and volume, and select the appropriate type of unit for measuring each attribute. None None
4.M.2 Carry out simple unit conversions within a system of measurement, e.g., hours to minutes, cents to dollars, yards to feet or inches, etc. None None
4.M.3 Identify time to the minute on analog and digital clocks using a.m. and p.m. Compute elapsed time using a clock (e.g., hours and minutes since…) and using a calendar (e.g., days since…). None None
4.M.4 Estimate and find area and perimeter of a rectangle, triangle, or irregular shape using diagrams, models, and grids or by measuring. None None
4.M.5 Identify and use appropriate metric and English units and tools (e.g., ruler, angle ruler, graduated cylinder, thermometer) to estimate, measure, and solve problems involving length, area, volume, weight, time, angle size, and temperature. None None

Data Analysis, Statistics, and Probability

Students engage in problem solving, communicating, reasoning, connecting, and representing as they:

Id Standard Description Who's working on The activity? What Sugar activity satisfies this objective? What Information does Teacher Reporting App need?
4.D.1 Collect and organize data using observations, measurements, surveys, or experiments, and identify appropriate ways to display the data. None None
4.D.2 Match a representation of a data set such as lists, tables, or graphs (including circle graphs) with the actual set of data. None None
4.D.3 Construct, draw conclusions, and make predictions from various representations of data sets, including tables, bar graphs, pictographs, line graphs, line plots, and tallies. None None
4.D.4 Represent the possible outcomes for a simple probability situation, e.g., the probability of drawing a red marble from a bag containing three red marbles and four green marbles. None None
4.D.5 List and count the number of possible combinations of objects from three sets, e.g., how many different outfits can one make from a set of three shirts, a set of two skirts, and a set of two hats? None None
4.D.6 Classify outcomes as certain, likely, unlikely, or impossible by designing and conducting experiments using concrete objects such as counters, number cubes, spinners, or coins. None None

"How to Play/Use" for end user

Our project is not intended for a direct use by students. Components (not yet developed) under the scope of our project exist on students computer's in so far as facilitating the data movement from the XO to the XS. Therefore, there are no directions for students on how to use our application, it will be entirely transparent to them. When a student begins an activity which is compatible with our application, it will automatically report information to the API. Our application will then read this information from the API and produce reports to the teacher. We envision this interface to be web based, allowing the teacher to select particular games, and as a subcategory, the particular curriculum requirements in which that game uses.

At this moment (5/18/2009) we only have a script which analyzes performance on particular mathematical operations and the students ability to understand order of operations.

In order to run this script (parser.awk) issue the command,
awk -f parser.awk students.dat

Teachers guide

Student.dat file fields:
0C7B6G0023BC Wesley 9/3+7 1
0C7B6G04DBBA Jeremiah 4+10/7 0
0C7B6GBA5D7D Billy 88-28*2 0
0C7B6G07E9HB Bob 4*5 1
Ouput Example:
Student    Only +  Contains + Only -  Contains - Only *  Contains * Only /  Contains / Understands OoO?
wes        25      28         12      100        80      83         71      53         no         
bob        80      77         0       66         100     100        33      60         yes        
jeremiah   0       0          16      33         40      50         14      33         no         
billy      66      70         33      53         50      37         100     80         yes        

note: This output is not reflective of the student.dat example data above

XS SchoolServer on the XO

A major barrier to achieving our goals is the idea that the School Server needs the ability to be versatile and portable. While some may have resources to dedicate substantial hardware to such a server, others may find themselves with nothing more than the XO laptops. From this stems the idea of running this server on one of the XO laptops via either a USB flash drive, SD card, or the internal NAND hard drive.

When fully installed on an SD card, the base operating system takes up about 1.6GB. There is a small amount of documentation available which is excellent and extremely helpful, but it can be difficult to use at times. Below is a quick break down of what we did and how to replicate it.

How To:

The most helpful website to read before beginning can be found here: Laptop.org's XS-on-XO.

Necessary hardware to replicate our setup includes:
  • XO Laptop
  • Linux Computer with SD Card Reader
    • Can be physical machine or virtual. Also, some things can be done in Windows.
  • SD card which is at least 4GB (We used an 8GB A-DATA SDHC)
Un-compress the image:
Setting Up the Environment

With the SD card connected to the Linux PC:

  • Using a tool of your choice format the SD card to ext2 or ext3 (Linux 83).
    • Gparted was excellent for formating the SD card to ext3, but fdisk would also work.
  • Mark the partition with the boot flag
    • This can be done using gparted, but in several instances errors were experienced. In lieu fdisk works great.
    • To enter fdisk, use
fdisk /dev/sd*1
fdisk /dev/mmcblk*p1
  • where * is the letter associated with the SD device and the 1 is the partition. Once in fdisk, use the help to determine the specific command to mark the boot flag. In most instances it will be "a".
  • Next ensure the .img file, uncompressed previously, is accessible by the Linux machines.
  • Use the command,
dd if=OLPC-School-Server-0.5.2-dev01-i386.img of=/dev/sd*1
dd if=OLPC-School-Server-0.5.2-dev01-i386.img of=/dev/mmcblk*p1
    • This will take some time depending on the system performance.
  • Use resize2fs to re-size the partition
resize2fs -p /dev/sd*1
resize2fs -p /dev/mmcblk*p1
Getting a Developer Key
  • First the XO must have a developer's key!!!
  • The easiest way to go about obtaining this is to boot into the XO's Sugar OS. Open the browse application. Near the bottom right of the home page, there will be a link for "Get a Developer Key".
    • Click this link and on the next page click the "Submit Query." Go through this process again after 24 hours and the key should be available.
    • Upon return follow the directions displayed to download the key.
  • Reboot the XO and tap the "Esc" key to interrupt the booting procedure. At the ok prompt type:
    ok disable-security
    • The machine will probably reboot. If so, tap the "Esc" key and type the above command again. It may reboot one final time.
    • Upon this reboot tap the "Esc" key again and type the above command a final time. It should print out:
ok disable-security
No wp tag
Booting the XO from the SD

More than likely, this will not work right away, most implementations require some tweaking prior to properly booting.

  • With the SD card inserted in the XO, turn the machine on and press the "Esc" key to interrupt start-up.
  • At the prompt type:
ok boot sd:\boot\olpc.fth
  • It should attempt the boot sequence, but more than likely will fail with a Kernel Panic!!!....error
  • This is almost expected, but it's actually an important step. If you look further up on the screen, you should see an error in regards to mounting the file system.
  • Around this area, you should also see a list of strange numbers (i.e. b102:) followed by devices (i.e. ramdisk...)
  • Find the row for your SD card, it should be labeled something like:
b301:       mmcblk0p1
  • Remember the b301 number.
  • Connect the SD card back to the Linux PC.
  • Open the file /boot/olpc.fth
    • Here's a quick resource on what this is SD Booting.
  • You'll see a line like this:
" ro root=mmcblk0p1 rootdelay=1 console=ttyS0,115200 console=tty0 
rootfstype=ext2 fbcon=font:SUN12x22" to boot-file
  • Change the "root=******" to be the variable recorded earlier.
  • Save the changes and put the SD card back in the XO. Reboot the machine and at the prompt again type:
ok boot sd:\boot\olpc.fth
Post XS School Server Installation Configuration:

The following are commands that were run after installing XS on a Virtual Machine. Idealy, the newly configured SD card can now act as the operating system for the Virtual Machine allowing further versatility.

yum groupinstall "GNOME Desktop Environment"

edit /etc/inittab and change runlevel from 3 to 5 to startup in Gnome

yum install mysql-server php php-mysql php-mbstring php-gd php-xmlrpc php-imap cvs

service mysqld start
mysqladmin -u root password 'mySecurePassword'
mysql -u root -p
mysql> CREATE DATABASE moodle CHARSET 'utf8';
mysql> exit;
chkconfig mysqld on
--starts sql server; adds root admin user; logs into server and creates DB; 
--turns the service on on boot.

cd /var/www
cvs -z3 -d:pserver:anonymous@eu.cvs.moodle.org:/cvsroot/moodle co -r MOODLE_19_STABLE moodle
--download and install/update with the latest version of moodle

mkdir moodledata
chown -R apache:apache moodle
chown -R apache:apache moodledata
--make directory in /var/www/ and change permissions.

edit the file /etc/httpd/conf/httpd.conf
change DocumentRoot "/var/www/html" to DocumentRoot "/var/www/moodle"
change <Directory "/var/www/html"> to <Directory "/var/www/moodle">
then you must restart the apache server by issuing the command:
service httpd restart

Documentation & Resources

Installing MySQL:


Code (parser.awk) can be downloaded here
Date file (students.dat) can be downloaded here

With data in the same directory and with your PWD also as the same directory. Issue the command @ the command line:

awk -f parser.awk students.dat


#Wesley Dillingham
#Filename parser.awk
#Last updated May 17th 2009

	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 *************



#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.
	#any line that has division, but not necessarily just.  
	if ( match($3, /\//) ) 
		#How many division problem student $2 encounters = divison[$2]
		if ( $4 == "1" )
	#any line with multiplication but not  neccearily just multiplication
	if ( match($3, /\*/) ) 
		#How many multiplication problem student $2 encounters = multiplication[$2]
		if ( $4 == "1" )

	#any line with addition but not necessarily just addition
	if ( match($3, /\+/) )
		#How many addition problem student $2 encounters = addition[$2]
		if ( $4 == "1" )
	#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]
		if ( $4 == "1" )

	# 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]
		if ( $4 == "1" )

	# 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]
		if ( $4 == "1" )
	# 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]
		if ( $4 == "1" )

	# 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]
		if ( $4 == "1" )

#How many problems an individual student faced: for classwide statistics we simply use the built-in var NR

#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, /\*/) ) ) 
	if ($4 == "1") #if correct
else if (  match($3, /[0-9]\-[0-9]/) && (match($3, /\//) || match($3, /\+/) || match($3, /\*/) ) ) 
	if ($4 == "1") #if correct

else if ( match($3, /\+/) && ( match($3, /[0-9]\-[0-9]/) || match($3, /\//) || match($3, /\*/) ) ) 
	if ($4 == "1") #if correct
else if  ( match($3, /\*/) && ( match($3, /\+/) ||  match($3, /[0-9]\-[0-9]/) || match($3, /\//) ) ) 
	if ($4 == "1") #if correct
else # This allows for easy way to harness non compound statements, instead of going through a whole new slew of logic statements. 

	if ($4 == "1") #if correct


if ( $4 == "1" )
}#end of AWK_MAIN

	#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"
	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(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

After Class Plans

Wesley Dillingham

will continue this project into the summer as part of RIT's cooperative education program.

I am becoming more interested in a literal interpretation of the Massachusetts curriculum requirements and integrating them into moodle. I would like to shoot for coming up with a modified quiz module which, reads from the api which in turn reads from multiple games in order to suffice the curriculum standards, As no one game has the format to test for all of the requirements. I will be developing using php, and my immediate goal, is to provide the raw capabilities in php to understand and interpret information from the games to test understanding of guidelines. Bonus work includes, graphs, and other heuristics which the teacher may find valuable. I would like to work on helping the mathblaster game provide information relevant to my teacher reporting application via the API.

Tenative summer shedule

  • Week 1: Begin learning and understanding of PHP.
  • Week 2: Complete conversion of "Operations awk script" into PHP.
  • Week 3: "Order of operations awk script" into PHP.
  • Week 4: Gain understanding of PHP's querying of MySQL, convert above PHP scripts to gain information via MySQL rather than input file
  • Week 6: Integrate above PHP scripts into Pre-existing quiz module.
  • Week 7 & 8: Identify, 2 or 3 additional curriculum standards find games which can be used, to satisfy requirements, create php logic, to interpret information gained through MySQl
  • Week 9: Work tangentially with mathblaster team and facilitate Mathblaster <> api and api <> teacher-reporter data exchange.
  • Week 10: Begin work on teacher interface. Wrap up project, plan for adanonment or continuation.,

Jeremiah Green

will continue working on this project when time is available to devote.

  • Get networking running on the XO.
  • Have Moodle running on the XO.
  • Have Database running on the XO.