Wednesday, April 16, 2014

My Workflow to create Individual Forms for students, automatically grade them, send them the correct solutions to missed problems, and record the results in their Grade Sheet.

tl;dr version: I create a problems in a Google Spreadsheet and then create a Form for each student. I have scripts that grade the Form Results, Total the Number Correct, Send an Email to the students with the Step-By-Step solutions to the problems they missed, and Recording the results in a student's personalized Grade Sheet.

Sample Spreadsheet that includes all of the scripts I use (you can make a copy to play around with everything):

Student Grade Sheet Sample where the results are pushed to:

Full Version: Part of the difficulty in giving assignments to students in my math class is the various levels of student ability in each class. Students are all different, bringing different math preparations into the classroom and different levels of motivation/work ethic. Assuming that all students will spend the same amount of time on skills assignments (there is a big difference between skill practice and other learning that goes on in my class via inquiry explorations) will lead to a lot of students losing focus or getting overwhelmed by the pace.
So, I have developed a workflow that allows me to give each student what they need as best I can.

Sample Spreadsheet that includes all of the scripts I use (you can make a copy to play around with everything):

Student Grade Sheet Sample where the results are pushed to:

Step 1: Use Mathematica to create problem sets and upload them to my Google Drive. I use Wolfram's Mathematica to create a lot of problems that are essentially the same level. This ways students don't always continue to get the same problems if they are working on the same skill over multiple assignments. I have also found that it makes them feel more positive about the assignment when they feel like it is personalized for them, that no one else has the same exact assignment. After creating the desired amount of problems (which I put in TeX form so I can later encode it for creating an image to insert into a Form), usually 20 or 50, and their corresponding solution, I export them in a .csv file. I import this .csv file into a Google Spreadsheet.

Step 1A: Use Mathematica's WolframAlpha Query function to pull the Step-By-Step Solution into an array to include with use in conjunction with my Google Spreadsheet. I export these Step-By-Step Solutions as jpegs and upload them to my Google Drive in a Folder called Step-By-Step Solutions with the problem in the title of the jpeg.

Sample of one of the Step-By-Step Solutions:

Step 2: Use custom formulas to get the data in the spreadsheet into the format that I like. I have a custom formula that will URLencode the TeX problem and another formula that RegEx's the TeX problem so it will be able to find the Step-By-Step Solution File in my Google Drive.

Step 3: Next I use a script I created to go through my Google Drive and find the URL of the associated Step-By-Step Solution for that problem.

Step 4: Now my questions are ready to be inserted into quizzes. I use a script to create a unique Google Form for each of the students in the spreadsheet.
This script will do 3 things:
1. Create 2 new columns at the beginning of the sheet for Form Creation and Email Sent Confirmation. This helps if the script times out for large class sizes or large numbers of problems (the script can only run for about 6 minutes before Google makes it rest). The script will create a new Form as long as the Form Created? Column is empty. This way you can create a new Form for only 1 student by deleting the confirmation and running the script again and only make 1 new Form.
2. Create the Form for each student and then write the problems that were chosen in the form along with their solution and the URL of the Step-By-Step Solution
3. Write in the Form Created? Column after it finishes creating the form.

Step 5: Send an email to the student containing the URL of their Google Form. It will write to the Email Sent? Column after successfully sending the email out. It will only send the email if the Column entry is blank. So, if you need to re-send the email you can delete the confirmation and run the script again and only send it to that specific student instead of all the students again. 

***One thing I want to add later is to get the email Subject from a popup window so it is not hard coded to the script.

Step 6: The students will work on the questions and Submit the Form

Step 7: This is where the magic happens. After the students have submitted the form, collect the student responses, grade them, total the number of correct answers, and send the student and email if I select that box.
1st attempt, with no correct answers:

2nd attempt, with an additional correct answer:

**The Grading part doesn't always work since the fractions are sometimes interpreted as dates and if they put the math in a different order. I am working on that, but it is not my main concern right now.**

One thing I like is that when the student is correct it makes the background of the student response cell green and if they are incorrect it is red to make a quick visual check. Also, it will only grade each form submission in sequence. This is nice when the student is correct on the 2nd or 3rd time to see the Red cells turn Green.

The email, if I choose to send it, will contain all of the Step-By-Step Solutions for the problems that the student missed. It will also only send the email to the students whose Email Sent? column is blank. **I should probably create a new column since this is a different Email that the URL, but I don't send them at the same time, so I kept it the same***

The email will have the URL of the Step-By-Step Solutions as well as adding them as attachments.

Step 8: Now I take these results and send them to the student's results spreadsheet. Each student has their own spreadsheet that collects the responses to all of the forms they fill out. I created these by using Doctopus and then share it with the student from there and put it in the Student's Assignment Folder that gClassFolders created so it is in their Shared With Me folder in their Google Drive. But then I delete the Doctopus Spreadsheet because my script gets confused and wants to write to that spreadsheet instead of the individual student.

The Student Grade Sheet before the Results are pushed:
And after the results are pushed:

Thanks for reading to the end and I hope you find these scripts and workflow useful. Please let me know if you have any questions! I am in the process of uploading my repository of questions/spreadsheets so they can be used. Look for a post with the details in the next few weeks.