Hey Zach,
I talked with Dr. Mutchler today and he has good ideas for the CSSE120 auto grade checker scripts. Rational: Sometimes it's nice to be able to do weird 1 off things. For example, you want to only review 3 quizzes or you want to be able to generate a report for only 1 student, etc. Also we need ways to change other parameters. Anyway here is the direction we want to move:
Two scripts:
prepare_input_files.py
run_autogradebook.py
Three input files:
inputs/studentlist.txt
inputs/assignments.csv
inputs/Grades-20200110_1919.csv (for example)
prepare_input_files.py
prepare_input_files.py has a clear spot at the top of the code for the input parameters. These variables can be modified before the script is run. For example here are the ones I want:
# Input parameters:
gradebook_file = 'inputs/Grades-20200110_1919.csv'
update_studentlist=True
update_assignments=True
assignment_percentage_threshold=60 # Only used if update_assignments=True
Explaination: The gradebook_file location can be changed as needed in the script before it is run. This script has no authentication needs. It uses the Gradebook.csv to auto-update the studentlist and assignments before the next step. By being two steps those files could be modified for handling weird situations. The list of students in studentlist.txt will just be a raw list of usernames one per line. No other data, no header, not a csv, just one username per line sorted alphabetically. The list of assignments in assignments.csv will have three columns with the header row "assignment name, percent complete, will be processed". Example of a row of data: "Paper quiz Session 4: More Accumulators,0.93,True" or another example "Quiz:Session 11 code: MoreSequences II Dropbox,0.0,False". The order should be the same order that Moodle gives, no category averages should be present, just assignments.
run_autogradebook.py
run_autogradebook.py has a clear spot at the top of the code for the input parameters. These variables can be modified before the script is run. For example here are the ones I want:
# Input parameters:
gradebook_file = 'inputs/Grades-20200110_1919.csv'
#studentlist_file=None # use all students
#studentlist_file="inputs/section1.txt" # Example of a manual student list.
#studentlist_file="inputs/onestudent.txt" # Example of a manual student list.
studentlist_file="inputs/studentslist.txt"
#assignments_file=None # use the assignment_percentage_threshold to decide
assignments_file="inputs/assignments.csv"
assignment_percentage_threshold=60 # Only used if assignments_file=None
username = "fisherds"
send_emails_to_students=False
min_number_of_missing_assignments_to_get_an_email=1
#cc_email=None
cc_email="fisherds@gmail.com" #Emails will be sent to cc_email even if students get no emails
sender_email="fisherds@gmail.com"
subject="Missing CSSE120 Assignments"
msg_format_string = MIMEText("Hello {},\n\nYou are currently missing:\n\n{}\nplease submit these as soon as you can. Talk to your professor if you have any questions.\n\nRemember, you must turn in ALL assignments to pass the class!")
signature=MIMEText("\n\nThank you,\nDave Fisher\nCSSE120 Grader
The studentlist_file and assignments_file can be either None or have a specified file, notice above that I have the None like commented out at present and the other line used. That can be swapped, so it's nice to comment them out if you want to switch it later. if studentlist_file=None then all students in the Gradebook file are used. Same with Assignments, if assignments_file=None then the existing method is used what look for which assignments to use. So it's overridable basically with the inputs if needed. The other variables I can explain as needed. :)
Also I have some ideas for an /output file, but we'll save those for another issue request. Also I have ideas for
Oh also it's important to never check into github any gradebook or studentlist.txt files. That would be a FERPA violation. I'll add a .gitignore to the /inputs folder
Hey Zach, I talked with Dr. Mutchler today and he has good ideas for the CSSE120 auto grade checker scripts. Rational: Sometimes it's nice to be able to do weird 1 off things. For example, you want to only review 3 quizzes or you want to be able to generate a report for only 1 student, etc. Also we need ways to change other parameters. Anyway here is the direction we want to move:
Two scripts:
Three input files:
prepare_input_files.py
prepare_input_files.py has a clear spot at the top of the code for the input parameters. These variables can be modified before the script is run. For example here are the ones I want:
Explaination: The gradebook_file location can be changed as needed in the script before it is run. This script has no authentication needs. It uses the Gradebook.csv to auto-update the studentlist and assignments before the next step. By being two steps those files could be modified for handling weird situations. The list of students in studentlist.txt will just be a raw list of usernames one per line. No other data, no header, not a csv, just one username per line sorted alphabetically. The list of assignments in assignments.csv will have three columns with the header row "assignment name, percent complete, will be processed". Example of a row of data: "Paper quiz Session 4: More Accumulators,0.93,True" or another example "Quiz:Session 11 code: MoreSequences II Dropbox,0.0,False". The order should be the same order that Moodle gives, no category averages should be present, just assignments.
run_autogradebook.py
run_autogradebook.py has a clear spot at the top of the code for the input parameters. These variables can be modified before the script is run. For example here are the ones I want:
The studentlist_file and assignments_file can be either None or have a specified file, notice above that I have the None like commented out at present and the other line used. That can be swapped, so it's nice to comment them out if you want to switch it later. if studentlist_file=None then all students in the Gradebook file are used. Same with Assignments, if assignments_file=None then the existing method is used what look for which assignments to use. So it's overridable basically with the inputs if needed. The other variables I can explain as needed. :)
Also I have some ideas for an /output file, but we'll save those for another issue request. Also I have ideas for
Oh also it's important to never check into github any gradebook or studentlist.txt files. That would be a FERPA violation. I'll add a .gitignore to the /inputs folder