testmycode/tmc-server

Facilitate better peer-aid by course equivalencies

Closed this issue · 1 comments

Description of the problem:

UH-CS often runs multiple concurrent versions of what is logically a single programming course, e.g. one version of a course with deadlines and another without. Since all assignments are shared between these courses, it makes sense to direct students from both courses to a single support forum, usually in the case UH-CS a telegram channel.

Currently, the students are able to submit code to the TMC server as "pastes" and thus share their code with other students. If the course has set the pastes as protected (the default for UH-CS), the access check is as follow:

ALLOW ACCESS FOR:
    1. teachers of the course
    2. creator of the paste
    IF submission passes tests:
        3A. other students who have completed the assignment
    ELSE:
        3B. all students

The annoying part is the case 3A, which only references the current course. This means that students who have completed assignment X on version 1 of a course are not able to view pastes made of the assignment X on version 2 of the course if all tests pass.

This is, admittedly, a relatively minor annoyance, but nevertheless makes more difficult any discussions on e.g. good programming practices between students of the different versions of the course. While it is, of course, possible to circumvent the problem by using another service such as pastebin.org, by commenting out a bit of the code to make the tests fail or by only sending a snippet, these are all with downsides. The first two circumvent the protection scheme, thus potentially enabling other students to plagiarize the answer. The last limits the context and lacks the implicit "look, it even passes the tests" of the TMC-pastebin submission.

Suggested solution:

Enable course creators to set courses as "assignment equivalent". In the check for paste visibility, modify scenario 3A (above) to the form: "other students who have completed the assignment on this course or any assignment-equivalent course".

Implemented a naive exercise matching scheme that considers all courses to be "assignment equivalent". While this is not ideal access control I think it is good enough for now.

So basically peer support between course variants should work now. Thanks for the suggestion!