Skip to content

PLSE-Lab/Qwiklabs-Checker

Repository files navigation

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.

Getting Started

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.

Input Formats

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,bob.smith@myschool.edu,App Dev - Storing Application Data in Cloud Datastore - Java,15,40,100
1,2021-01-23 09:21:13 -0500,Sally Jones,sally.jones@myschool.edu,App Dev - Storing Application Data in Cloud Datastore - Java,40,60,80
1,2021-01-24 13:18:37 -0500,Bob Smith,bob.smith@myschool.edu,App Engine: Qwik Start - Python,15,40,0
1,2021-01-25 09:21:13 -0500,Sally Jones,sally.jones@myschool.edu,App Engine: Qwik Start - Python,40,60,100
1,2021-01-26 13:18:37 -0500,Bob Smith,bob.smith@myschool.edu,Cloud Functions: Qwik Start - Command Line,15,40,100
1,2021-01-27 09:21:13 -0500,Sally Jones,sally.jones@myschool.edu,Cloud Functions: Qwik Start - Command Line,40,60,100
1,2021-01-28 13:18:37 -0500,Bob Smith,bob.smith@myschool.edu,Cloud Functions: Qwik Start - Console,15,40,0
1,2021-01-29 09:21:13 -0500,Sally Jones,sally.jones@myschool.edu,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,bob.smith@myschool.edu
Jones,Sally,sally.jones@myschool.edu

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

Running the Checker

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
bob.smith@myschool.edu: 100
sally.jones@myschool.edu: 80

App Engine: Qwik Start - Python
bob.smith@myschool.edu: 0
sally.jones@myschool.edu: 100

Cloud Functions: Qwik Start - Command Line
bob.smith@myschool.edu: 100
sally.jones@myschool.edu: 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
sally.jones@myschool.edu: 80

App Engine: Qwik Start - Python
bob.smith@myschool.edu: 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.

Contributions

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!

About

More quickly check Qwiklabs reports for grading.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages