Live data from Hacker News

JPlag – Detecting Software Plagiarism

github.com

21–30 of 85 posts

Re: JPlag – Detecting Software Plagiarism

#21
post #9

It's funny how we drill the idea that everything must be reimplemented from first principles into students, only to flip that when they join the workforce.

> It's funny how we drill the idea that everything must be reimplemented from first principles into students

Where on earth did you go to school that you couldn't just call list.sort() after your first algorithms class? I've never seen a class that teaches students that everything must be implemented from first principles. They only do that for the concepts taught in that class, or 1-2 classes prior, to make sure you are actually learning and have a clue what you're doing. Which... should makes sense? You should want engineers to cut costs based on understanding rather than ignorance.

Re: JPlag – Detecting Software Plagiarism

#22
post #12
post #9

It's funny how we drill the idea that everything must be reimplemented from first principles into students, only to flip that when they join the workforce.

exam: implement add. "return a + b": plagiarism, disqualified. "return a + 1 + b - 1": A+

The exam questions themselves would be plagiarism also

Re: JPlag – Detecting Software Plagiarism

#25

[flagged]

It’s no secret that huge portion of all students are cheating or plagiarizing - let’s not pretend it’s only international students. My few data points being a TA for many years at a top engineering school: about 70% of the cases I reported for violations were domestic students.

Depending on the distribution of international / domestic students, this also sounds wild and in congruence with the other commenter.

If there is 10 out of 100 international students, and they do 30% of 10 cases, then 30% (!!) of international students cheat while only 7% of domestic students cheat - in conclusion, international students do most of the cheating.

Regardless of this statistical thought experiment, I don't know what to do of data like this. It is not really ethical to act on it.

Re: JPlag – Detecting Software Plagiarism

#26
post #9

It's funny how we drill the idea that everything must be reimplemented from first principles into students, only to flip that when they join the workforce.

Building things from first principles is a great way to instil understanding about how things work and why, which helps the understanding of problems later.

When doing things for real in the workforce, reinventing core parts yourself is often not the best way, if only because you'll reinvent already fixed bugs too or that it wastes time, and that should be explained too. But understanding how things work below the outer layer of what would otherwise be black boxes lets you better understand when things go wrong, or have a better position to assess a pre-made library/service/other to be confident it is the most suitable option¹. Also, building things from scratch helps teach complexity analysis and, at a slightly higher level, security analysis, both of which are very useful, often vital, at much higher and/or more abstract levels.

If building from first principles, or close to, is being drilled into students as the way to do things full stop, then those students are being taught poorly. It isn't how I remember learning way back when I was last called a student.

For example my understanding of how b-trees and their relatives work, in part from having build routines to manage them in the dim and distant past, along with a number of other similar bits of knowledge, helps my understanding of how many DBMSs work in general and how certain optimisations at higher levels² do/don't work. I doubt I'll ever need to build any structure like that from anything close to first principles, but having done so in the past was not wasted time. The same with knowledge of filesystem construction, network protocols, etc. – I'll probably not use those things directly but the understanding helps me make choices, create solutions³, and solve problems, less directly.

--------

[1] or at least a suitable option

[2] things I do in the query syntax, what the query planner/runner can/can't do with that, etc.

[3] I am sometimes the local master of temporary hacky solutions that get us over the line and allow time to do things more right slightly later instead of things failing right now.

Re: JPlag – Detecting Software Plagiarism

#27
post #2

I recently had to check code from some of my students at the university as I suspected plagiarism. I discovered JPlag which works like a charm and generates nice reports

How do you deal with disputes? One's code is flagged even if the student in question didn't actually cheat. What then? Do you trust tools over the students' word? In addition, do things like stack overflow and using LLM-generated code count as cheating? Because that is horrible in and of itself, though a separate concern.

If you talk about the written code to the student in question it should become clear whether it was copied or not.

Re: JPlag – Detecting Software Plagiarism

#28
post #9

It's funny how we drill the idea that everything must be reimplemented from first principles into students, only to flip that when they join the workforce.

This argument has come up a lot since ChatGPT released. I can agree that new tools (like LLMs) can have a place in education, potentially. That said, learning the foundation of anything you do is critical to understanding the higher levels of it.

I think the same connection can be made to StackOverflow. If you are/were a computer science student and you did a lot of copy-pasting and not a lot of thinking and trialing, there's a really good change you didn't get to suffer mistakes during development that you know to avoid now as a graduate. Now, we all have taken advantage of code from StackOverflow and that's a tool to aid development for us, but when it's something you treat as a crutch, when it doesn't have the answers you need, you're screwed.

One case I saw literally yesterday at work. We had a dev that had written a lot of copy-pasted code saying that it couldn't be generalized and take advantage of a mapping we already have to generate a UI. This dev had not yet had the fortune of learning how to properly abstract this kind of problem in this specific circumstance. I sat down with him for a moment and instead of spitting out a bunch of nonsense that the LLM was trying to get him to write, we say down and paired on the issue until we had a more general solution.

He learned some abstraction concepts, we all got a better code base, and he learned a way to help tease an LLM into a better solution going forward. That foundation was required to get that better solution though, in this situation.

Generally speaking, I think you should know all your underlying concepts so you can audit any new development assisting tools.

Re: JPlag – Detecting Software Plagiarism

#29
post #4

Earlier quoted context omitted.

Kinda rare these days with ChatGPT

You might be surprised. Many students who use ChatGPT for assignments end up turning in code identical (or nearly identical) to other students who use ChatGPT.

Surprising because you get different answers each time you ask ChatGPT.

Re: JPlag – Detecting Software Plagiarism

#30
post #23

[flagged]

In my CS program, a huge portion of all students were collaborating. Why did you specify international students?

I didn't do CS at university but several uni friends did and nearly all the first year CS students came close to being kicked off the course due to pervasive plagiarism in their submitted course work. That was almost 30 years ago at a well known UK university.
Post reply on HN