question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Timed assignments

See original GitHub issue

I’d like to explore the possibility of adding timed assignments in nbgrader. Specifically, within a certain timeframe–

  • Students would fetch the assignment, starting an internal timer
  • Each assignment would have an “expiration” time attached to it, e.g. 3 hours from fetch
  • After this expiration time, nbgrader will no longer allow the students to perform new submissions

This could be used in a “take-home exam” format, or even along the lines of a Google Codejam-style coding competition, where once a student actually begins the assignment they have only a short window in which to finish it before their ability to submit that assignment is disabled.

A quick-and-dirty way of implementing this would be to freeze the exchange directory (even revoke write permissions) for certain users after a certain time frame, but that wouldn’t scale too well and would require resetting the permissions for the next assignment. Something more robust would likely require an optional argument for the assignments in nbgrader_config to specify their expiration time limit, and some kind of logging within nbgrader to enforce the time limit when a student attempts to submit.

Issue Analytics

  • State:open
  • Created 7 years ago
  • Comments:8 (4 by maintainers)

github_iconTop GitHub Comments

2reactions
magsolcommented, Mar 2, 2022

@angadhn I put this repo together a few years back with the scripts / changes you’re looking for: https://github.com/eds-uga/nbgrader-scripts

Keep in mind it’s two years old at this point so may be slightly out of date. It’s also not super robust–I only ever used it for classes with 20-30 students, so e.g. the tamper-“proofing” of the timestamps was never actually triggered, and so I can’t say for sure that it works or even works well–so YMMV.

Still, I’m happy to help out with it if needed! PRs / tickets are welcome 😃

1reaction
perllaghucommented, Dec 2, 2022

This may be solvable using a bespoke external exchange plugin: you subclass the exchangefetchassignment class (see https://nbgrader.readthedocs.io/en/stable/exchange/exchange_api.html#exchangefetchassignment) and replace the copy_files method.

In there, you can add logic to note who fetches what, when.

You could also subclass ExchangeSubmit, and replace the copy_files method to block submissions past a certain time.

Alternatively, or in parallel, you could subclass ExchangeCollect.copy_files() to not collect late submissions.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Schedule a Timed Assignment - WebAssign
Timed assignments can be useful for: Giving a reading assignment for which you do not want to give your students time to look...
Read more >
Work on a Timed Assignment - Cengage Platform Help
For timed assignments, the time you have to complete the assignment is always the lesser of the allotted time for the assignment and...
Read more >
Timed assignments - help.pearsoncmg.com
Start to begin a timed assignment. It continues to run until the student either completes the assignment or time runs out, whichever comes...
Read more >
How do timed assignments work? - Albert Help Center
If an assignment is timed, the timer will continue to run even if the student signs out, closes their browser tab or window,...
Read more >
Timed Assignments - Edulastic - GoGuardian
Teachers can set a time limit for students taking an assessment in Edulastic. To turn on Timed Assessment, in the Assignment screen select...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found