4 ms·
FFS how many different implementations of quicksort in Python can there possibly be? How would they expect you to make yours unique? Different variable names or
by zaccus 8y ago
FFS how many different implementations of quicksort in Python can there possibly be? How would they expect you to make yours unique? Different variable names or something?
I'll never understand the concept of plagiarizing long-established solutions to problems.
- jplayer01 8y agoIt's ridiculous. If you're going to require a take home programming test, at least make it something that isn't solved immediately just by opening SO. Ask a cookie cutter question, get a cookie cutter answer.
- kemiller2002 8y agoHonestly, I think I'd be more impressed by the person who got the answer off of SO. At least that person isn't wasting their time trying to solve silly problems that have already been done.
- ghaff 8y agoOr Wikipedia. (OK, you'd have to turn the pseudocode into Python. I'm not even primarily a developer and that would take me about 10 minutes.) Or wherever. There are apparently a few slightly different implementation details to Quicksort but how unique can a Quicksort be?
- msla 8y ago> FFS how many different implementations of quicksort in Python can there possibly be? How would they expect you to make yours unique? Different variable names or something? Not even different variable names, as any plagiarism detector which is halfway-competent would have to ignore them because changing variable names is one of the things any halfway-competent plagiarist would do. The arms race has gone to the point where it's impossible to detect mechanically whether an implementation of a standard algorithm has been plagiarized. It's probably impossible for a human to detect it without other context. And that context comes down to "Has this student shown steady gains or are they suddenly handing in competent code after demonstrating complete incompetence?" which you can't know unless the class is structured such that students show what they know to the graders in person. Which requires a certain student-to-grader ratio. Which is expensive.
- zrobotics 8y agoThe problem is, it isn't at all unlikely that a quicksort implementation created entirely independently w/o plagiarizing will match an implementation somewhere online. When I took algorithms, I would normally do the assignment and compare my implementation with online sources, mostly to compare against. Aside from variable names, ~80% of those assignments matched one of the first few SO answers. I think the real fail here is a company assigning something like quicksort and expecting to get original answers.
- msla 8y ago> The problem is, it isn't at all unlikely that a quicksort implementation created entirely independently w/o plagiarizing will match an implementation somewhere online. It's practically guaranteed. Quicksort is quicksort. You can't get creative with it without implementing something which isn't quicksort anymore. That code may well sort a list, but if the assignment is to implement quicksort, you've failed at the task. > I think the real fail here is a company assigning something like quicksort and expecting to get original answers. Right. You have to go to IOCCC levels of perversity to be able to turn in something which is quicksort but isn't going to trip a well-trained plagiarism detector.
- hermitdev 8y agoI remember being asked how I'd go about implementing quicksort in a phone interview. My response was: I wouldn't. Sorting is a solved problem that's available in pretty much any language's standard library (every non assembly language I've used, at least). The interviewer chuckled and something to the effect of "good answer, then can you describe the algorithm to me?", to which I said sure, and did. Thankfully, I went through college before these automated plagiarism detectors had caught on. They were around, but not as pervasive as today. I mean, if you're going to sort a vector in C++ for a trivial app, there's only so many ways to write: std::vector<int> stuff{...}; std::sort(std::begin(stuff), std::end(stuff)); And, lets face it: most lab assignments requiring a student to write a program are pretty small and trivial (at least mine were 20 years ago). The projects, on the other hand, were definitely more involved and you'd likely see more divergence in solutions there.
- stronglikedan 8y agoI've often re-implemented long established solutions, just to become intimate with the inner workings. Sort of like taking things apart and trying to put them back together as a child. While I may never use that exact knowledge, I may be able to apply the principles elsewhere. I imagine that is the perceived benefit to a student (of which I was never a very good one).
- hinkley 8y agoWhy do we even ask these questions? I don't want to work with someone who trusts their own quicksort implementation over one from an OSS library. It's a toxic combination of optimism and egotism that I don't have time for. What other stupid shit are they doing all day long? What does it say about my team if I'm on the asking end? Interviews are short, and information exchange is always limited. Instead I may ask them to sort a complex object, or cook a piece of data that's organized opposite of what the UI will require. lots of people fail at these tasks. They're my version of fizzbuzz, but they actually represent the work we do.
- travisjungroth 8y ago> cook a piece of data that's organized opposite of what the UI will require What does this mean?
- wincy 8y agoMaybe modeling a many to one relationship inversely? Like if you want to show all the chips sold in a day but the data comes back with chips sold per customer and then you have to massage that to show how many chips were sold at a location.
- mannykannot 8y agoEven the bugs, if there are any, are not likely to be original. That's why the idea of increasing software reliability by combining multiple independently-developed implementations of a set of requirements with a voting strategy is not as effective as it would appear under the assumption of uncorrelated errors.