-
Notifications
You must be signed in to change notification settings - Fork 304
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Plagiarism detection
: Introduce Continuos Plagiarism Control MVP
#7090
Conversation
…checks (#6666) Co-authored-by: Julian Christl <[email protected]> Co-authored-by: Maximilian Sölch <[email protected]> Co-authored-by: Laurenz Blumentritt <[email protected]> Co-authored-by: Markus Paulsen <[email protected]> Co-authored-by: Paul Schwind <[email protected]> Co-authored-by: Stephan Krusche <[email protected]>
…nd reduce their score (#6804) Co-authored-by: Julian Christl <[email protected]> Co-authored-by: Maximilian Sölch <[email protected]> Co-authored-by: Laurenz Blumentritt <[email protected]> Co-authored-by: Markus Paulsen <[email protected]> Co-authored-by: Paul Schwind <[email protected]> Co-authored-by: Stephan Krusche <[email protected]>
…plagiarism and reduce their score (#6924) Co-authored-by: Julian Christl <[email protected]> Co-authored-by: Maximilian Sölch <[email protected]> Co-authored-by: Laurenz Blumentritt <[email protected]> Co-authored-by: Markus Paulsen <[email protected]> Co-authored-by: Paul Schwind <[email protected]> Co-authored-by: Stephan Krusche <[email protected]>
Co-authored-by: Julian Christl <[email protected]> Co-authored-by: Maximilian Sölch <[email protected]> Co-authored-by: Laurenz Blumentritt <[email protected]> Co-authored-by: Markus Paulsen <[email protected]> Co-authored-by: Paul Schwind <[email protected]> Co-authored-by: Stephan Krusche <[email protected]> Co-authored-by: Patrick Bassner <[email protected]>
Plagiarism detection
: Continuos Plagiarism Control MVPPlagiarism detection
: Introduce Continuos Plagiarism Control MVP
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested in testing session. Everything worked as expected.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested in testing session. Works fine 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested in testing session, works fine 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested in testing session
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested during the testing session, plagiarism detection is working as expected
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Manual test, test server 2 (2023-08-20)
Did detect plagiarism; did update to changes to avoid plagiarism
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested in testing session
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested during the testing session, works as expected
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code looks good + Tested on TS2
Then I'm not sure whether we can use such a feature tbh. Do I miss anything @jakubriegel ? /cc @tsaglam |
The comment above may also be important for @ls1intum/artemis-maintainers |
For completeness :) /cc @sebinside @larissaschmid |
As a maintainer of JPlag since before its integration into Artemis, I have technical, legal, and ethical concerns. First of all, you actively give students feedback on the quality of their potentially intentional plagiarism. Such feedback has already successfully been used to attack plagiarism detection in the past, see this publication Second, applying plagiarism detection in this early phase can be seen as general suspicion (dt. Generalverdacht) which can quickly bring up legal problems. Third, plagiarism detection without human intervention is highly ethically questionable, see this information. JPlag (and similarly, all other tools with the same functionality) have never been intended to be used in an automatic pipeline. Only humans are able to evaluate plagiarism. |
Before we merge this PR, we need to discuss some aspects of the process first |
There hasn't been any activity on this pull request recently. Therefore, this pull request has been automatically marked as stale and will be closed if no further activity occurs within seven days. Thank you for your contributions. |
This PR remains open as a reference. It will be closed after new version of cpc is ready for review |
New version of the cpc implemented in #7302 |
Checklist
General
Server
Client
Changes affecting Programming Exercises
Motivation and Context
This PR introduces continuous plagiarism control (cpc). Plagiarism checks for exercises with the cpc enables will be executed automatically every night. Implemented logic uses existing plagiarism mechanisms, so the plagiarism checks algorithm is untouched and the results of checks started by cpc are presented in the interface familiar to existing users. This feature doesn't open plagiarism cases automatically, but they can be opened manually just like with manual plagiarism checks.
This PR completes 7 milestones continuous plagiarism control (cpc) implementation. More about it can be discovered in my thesis proposal: https://confluence.ase.in.tum.de/display/ArTEMiS/MA+Jakub+Riegel?preview=/157431627/166332701/riegel_proposal.pdf
Description
This is a joined PR for changes introduced in #6666, #6804, #6924, #6972.
General
Changes:
Detailed
Warning about plagiarism detected⚠️ Suspicion of plagiarism! '. This gives student a clear information that this is needs to be fixed, while not imposing any negative consequences.
On the submission page and editor (if applicable) the student sees a gentle note '
Score reduced to 0
Submission with detected plagiarism receives a Result with 0 score and a comment that this is due to detected plagiarism. Artemis treats and displays this result as any other results.
For programming exercises submitting next submission will generate a new tests result which overrides plagiarism results. In case that new submission is also plagiarism the next cpc run will add 0 score again
For text and modeling exercises submitting again doesn't remove 0 score automatically. It is removed during the next cpc run.
Disputing cpc results
Disputing cpc results is possible after the deadline of the exercise. Students use the same interface as for disputing assessment results. Instructors handle those disputes the same way they handle assessments disputes.
Post submission deadline tests
Instructors can use cpc to scan submissions posted on the due date. Such scans are optional so that instructors are free to run plagiarism checks manually after the due data (for example when they want asses submissions right after the deadline and do not wait for cpc to trigger).
Steps for Testing
cpc-1min
branch which triggers cpc every 1 minuteGeneral:
Disputing results:
Review Progress
Performance Review
Code Review
Manual Tests
Test Coverage
Screenshots
Exercise form
New fields (for programming, text and modelling):
![image](https://private-user-images.githubusercontent.com/32958017/251968148-518d804d-a18e-4f03-bad5-a6fe564e59e3.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNzU5NzksIm5iZiI6MTczOTA3NTY3OSwicGF0aCI6Ii8zMjk1ODAxNy8yNTE5NjgxNDgtNTE4ZDgwNGQtYTE4ZS00ZjAzLWJhZDUtYTZmZTU2NGU1OWUzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA0MzQzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTY4MDFhNDZiN2E5YjRjM2FhOTI2OWNjMjliNDZkNjc0M2JmMTVkZmM4Yjc5NDE1OGIwZmYyMTM3NTFiNTlhYTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.L3HjhGNbYsqNKw-8iC1Ca_s8ctzuxPY-KXWl7NYHick)
The option is checkbox disabled when cpc is not selected:
![image](https://private-user-images.githubusercontent.com/32958017/260248825-1c74d6b8-c924-4aff-afcf-6cbd7ff1fb4f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNzU5NzksIm5iZiI6MTczOTA3NTY3OSwicGF0aCI6Ii8zMjk1ODAxNy8yNjAyNDg4MjUtMWM3NGQ2YjgtYzkyNC00YWZmLWFmY2YtNmNiZDdmZjFmYjRmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA0MzQzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTRlOTA3MTFkODgyN2MzOTI0MmViOGM5MTgwYzcwNjhmNDliYTU4NTBmMjJjMjllNmRmYjljMzhkYjUwZjZjNzQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Rfi6wMQG50B9sDRx90PAy68zn85pR5c7Y12YuGBq1n0)
Plagiarism page
The button for checking plagiarism has new copy with now word. It better communicates to the user that this will be on-demand check, independent from continuous plagiarism control.
Initial view:
![image](https://private-user-images.githubusercontent.com/32958017/243816240-a7c2df9e-3733-4e65-b70d-8e60b5b79a5a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNzU5NzksIm5iZiI6MTczOTA3NTY3OSwicGF0aCI6Ii8zMjk1ODAxNy8yNDM4MTYyNDAtYTdjMmRmOWUtMzczMy00ZTY1LWI3MGQtOGU2MGI1Yjc5YTVhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA0MzQzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdlMzMyNGExMmE0Nzk5Y2MzOTc1YzVjNzM3N2FjODZhMWQ2ODlkYzdiMzQ5NWI5NDA5YWEyNzRjNjQ5Mzc3N2ImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.BKCm5Wvpie6NcBF2MQGTBfUj-M8VPc5074bSzSo5Mo0)
View with all buttons visible:
![image](https://private-user-images.githubusercontent.com/32958017/243816105-d813cdc4-7104-497c-93c8-8bbd9177c9ea.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNzU5NzksIm5iZiI6MTczOTA3NTY3OSwicGF0aCI6Ii8zMjk1ODAxNy8yNDM4MTYxMDUtZDgxM2NkYzQtNzEwNC00OTdjLTkzYzgtOGJiZDkxNzdjOWVhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA0MzQzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQwOGY3OTM1NWNiN2JhOTA0NDJkYjRmYjk2ZGNjMTAzNDQ0YjQ5OGZiZGI5NzFlZWNhYjYyMmE5NWE1NDQ5MGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.O8-0BcgWL2WZgufxk_DXKK_U2ymQV6g76S4jM9rFFuE)
Programming exercise page header when cpc detects plagiarism:
![image](https://private-user-images.githubusercontent.com/32958017/255424309-a7800f42-2fcd-4a55-881d-12e9ce6c6e6a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNzU5NzksIm5iZiI6MTczOTA3NTY3OSwicGF0aCI6Ii8zMjk1ODAxNy8yNTU0MjQzMDktYTc4MDBmNDItMmZjZC00YTU1LTg4MWQtMTJlOWNlNmM2ZTZhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA0MzQzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTUzMWYyOWMyMDk0NWE5MDBhMDUyZGVjYzgwNjFjOTkyOTQ1YWY0ZTdkMzVjZjQ4NmQzMDFkZDM4MjY4YjEzZjMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.egtGuVOLB_uEYgciUIgEebF8quLlGohgTHDGXjGqg40)