Giter Site home page Giter Site logo

pygrader's People

Contributors

egregius313 avatar thepyrotechnic avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

egregius313

pygrader's Issues

Allow caching of last assignment, to allow fast re-grading

Caching should be implemented:

  • with a warning if the assignment is not yet past due that the grader cannot verify whether a new submission has been added
  • with the ability to toggle automatic caching
    • and an option for auto-cache only if past deadline
  • with a question to ask to restore cache after an assignment has been chosen

Update program flow to be more legible and usable

When running, the grader will present the user with a list of students and the ability to either select individual students to grade/update, or run the grader on all students. They will then be able to upload all grades at once, or on an individual basis. They will have the ability to manually edit individual grades.

Add commenting and/or automated rubric

The grader can currently upload the grades to Canvas, but currently it would be useful to allow it to either update a rubric, or add submission comments.

So if we have the following entry in failures.json:

{
   "John Doe": {
      "if-then": -2,
      "nand": -1
   }
}

Where John Doe has the id 48879, a comment would be uploaded

Failed if-then: -2
Failed nand: -1
- Ed Minnix on January 31 at 10:32

Add late policies to skeletons

When I use the grader for programming assignments in the class for which I am a TA, I need to manually go back and apply late penalties. I think it would be useful to have a late_policy attribute on skeletons. This way, I can have the grader also apply a late penalty when it grades the submissions.

Proposed Usage

For the course, I use the following late policy:

Minutes Late Percentage Lost
0-5 10%
5-30 20%
30-60 40%
60+ 100%

This would translate to the following skeleton

descriptor = "Sample"
disarm = false

[late_policy]
5 = 0.10
30 = 0.20
60 = 0.40
'*' = 1.00

This would translate under the hood to an sorted association list under the hood.

late_policy = [(5, 0.10), (30, 0.20), (60, 0.40), (float('inf'), 1.00)]

Time specification language

Format Translation
<int>, <int>m number of minutes
<int>h number of hours
<int>d number of days
* Anything larger than the largest concrete upper-bound (treated as inf)

You can then combine the specifiers with -. So 1h-30m translates to 1 hour 30 minutes.

Grader should not need to be in same directory

The grader currently relies on the grader executable/script on being present in the same directory. This causes some synchronization issues, particularly when using source control on skeletons.

The preferred behavior would be to have a separation of concerns, such as

  • Grader
  • Skeletons, test scripts, etc
  • Temporary directories and caches

failures.json should be in sorted order

The failures.json file would be much easier to work with if it provided the names in a sorted order.

Canvas sorts names by the second word in the name. E.g., Edward Minnix is sorted by Minnix, where as Maria von Trapp is sorted by von Trapp.

Handle SIGINT/Keyboard Interrupt

Currently the grader will flop over with an unhandled KeyboardInterrupt when ^C is pressed. It would be useful if the grader gracefully handled ^C.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.