Submission deadlines for GitHub Classroom

(Dan Wallach) #1

Over the summer, GitHub Classroom grew a new feature: specifying submission deadlines! But there’s a curious bit of text that goes with it:

After the deadline, GitHub Classroom will save the latest commit from each repo as a submission. Submission commits are viewable on the assignment page.

I’d love if somebody could clarify what happens here. If I read this right, at the stroke of midnight all of my students’ repos will be cloned? Or just saved elsewhere? If a student keeps pushing changes after the deadline, will they get some indication the deadline has passed?

Next week is the first week of the semester, so I’d really like to know how this feature works.

(Emerson Mello) #2


On assignment homepage you will get a link “submitted” pointing to last commit before deadline. You can define date and time.


(Matthias) #3

I was tempted to use this feature, but wasn’t sure about the deadline either. Students might have approved extensions and even if they don’t - my university’s regulations allow students to submit late, but a penalty will be applied to late submission (which is the minimum pass mark).

I just tried the deadline with a test student account.

Student side:
When changing files on the GitHub web interface I did not get a message telling me that the deadline has passed (which is fine, as a student might have an extension, so the deadline might not apply).

Lecturer side:
In the ‘classroom’ I saw the latest version, which was (in this case) submitted after the deadline. If you hover with your mouse over the “submitted x minutes ago” you get the exact time of submission, so it would be possible to see which commit was done before the deadline and which one was done after, even if there were many around the time of the deadline.

(Vanessa) #4

Sorry for late reply @danwallach. @memm74 is correct–Classroom does not email the student. And students can continue to work on the repository after the deadline. You can see when their commits were made and take your marking from there.

The teacher side is to indicate that they have been working–the green submitted shows up once they’ve made a commit.

(Matthias) #5

Is there a way of checking when the commit was pushed to the server?
The time you normally see is when the commit was made, not when it was pushed.

I am asking to figure out what happens in some hypothetical situations like a student missing the deadline, then changing the time on their computer to before the deadline, making a commit and then pushing the commit. In the system it would look as if the commit was made before the deadline - unless we can check when the commit was pushed (which would be great).

(Dan Wallach) #6

I had precisely this issue occur, so it’s not just a hypothetical issue. I’ve done two things:

  1. I added a few lines in my build.gradle file to print the date. This means that my graders can look at the Travis-CI output and see a date that the students cannot easily roll back without being detected (*). Note that you need to print it in your local timezone, since you have no idea what timezone is native for the Travis-CI servers.
// we want to print the date every time we compile; helpful when looking at logs
import java.time.*
import java.time.format.DateTimeFormatter

task printStuff () {
    println "Compilation time: " +
tasks.compileJava.dependsOn printStuff
  1. I built a tool to query the GitHub Events API, which gets you push times for every commit.

(*) Technically, a student could modify the build.gradle file and have it print anything, but then they would be committing that change, making it straightforward to observe. We never really teach them about Gradle or Groovy, except to say that Groovy is their build system and to leave it alone.

(Matthias) #7

That’s a great idea.
I’ll try to look for something else that would work in my case. Maybe a cron job to download after the deadline, as my students’ work doesn’t need compiling (one class is PHP, on is R).

(Readoc) #8

@danwallach Thanks so much for sharing this. Forked and using it in my classes. It’s quicker than scanning the student repositories for last commits.