From 67905e913314255b7c5c88592080caa7d63e0dba Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Thu, 8 Sep 2016 15:38:16 -0700 Subject: [PATCH] Make it clearer how to set due dates --- .../jupyterhub/nbgrader_config.py | 2 +- .../creating_and_grading_assignments.ipynb | 19 +++++++---- nbgrader/docs/source/user_guide/grades.csv | 4 +-- .../managing_assignment_files.ipynb | 32 +++++++++---------- .../docs/source/user_guide/philosophy.rst | 2 +- 5 files changed, 33 insertions(+), 26 deletions(-) diff --git a/nbgrader/docs/source/configuration/jupyterhub/nbgrader_config.py b/nbgrader/docs/source/configuration/jupyterhub/nbgrader_config.py index c88da9cd8..72b974db1 100644 --- a/nbgrader/docs/source/configuration/jupyterhub/nbgrader_config.py +++ b/nbgrader/docs/source/configuration/jupyterhub/nbgrader_config.py @@ -8,7 +8,7 @@ c.NbGrader.course_id = "example_course" c.TransferApp.exchange_directory = "/tmp/exchange" -c.NbGrader.db_assignments = [dict(name="ps1")] +c.NbGrader.db_assignments = [dict(name="ps1", duedate="2015-02-02 17:00:00 UTC")] c.NbGrader.db_students = [ dict(id="bitdiddle", first_name="Ben", last_name="Bitdiddle"), dict(id="hacker", first_name="Alyssa", last_name="Hacker"), diff --git a/nbgrader/docs/source/user_guide/creating_and_grading_assignments.ipynb b/nbgrader/docs/source/user_guide/creating_and_grading_assignments.ipynb index db2192783..83e154220 100644 --- a/nbgrader/docs/source/user_guide/creating_and_grading_assignments.ipynb +++ b/nbgrader/docs/source/user_guide/creating_and_grading_assignments.ipynb @@ -392,7 +392,7 @@ "%%file nbgrader_config.py\n", "\n", "c = get_config()\n", - "c.NbGrader.db_assignments = [dict(name=\"ps1\")]\n", + "c.NbGrader.db_assignments = [dict(name=\"ps1\", duedate=\"2015-02-02 17:00:00 UTC\")]\n", "c.NbGrader.db_students = [\n", " dict(id=\"bitdiddle\", first_name=\"Ben\", last_name=\"Bitdiddle\"),\n", " dict(id=\"hacker\", first_name=\"Alyssa\", last_name=\"Hacker\"),\n", @@ -427,7 +427,7 @@ "output_type": "stream", "text": [ "[AssignApp | INFO] Copying /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/source/./ps1/jupyter.png -> /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/release/./ps1/jupyter.png\n", - "[AssignApp | INFO] Updating/creating assignment 'ps1': {}\n", + "[AssignApp | INFO] Updating/creating assignment 'ps1': {'duedate': '2015-02-02 17:00:00 UTC'}\n", "[AssignApp | INFO] Converting notebook /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/source/./ps1/problem1.ipynb to notebook\n", "[AssignApp | INFO] Writing 8174 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/release/./ps1/problem1.ipynb\n", "[AssignApp | INFO] Converting notebook /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/source/./ps1/problem2.ipynb to notebook\n", @@ -583,7 +583,7 @@ "text": [ "\r\n", "c = get_config()\r\n", - "c.NbGrader.db_assignments = [dict(name=\"ps1\")]\r\n", + "c.NbGrader.db_assignments = [dict(name=\"ps1\", duedate=\"2015-02-02 17:00:00 UTC\")]\r\n", "c.NbGrader.db_students = [\r\n", " dict(id=\"bitdiddle\", first_name=\"Ben\", last_name=\"Bitdiddle\"),\r\n", " dict(id=\"hacker\", first_name=\"Alyssa\", last_name=\"Hacker\"),\r\n", @@ -618,6 +618,7 @@ "[AutogradeApp | INFO] Copying /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted/bitdiddle/ps1/timestamp.txt -> /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/timestamp.txt\n", "[AutogradeApp | INFO] Creating/updating student with ID 'bitdiddle': {'first_name': 'Ben', 'last_name': 'Bitdiddle'}\n", "[AutogradeApp | INFO] SubmittedAssignment submitted at 2015-02-02 22:58:23.948203\n", + "[AutogradeApp | WARNING] SubmittedAssignment is 21503.948203 seconds late\n", "[AutogradeApp | INFO] Overwriting files with master versions from the source directory\n", "[AutogradeApp | INFO] Copying /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/source/./ps1/jupyter.png -> /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/jupyter.png\n", "[AutogradeApp | INFO] Sanitizing /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted/bitdiddle/ps1/problem1.ipynb\n", @@ -628,6 +629,9 @@ "[AutogradeApp | INFO] Autograding /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem1.ipynb\n", "[AutogradeApp | INFO] Converting notebook /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem1.ipynb to notebook\n", "[AutogradeApp | INFO] Executing notebook with kernel: python\n", + "[AutogradeApp | WARNING] SubmittedAssignment is 21503.948203 seconds late\n", + "[AutogradeApp | INFO] Using late submission penalty method: none\n", + "[AutogradeApp | WARNING] Late submission penalty: None\n", "[AutogradeApp | INFO] Writing 13736 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem1.ipynb\n", "[AutogradeApp | INFO] Sanitizing /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted/bitdiddle/ps1/problem2.ipynb\n", "[AutogradeApp | INFO] Converting notebook /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted/bitdiddle/ps1/problem2.ipynb to notebook\n", @@ -635,6 +639,9 @@ "[AutogradeApp | INFO] Autograding /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem2.ipynb\n", "[AutogradeApp | INFO] Converting notebook /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem2.ipynb to notebook\n", "[AutogradeApp | INFO] Executing notebook with kernel: python\n", + "[AutogradeApp | WARNING] SubmittedAssignment is 21503.948203 seconds late\n", + "[AutogradeApp | INFO] Using late submission penalty method: none\n", + "[AutogradeApp | WARNING] Late submission penalty: None\n", "[AutogradeApp | INFO] Writing 2554 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem2.ipynb\n", "[AutogradeApp | INFO] Setting destination file permissions to 444\n", "[AutogradeApp | INFO] Copying /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted/hacker/ps1/jupyter.png -> /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/jupyter.png\n", @@ -673,7 +680,7 @@ "source": [ "When grading the submission for `Bitdiddle`, you'll see some warnings that look like \"Checksum for grade cell correct_squares has changed!\". What's happening here is that nbgrader has recorded what the *original* contents of the grade cell `correct_squares` (when `nbgrader assign` was run), and is checking the submitted version against this original version. It has found that the submitted version changed (perhaps this student tried to cheat by commenting out the failing tests), and has therefore overwritten the submitted version of the tests with the original version of the tests.\n", "\n", - "You may also notice that there is a note saying \"ps1 for Bitdiddle is 86303.948203 seconds late\". What is happening here is that nbgrader is detecting a file in Bitdiddle's submission called `timestamp.txt`, reading in that timestamp, and saving it into the database. From there, it can compare the timestamp to the duedate of the problem set, and compute whether the submission is at all late.\n", + "You may also notice that there is a note saying \"ps1 for Bitdiddle is 21503.948203 seconds late\". What is happening here is that nbgrader is detecting a file in Bitdiddle's submission called `timestamp.txt`, reading in that timestamp, and saving it into the database. From there, it can compare the timestamp to the duedate of the problem set, and compute whether the submission is at all late.\n", "\n", "Once the autograding is complete, there will be new directories for the autograded versions of the submissions:\n", "\n", @@ -958,8 +965,8 @@ "output_type": "stream", "text": [ "assignment,duedate,timestamp,student_id,last_name,first_name,email,raw_score,late_submission_penalty,score,max_score\n", - "ps1,,2015-02-02 22:58:23.948203,bitdiddle,Bitdiddle,Ben,,1.5,0.0,1.5,9.0\n", - "ps1,,2015-02-01 17:28:58.749302,hacker,Hacker,Alyssa,,3.0,0.0,3.0,9.0\n" + "ps1,2015-02-02 17:00:00,2015-02-02 22:58:23.948203,bitdiddle,Bitdiddle,Ben,,1.5,0.0,1.5,9.0\n", + "ps1,2015-02-02 17:00:00,2015-02-01 17:28:58.749302,hacker,Hacker,Alyssa,,3.0,0.0,3.0,9.0\n" ] } ], diff --git a/nbgrader/docs/source/user_guide/grades.csv b/nbgrader/docs/source/user_guide/grades.csv index 1c66e3fbd..ce8c1c0a9 100644 --- a/nbgrader/docs/source/user_guide/grades.csv +++ b/nbgrader/docs/source/user_guide/grades.csv @@ -1,3 +1,3 @@ assignment,duedate,timestamp,student_id,last_name,first_name,email,raw_score,late_submission_penalty,score,max_score -ps1,,2015-02-02 22:58:23.948203,bitdiddle,Bitdiddle,Ben,,1.5,0.0,1.5,9.0 -ps1,,2015-02-01 17:28:58.749302,hacker,Hacker,Alyssa,,3.0,0.0,3.0,9.0 +ps1,2015-02-02 17:00:00,2015-02-02 22:58:23.948203,bitdiddle,Bitdiddle,Ben,,1.5,0.0,1.5,9.0 +ps1,2015-02-02 17:00:00,2015-02-01 17:28:58.749302,hacker,Hacker,Alyssa,,3.0,0.0,3.0,9.0 diff --git a/nbgrader/docs/source/user_guide/managing_assignment_files.ipynb b/nbgrader/docs/source/user_guide/managing_assignment_files.ipynb index 8ef9b4779..4926e2648 100644 --- a/nbgrader/docs/source/user_guide/managing_assignment_files.ipynb +++ b/nbgrader/docs/source/user_guide/managing_assignment_files.ipynb @@ -346,9 +346,9 @@ "output_type": "stream", "text": [ "total 40\n", - "-rw-r--r-- 1 jhamrick wheel 5733 Sep 8 15:19 jupyter.png\n", - "-rw-r--r-- 1 jhamrick wheel 8174 Sep 8 15:19 problem1.ipynb\n", - "-rw-r--r-- 1 jhamrick wheel 2518 Sep 8 15:19 problem2.ipynb\n" + "-rw-r--r-- 1 jhamrick wheel 5733 Sep 8 15:35 jupyter.png\n", + "-rw-r--r-- 1 jhamrick wheel 8174 Sep 8 15:35 problem1.ipynb\n", + "-rw-r--r-- 1 jhamrick wheel 2518 Sep 8 15:35 problem2.ipynb\n" ] } ], @@ -488,8 +488,8 @@ "output_type": "stream", "text": [ "[SubmitApp | INFO] Source: /private/tmp/student_home/ps1\n", - "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2016-09-08 22:19:48 UTC\n", - "[SubmitApp | INFO] Submitted as: example_course ps1 2016-09-08 22:19:48 UTC\n" + "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2016-09-08 22:36:01 UTC\n", + "[SubmitApp | INFO] Submitted as: example_course ps1 2016-09-08 22:36:01 UTC\n" ] } ], @@ -519,9 +519,9 @@ "output_type": "stream", "text": [ "total 8\n", - "drwxr-xr-x 3 jhamrick wheel 102 Sep 8 15:19 Library\n", - "-rw-r--r-- 1 jhamrick wheel 108 Sep 8 15:19 nbgrader_config.py\n", - "drwxr-xr-x 5 jhamrick wheel 170 Sep 8 15:19 ps1\n" + "drwxr-xr-x 3 jhamrick wheel 102 Sep 8 15:36 Library\n", + "-rw-r--r-- 1 jhamrick wheel 108 Sep 8 15:35 nbgrader_config.py\n", + "drwxr-xr-x 5 jhamrick wheel 170 Sep 8 15:35 ps1\n" ] } ], @@ -551,7 +551,7 @@ "output_type": "stream", "text": [ "[ListApp | INFO] Submitted assignments:\n", - "[ListApp | INFO] example_course jhamrick ps1 2016-09-08 22:19:48 UTC\n" + "[ListApp | INFO] example_course jhamrick ps1 2016-09-08 22:36:01 UTC\n" ] } ], @@ -581,8 +581,8 @@ "output_type": "stream", "text": [ "[SubmitApp | INFO] Source: /private/tmp/student_home/ps1\n", - "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2016-09-08 22:19:51 UTC\n", - "[SubmitApp | INFO] Submitted as: example_course ps1 2016-09-08 22:19:51 UTC\n" + "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2016-09-08 22:36:05 UTC\n", + "[SubmitApp | INFO] Submitted as: example_course ps1 2016-09-08 22:36:05 UTC\n" ] } ], @@ -612,8 +612,8 @@ "output_type": "stream", "text": [ "[ListApp | INFO] Submitted assignments:\n", - "[ListApp | INFO] example_course jhamrick ps1 2016-09-08 22:19:48 UTC\n", - "[ListApp | INFO] example_course jhamrick ps1 2016-09-08 22:19:51 UTC\n" + "[ListApp | INFO] example_course jhamrick ps1 2016-09-08 22:36:01 UTC\n", + "[ListApp | INFO] example_course jhamrick ps1 2016-09-08 22:36:05 UTC\n" ] } ], @@ -758,8 +758,8 @@ "output_type": "stream", "text": [ "[ListApp | INFO] Submitted assignments:\n", - "[ListApp | INFO] example_course jhamrick ps1 2016-09-08 22:19:48 UTC\n", - "[ListApp | INFO] example_course jhamrick ps1 2016-09-08 22:19:51 UTC\n" + "[ListApp | INFO] example_course jhamrick ps1 2016-09-08 22:36:01 UTC\n", + "[ListApp | INFO] example_course jhamrick ps1 2016-09-08 22:36:05 UTC\n" ] } ], @@ -818,7 +818,7 @@ "total 0\n", "drwxr-xr-x 3 jhamrick staff 102 Apr 4 13:05 bitdiddle\n", "drwxr-xr-x 3 jhamrick staff 102 Apr 4 13:05 hacker\n", - "drwxr-xr-x 3 jhamrick staff 102 Sep 8 15:19 jhamrick\n" + "drwxr-xr-x 3 jhamrick staff 102 Sep 8 15:36 jhamrick\n" ] } ], diff --git a/nbgrader/docs/source/user_guide/philosophy.rst b/nbgrader/docs/source/user_guide/philosophy.rst index cdda53931..8394e10c7 100644 --- a/nbgrader/docs/source/user_guide/philosophy.rst +++ b/nbgrader/docs/source/user_guide/philosophy.rst @@ -88,7 +88,7 @@ You will almost always need a configuration file as you are using nbgrader. At a :: c = get_config() - c.NbGrader.db_assignments = [dict(name="ps1")] + c.NbGrader.db_assignments = [dict(name="ps1", duedate="2015-02-02 17:00:00 UTC")] c.NbGrader.db_students = [ dict(id="bitdiddle", first_name="Ben", last_name="Bitdiddle"), dict(id="hacker", first_name="Alyssa", last_name="Hacker"),