domjudge icon indicating copy to clipboard operation
domjudge copied to clipboard

Idea: add possibility to add deadline for specific problems in contest

Open baziorek opened this issue 2 years ago • 8 comments

I'm academic teacher, who is using DOMjudge 7.3.4. Some time ago when I had some idea I was suggested to create issues in Github to start discussion. Here is my idea, which would be really useful for education (as academic teacher) and probably it can be useful for contests.


My idea in short words is to add extra column in contest settings to allow setting deadlines for specific problems. Draft of the idea is here (draft of draft):
image
In more words: if somebody does not want to use any deadlines - the column can be empty.


As academic teacher I'm creating multiple problems for entire semester. Each problem has deadline 1-2 weeks, so I'm creating separate contest for each problem. Then when I want to sum all points collected during entire semester I need to check multiple scoreboards, then sum points. The feature would make my life much easier - I'll publish all problems into the same contest, then I'll see all scores collected during entire semester.

I see possible usage of the feature out of university. It would be easier to organize contest for employees - problems would be published every day and there would be only one day for each problem to solve.


What do You think about the idea?

baziorek avatar Jun 10 '22 10:06 baziorek

I wonder whether we should have some 'academia' mode in general. Probably a contest with A LOT of problems is not very useful on the scoreboard, and doesn't look good? Also, are you interested in the 'score' per problem (i.e. time + number of incorrect) or only if it's solved?

nickygerritsen avatar Jun 10 '22 10:06 nickygerritsen

I wonder whether we should have some 'academia' mode in general. Probably a contest with A LOT of problems is not very useful on the scoreboard, and doesn't look good? Also, are you interested in the 'score' per problem (i.e. time + number of incorrect) or only if it's solved?

You are right - it doesn't look good when we have lots of problems in single contest:D.

Yes I'm interested in score per problem, because some of problems are more difficult, some of them not. I've also started discussion about adding possibility of partial scoring.


EDIT: To make the tool better for academic usage I have some more ideas after 3 years of using the tool:D.

baziorek avatar Jun 10 '22 10:06 baziorek

We've discussed and looked into creating a separate version for such online contests / academic settings in the past, see the old branch https://github.com/DOMjudge/domjudge/tree/online-judge, which was abandoned.

The issue has been that the code is so different from a normal contest setting, that creating this as a separate mode within the current code-base would create a feature-combinatorics explosion, where lots of code paths under different configuration setting mixes would likely go untested. OTOH, there's not been sufficient initiative to create this as a separate branch either. There's plenty of ideas for features and people who have local modifications, but not enough interest to create clean PRs for these with code that is generally (re)usable.

eldering avatar Jun 10 '22 11:06 eldering

Thanks for the answer. I know that the tool is not dedicated for academic programming courses.

So if the feature is hard to implement I think that the issue should be closed.

If it is complicated probably I won't be able to implement its by my own and create clean PR.

baziorek avatar Jun 10 '22 21:06 baziorek

I don't think that the feature (or multiple features, really) are that hard to implement. The problem is making sure that they operate well with all existing features and maintaining this over time.

So maybe the best approach is to start with some features that don't interfere much with existing features and configuration settings, and the more complicated logic (e.g. judging and scoring), create a PR for that, and see how we can cleanly integrate that in the existing code base.

eldering avatar Jun 10 '22 21:06 eldering

To add on what Jaap wrote: we think it would be better to use separate contests for this. This is less invasive.

Then you have two options:

  • Expand the scoreboard merge command (see https://www.domjudge.org/snapshot/manual/config-advanced.html#multi-site-contests and https://github.com/DOMjudge/domjudge/blob/main/webapp/src/Command/ScoreboardMergeCommand.php). It was meant to merge scoreboards from multiple contest sites, but I think it can be somewhat easily expanded to handle different problems in these scoreboards.
  • The other alternative is to create a new page in DOMjudge that allows you to select a bunch of contests which are then grouped together (summed up) in a common scoreboard.

Both should not be invasive. Are you willing to contribute this to DOMjudge?

meisterT avatar Jul 23 '22 10:07 meisterT

Both should not be invasive. Are you willing to contribute this to DOMjudge?

I still have this task pinned in my browser, and I'm planning to do the implementation. Thanks for suggestions - they will help a lot. When I start working on the problem I'll let You know. On the other hand when I decide it is not good to work - I'll let You know.

Is any deadline to implement its? Is any next release date available?

baziorek avatar Jul 23 '22 17:07 baziorek

Is any deadline to implement its? Is any next release date available?

There is not really a deadline for this, and we consider to release after the World Finals.

vmcj avatar Jul 23 '22 22:07 vmcj

@baziorek I'm also using DOMjudge in academic / teaching context. I'm solving the deadline issue by creating a separate contest per week. I actually invested quite a bit of time into scripts which automate this process and also let me extract per-problem scores quite easily (I export the grading data to my institutions moodle platform). Maybe this could also help you? (I.e. not display the scoring within domjudge but on a separate page - this might make it easier to maintain)

incaseoftrouble avatar Aug 31 '22 15:08 incaseoftrouble

@incaseoftrouble Great idea with the script! I was also creating separate contests per week, but I was not using scripts.


@nickygerritsen I think that I'll try that way. So for now I think that the Issue https://github.com/DOMjudge/domjudge/issues/1598 can be closed for now - I'll not implement its now.

baziorek avatar Aug 31 '22 19:08 baziorek

Feel free to re-open if this is needed again.

vmcj avatar Aug 31 '22 20:08 vmcj