If you use Qwiklabs in your classes, you currently have to download a report and then cross-check this with your list of students to see who has actually finished each lab. This is a simple script to automate this process, allowing you to see the top score on each lab for each student, or to see just those students that have not completed a lab.
To get started, you need Python version 3.7 or greater. This is required since the script uses Data Classes, which were added in that version.
The script requires three input files. The first is the CSV file generated by Qwiklabs that includes information about each student lab attempt. The other two are a CSV file with student information, and a CSV file with lab information.
The first file, generated by Qwiklabs, should be used as is. An example of this file is as follows:
Labs Taken Through My Class Spring 2021
Credits,Used On,User,Email,Lab Name,Runtime (min),Duration (min),Completion (%)
1,2021-01-22 13:18:37 -0500,Bob Smith,[email protected],App Dev - Storing Application Data in Cloud Datastore - Java,15,40,100
1,2021-01-23 09:21:13 -0500,Sally Jones,[email protected],App Dev - Storing Application Data in Cloud Datastore - Java,40,60,80
1,2021-01-24 13:18:37 -0500,Bob Smith,[email protected],App Engine: Qwik Start - Python,15,40,0
1,2021-01-25 09:21:13 -0500,Sally Jones,[email protected],App Engine: Qwik Start - Python,40,60,100
1,2021-01-26 13:18:37 -0500,Bob Smith,[email protected],Cloud Functions: Qwik Start - Command Line,15,40,100
1,2021-01-27 09:21:13 -0500,Sally Jones,[email protected],Cloud Functions: Qwik Start - Command Line,40,60,100
1,2021-01-28 13:18:37 -0500,Bob Smith,[email protected],Cloud Functions: Qwik Start - Console,15,40,0
1,2021-01-29 09:21:13 -0500,Sally Jones,[email protected],Cloud Functions: Qwik Start - Console,40,60,0
The second file, with student information, should include the following fields, in this order:
- last_name: the last name of the student
- first_name: the first name of the student
- emailAddress: the student's email address, which needs to match the email address they are using with Qwiklabs
An example would be the following, found in sample-students.csv:
last_name,first_name,emailAddress
Smith,Bob,[email protected]
Jones,Sally,[email protected]
The third file, with lab information, should include the following fields, in this order:
- lab_name: the name of the lab, as found in the Qwiklabs report
- check: whether to check completion for this lab (Y to check, otherwise ignore, this can be a useful way to disable checking for a lab that isn't due yet)
An example would be the following, found in sample-labs.csv:
lab_name,check
App Dev - Storing Application Data in Cloud Datastore - Java,Y
App Engine: Qwik Start - Python,Y
Cloud Functions: Qwik Start - Command Line,Y
Cloud Functions: Qwik Start - Console,N
The checker accepts the following command-line arguments:
--students
, the location of the students CSV file--labs
, the location of the labs CSV file--report
, the location of the Qwiklabs report CSV file--noHeaders
, to indicate the CSV files do not include a header row (the default assumes they do)--completeThreshold
, to indicate the score needed to consider the lab complete (the default is 100)--justIncomplete
, to only show students that have not completed a given lab--justComplete
, to only show students that have completed a given lab
An example of running the checker would be the following:
python3 qlcheck.py --students sample-students.csv --report sample-report.csv --labs sample-labs.csv
This will run the checker with the sample students, sample labs, and sample Qwiklabs report. The output is the following:
App Dev - Storing Application Data in Cloud Datastore - Java
[email protected]: 100
[email protected]: 80
App Engine: Qwik Start - Python
[email protected]: 0
[email protected]: 100
Cloud Functions: Qwik Start - Command Line
[email protected]: 100
[email protected]: 100
Note that each lab is listed, with each student (by email) and the score for that student. Also note that the lab that we have marked as "N" in the check column is not listed. To focus on just those students that have not completed the lab, the --justIncomplete
flag can be included:
python3 qlcheck.py --students sample-students.csv --report sample-report.csv --labs sample-labs.csv --justIncomplete
Running this gives the following:
App Dev - Storing Application Data in Cloud Datastore - Java
[email protected]: 80
App Engine: Qwik Start - Python
[email protected]: 0
Cloud Functions: Qwik Start - Command Line
Here, Sally Jones did not finish the first lab, Bob Smith has not attempted the second, and everyone finished the third.
Feel free to contribute! This is fairly basic, but I'm sure more could be done. If you have ideas, feel free to post them here as issues we can discuss, or fork the repo and make a pull request!