Submission deadlines for GitHub Classroom

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.

3 Likes

Hi,

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

Cheers

1 Like

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.

1 Like

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.

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).

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: " +
            ZonedDateTime.now(ZoneId.of("America/Chicago")).format(DateTimeFormatter.RFC_1123_DATE_TIME)
}
tasks.compileJava.dependsOn printStuff
  1. I built a tool to query the GitHub Events API, which gets you push times for every commit.
    https://github.com/danwallach/github-event-times

(*) 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.

1 Like

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).

@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.

1 Like

Dear all,

I would like to reopen this issue with an additional request, @mozzadrella.

May it be possible that, once the deadline is over, students only have read access (or no access) to their repositories? That could be relevant for some use cases (exams, for instance).

Thank you in advance,

Jesus

@jearansa That would be a very nice feature!
I second that request.

1 Like

I’m aware this is an old post, but it ranked 1st in Google when searching for “github classroom not submitted deadline”.

I have just created a new private test assignment, no template, with a deadline at 21:07.
I accepted the assignment in an incognito chrome tab and created a readme.md. I edited this file
several times, at 21:05, 21:06, 21:07 and 21:08.

When I go to github.classroom.com I still nee “Not submitted”. And Downloading all repositories just clones the repo at the current time (so including my 21:08 commit). The bug is probably that there should be a proper “Submitted” link, linking to the 21:06 committed version.
And perhaps, after the deadline, I am not going to click all individual repo “Submitted” links, I would want to download the correct versions from a “download all submitted assignments” button…

@mozzadrella is this still an issue or am I doing something wrong?

I have been working on a similar solution and this is the best I could get. My requirement to stop the students from committing any code after the deadline. How to do that? Archive! Once you archive the repository student cannot commit. The student does not have access to the settings so he can’t un-archive the repository.

You can GraphQL to archive all the student’s repositories of a particular assignment using python code. For that, you need to use GraphQL Github API. One of the tutorials which worked for me is: GitHub Repo Un/Archiving - GRAPHQL API | Lothar Schulz
My plan is to generate a python script that will archive all the assignments exactly at the deadline.

I am working on the python code, and I will post it here when done. Thank you!

1 Like
© 2017 GitHub, Inc.
with by
GitHub Education