4 ms·
Plagarism Detectors for Code, like MOSS, are a major issue. Take a simple getter/setter method. MOSS will mark these as duplicates unless you explicitly go in a
by tsumnia 8y ago
Plagarism Detectors for Code, like MOSS, are a major issue. Take a simple getter/setter method. MOSS will mark these as duplicates unless you explicitly go in an say "no, its okay for THIS to be the same". This adds a degree of bias to what is justifiably "expected" and "unique" for student submissions. As someone that uses MOSS, I regularly look at any flags, "eyeball" them, and in only 2 instances did it result in a legitimate integrity violation. Not to mention that I have to hunt for all possible solutions across the internet and add them to the pile to ensure students didn't "copy it from a website".
I think current CS is doing itself a disservice because we want students to collaborate, but discourage them from even looking at each other's code (that is literally how students have spoken to me about it). I don't know if English or History students refuse to look over each other's work, but I doubt it.
Soloway described programmers as having "recurring basic patterns". If you accept his theories, we literally have tiny little rolodexes in our minds and when we encounter a problem we go "hang on, I've done this before" and pull out some code we've worked on in the past. We literally have tiny snippets of code we try to reuse if we can.
Instead, for well known algorithms, just give them the code! My research [1] require them to at least do it once, but either way - what good is it to have a student reinvent how A* search works? What about inserting into a Linked List? There are only a finite number of ways to implement these things. Instead of discouraging StackOverflow, and letting students try to sneak that type of work into their code, control it through the use of additional examples. They are less pressed to copy and paste code from a 3rd party if you've literally given it to them.
We want students to understand how to take something like a programming language and use it to solve a problem, but then we confound the entire process by not training them on the language. Even among SIGCSE, people can't agree what CS1 should be and somehow everyone wants it to be "more than just learning to program" like its a bad thing.
Back to plagiarism detectors for code, I think our current track discourages students to be open and help each other because they fear if they describe how they solved the exact same problem, there goes college. The result is encouraging the loner stereotype instead of reducing it. Hell, paired programming has to be forced on us because we can't "work with other people". I recognize some simply don't like it, however, my point is we've trained ourselves to not work together for so long that we designed a coding paradigm to have "controlled helping someone code".
[1] https://research.csc.ncsu.edu/arglab/projects/exercises.html https://research.csc.ncsu.edu/arglab/projects/exercises.html
[2] https://www.sciencedirect.com/science/article/pii/B9780934613125500422 https://www.sciencedirect.com/science/article/pii/B978093461...
- saagarjha 8y agoAt least MOSS is better than what I had to do for one assignment: submit code through Turnitin.
- Jach 8y agoThere are just too many competing tugs. Something has to give. The problem of plagiarism goes away entirely if you make the course grade consist entirely of the final in-person exam. That doesn't mean you have to give up assigning homework and scoring it, but for mysterious reasons probably related in part to modern students and teachers not wanting to do anything unless forced to by the system colleges have moved away from the "final is everything" model.
- tsumnia 8y agoThis is something that I emphasized in my CS1 courses (I haven't taught them in a few years). Homework was 50% divided into 10% for Typing Exercises (my research), 10% for Lecture Exercises (MCQ, TF, Fill in the Blanks), and 30% Programming. Exams accounted for the other 50% (Midterm 20%, Final 30%). The big thing is that if you look at 20% of their grade was simply on drilling. Explicit cheating wouldn't help for them and they are just enough to still impact your grade if you don't do them. Exams were in class, 2-3 hours long, and with a coding without Internet section. This approach does become more difficult with a 75 minute course (which is what NC State has), simply due to time constraints, so I can agree with you there. However, your point about "Something has to give" is one of the reasons I argue that we expect too much out of CS1. In other technical skills, like cooking, music, martial arts, dance, etc., the introduction is much more about accumulating the technical skills necessary. Music theory isn't as prominent in an Intro to Singing class; however, in Intro to CS, I don't think we do that. As my course structure should indicate, I think intro courses should be more drilling to build the neuromuscular memory because then at higher levels we can do more critical thinking with the trust that students "know how to execute the plan". I do think that something like Problem Solving should be given its own separate course where its skills can be trained and honed parallel, but separate, from Programming.