Duke: No Mercy For CS 201 Cheaters Who Don't Turn Selves In By Wednesday
theodp writes: The Duke Chronicle published an e-mail reportedly sent to hundreds of Duke students who took Computer Science 201 (Data Structures & Algorithms) last spring, giving those who copied solutions to class problems until Nov. 12th to turn themselves in for cheating. "Students who have violated course policies but do not step forward by November 12, 2014," warns the e-mail, "will not be offered faculty-student resolution and will be referred to the Office of Student Conduct for disciplinary processes without any recommendation for leniency." The Chronicle adds that CS Prof Owen Astrachan, co-director of undergraduate studies, admitted that there is a fine line between collaboration and cheating in computer science — online and in person, although Astrachan made it clear in comments that "Students who copied code from the Internet are in violation of the community standard and course policies."
.. for when their jobs are outsourced. It's pretty much the same thing.
Posting AC for obvious reasons.
I received one of these emails and will be telling Duke to go fuck itself. I do all of my own assignments and use SourceTree for version control, and can demonstrate the development from scratch of each of my assignments, including handwritten development notes.
I've also hired a lawyer and we are prepared to sue the school instantly if any attempt is made to accuse me of cheating and defame my good character.
Never, ever, testify against yourself. Even in the case of a college, it's foolish.
If they know you did it, they know you did it. Leniency? What a joke. If they had the evidence, they wouldn't be offering a deal.
What's more likely to happen is that you admit it, and in the same email or further interviews you'll confess to other violations that they'll nail you on. Furthermore, in cheating, you are almost guaranteed to have broken state or federal law. By admitting to copying someone else's code you could be confessing to a real crime that could result in time in prison.
If you doubt this, see the video in my Sig. Never admit to wrong doing to a public official or law enforcement. Assume any email you send will immediately be turned over.
I'd like to know what type of assignment this was. If it's small and specific, there might be only a few basic working solutions. That is, the similarity stems from being correct.
If it's a larger project with creative design decisions, then I'm less sympathetic.
-Dave
Back when I was coding as my primary job, we never copied, we might have drawn inspiration.
We'd look at a tutorial, but we sure as heck wouldn't have looked at, say, code from Linux we planned on cribbing. Whereas if we had the FreeBSD or Apache source code, we just might.
Part of being a contemporary coder is knowing who you're legally allowed to borrow from, and who you're not.
But, part of getting your education involves not cheating. So, if "making use of available code" turns into "plagiarism and not meeting the school's academic policies" ... well, you're pretty much screwed, aren't you?
Lost at C:>. Found at C.
I think you're using very negative words for a very normal part of the coding process.
For example, about 20 minutes ago I needed a function to measure password strength. Could I have written it from scratch? Of course. Did I? Hell, no. That would be a needless waste of time. I used the Interwebs and had a choice of 3 or 4 perfectly good functions within about a minute.
That's how coding works today. And if you're not making use of other people's code you're not doing it right.
------ The best brain training is now totally free : )
The difference being that you could have coded it from scratch - and you don't learn how to do that just by copy/pasting code.
The brother admitted to it, and was held back. The sister stayed quiet and moved on to high school.
"I can't give you a brain, so I'll give you a diploma" - The Great Oz (blatently stolen sig)
I don't think it is a case of regularly. But it happens a few times per month.
But there is a big difference in doing this for your work and doing it for school.
If you are doing this for work, your goal is to get the computer to solve the problem.
For school your goal is to learn how to get the computer to solve problems.
For Example a CS101 student will have a nested for statement that displays a triangle in text.
The point of the exercise isn't about having a triangle to appear. But to teach and impress the ideas of nested loops.
Now if you take the code:
For a someone new to the topic. You wouldn't have realized that you needed to reset your string in the correct level of the looping. The real learning isn't about getting the program right, but finding all your mistakes in the process. Just copying the code so you got it done you failed to learn. You just completed the assignment.
Now for professional work you goal is to get the assignment done, and they really don't care if you learned something new or not. So just as long as you got that triangle even if you had a...
they really don't care.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
...as a student, and now as a teacher, I just don't get it. Why would you cheat?
because as a society we value credentials, we do not value education.
Just out of curiosity are there any professional programmers out there who don't regularly copy functions from the Internet?
The whole point of the course is to try & figure out how data structures and algorithms are implemented. It's as much about problem solving as it is coding. Sure, you could always just use std::vector in your C++ programs for vectors, but do you really understand how they work? What about binary trees and linked lists? That's the type of stuff they're teaching in these classes. Copying code & modifying it for your own purposes is fine for production, but if these students don't understand how the underlying code works, then their chances of successfully using it greatly diminishes.
I see it all the time in my courses. I emphasize to the students that they should only use methods currently covered, so they get a 0 if they go out on stackoverflow and find solutions that give them shortcuts. They fail to use critical thinking skills and gain a deep understanding of how programming works. Most of the time, their ham-fisted copy/paste code doesn't even do what the assignment requires.
Taking guns away from the 99% gives the 1% 100% of the power.
Right, because unlike other schools UNC gives their athletes the soft glove treatment. Lulz.
Are your football players smart? Didn't think so.
What rock do you live under?
Fake classes, inflated grades: Massive UNC scandal included athletes over 2 decades
CHAPEL HILL, N.C. — A scandal involving bogus classes and inflated grades at the University of North Carolina was bigger than previously reported, encompassing about 1,500 athletes who got easy A's and B's over a span of nearly two decades, according to an investigation released Wednesday.
The problem isn't necessarily that code was copied directly from the Internet, it was that it was passed off as the students' own work. Coding assignments can only be done so many ways in lower-level CS classes, where the problems have to be small enough to be easily testable. The problem I see is that allowing it encourages the practice among CS grads in later life.
I work in systems integration, and I can't tell you the number of times I've seen crap software, even software from vendors, that is horribly inefficient. I think a lot of that software has a fair amount of copy-paste code in it simply because the goal was to get something that compiled and sort of worked.
That brings up another very important point -- the level of abstraction has gotten so high in software development that it's very hard to see what's actually going on behind the scenes. If you're calling some massive database access library to do your data entry from a web form, you really can't tell how bad the SQL that your particular function uses is for the database. (I've seen packaged applications that will tie up the CPU of a server for 30 or more seconds just to make a database change.) If students don't learn at least some of the fundamentals in CS classes, who will design the next generation of lower-level stuff? Code reuse and libraries are good, but you need to know what's appropriate to use. So if you don't have a good grasp of algorithms, data structures, etc., how will you even know whether you're solving a problem correctly?
Same thing goes for my field -- systems admin/integration. If you don't know at least the basics of how TCP works, a few of the application protocols and something about how your OS manages resources, it becomes very hard to troubleshoot anything to any degree.
Yeah I never copy code. In my mind there is no point. I want to _understand_ how it works -- not just be a code monkey.
I think I can count on one hand all the times I've looked at other people's code to see how some of the finer details of the algorithm work but I'll just write the code from scratch. That, and along with debugging it, helps me to understand its edge cases, the domain it is strong at, and the areas where it is weak.
Your point about library code is conflating the issue.
There is a huge difference between calling someone else's code, and passing their work off as your own .
Just out of curiosity are there any professional programmers out there who don't regularly copy functions from the Internet?
Part of being a contemporary coder is making use of available code. Libraries of functions are "other people's code". Languages are other people's code. Etc. it's all about other people's code.
This defense always comes up when cheating is the issue, and it is always wrong. The purpose of an examination is to determine if an individual understands the subject matter, and no argument how programming is done in practice alters the fact that a cheater has failed to demonstrate that he understands the subject matter (and has, in fact, provided good evidence that he does not.)
Furthermore, one should not be spending the time and money a degree from Duke costs, just to be a cut-and-paste coder - a semester at a community college should be enough, if you can't teach yourself. The purpose of a university education is to develop a thorough understanding of the subject matter in order to become the person who finds solutions to problems, rather than the people who copy them.
The brother admitted to it, and was held back. The sister stayed quiet and moved on to high school.
That's school working as it should: it taught th brother a very, very valuable lesson he'll never forget. The point of school is learning things, right?
SJW n. One who posts facts.
Shared libraries or static libraries?
Static library use involves copying at the link phase. Shared library use doesn't. Depending on your license, the distinction can be legally significant.
And, well, that's the thing. Those of us who are professionals think about liability... which is why we can actually find a large company willing to buy our startups without doing an absolute freakout (or requesting a huge discount for cost of reimplementations) analyzing the codebase during due diligence.
Exactly. The purpose of the assignment wasn't to get some code to work. It was to learn how to develop an algorithm.
I'm not a CS person, but rather a chemical engineer. When I was in college, we learned, and had to do, all sorts of distillation designs using McCabe-Theil diagrams and other hand and graphical calculations. Would we ever do this at our job? No, there are all sorts of computer programs that figure these things out. However, going through the process of doing the work the hard way, and more importantly redoing the work that other people have already done, makes us understand the principles behind the logic. It also helps for giving insight if and when we want to extend the thinking to some new area.
Talking about how things are reused in one's job is completely missing the mark.
Of course. But when doing a course on data structures, kids are expected to develop the skills needed to write pieces of code that might seem trivial to you — But in practice are the result of tens of years of work. I quite enjoy reading 1960s computer science papers precisely because of that.
I teach Operating Systems. My course depends on Algorithms and Data Structures. Believe me, even though the students just finished the course mentioned in this note (of course, in a different university, different country even), it is obvious in their assignments they have not yet interiorized many of the things they are supposed to have learnt. I could probably fill a book explaining the different implementations of lists or trees I have seen, or the myriads of antipatterns I read on a regular basis. And that's what university is for.
In "real" works, of course, they can answer open-book to all exam^Wsituations. They can copy code from teh intarwebz. They can compare code. But first, they have to understand and interiorize the concepts.
Duke is getting a reputation for raping students. Why would anyone go there or allow their children to?
Saying in your comments that you found a 'method for neatly measuring password strength and reimplemented it' would, however, demonstrate that not only can you find code that you would need but CAN code and implement the solution.
I always cited sources in my source code when I took programming courses in college. More often it was implementing a solution from a different language into Java. The instructors never had a problem with that.
The goal is to get the degree, not learn things.
Being an actual professional software developer, I can definitely say that with the exception of equations, I have never copied code from the internet and have never seen that as an expectation (any more than an author plagiarising paragraphs in their books).
There are legal (copyright/licensing) and ethical issues with doing so (for example, being complacent and treating code on the internet as having some level of vetting).
If I need functionality that I feel already exists or is too dangerous/time consuming to write any my own... well... that is what libraries were made for. Or I contact the legal department about procuring the source so that I can modify it to fit my own needs.
Copying it outright is never an option.
while(1) attack(People.Sandy);
I once wrote an English paper on calculating a parabola curve, looking at 30 math books to see how other people described calculating parabola curve, and doing my best to write my own version that wasn't much different from anyone else's. The instructor accused me of copying. I challenged her to write an original description. She couldn't and give me an A anyway.
The decision is absolutely required. The contrary would be cruel.
Why lie to them? There's is no future in IT for a person who is not able to copy code from the internet and pass it as his.
The professor had surprised us then told us to write out on paper what the algorithm actually did and why.
There were a few people missing the next class.
Non impediti ratione cogitationus.
Yeah, fuck learning *how*. In case it's been too long ago for you, a school environ is not a work environ. The goals are two very different things.
Of course you assume that code posted in a random internet post will be worth something. If you wish to copy from a project that is maintained, rather than from a random, unscored post, you might be facing licensing issues. About the only place where good code has a chance at being fleshed out, collaboratively, would be stackoverflow. The posts are scored, and anyone can edit things and improve them - or at least comment when things are seriously broken and unfixable.
A successful API design takes a mixture of software design and pedagogy.
Isn't that the purpose of code reviews, though? I mean, you can grab a few lines to do a specific function, test it, maybe use as is, maybe improve, then have other people review the code. Or is that not done in the real world any more?
"Growing old is inevitable; growing up is optional."
The difference being that you could have coded it from scratch, but not nearly as well
FTFY
As good as many coders are, their first coding attempt at any problem is not nearly as good as something that has already been done, several iteration ago, solving the same type of problem. There is efficiency of code, completeness, and security issues that have already been solved.
No, you dropped the important half of his argument. The class was not "Efficient Software Development", it was "Data Structures & Algorithms". Perhaps you shouldn't have cheated during your Reading Comprehension & Critical Thinking classes, then you wouldn't need to justify cheating later on...
What annoys me about McCabe-Theil diagrams is that they are not fundamentally the way the theory works for designing distillation systems. They are basically a way to solve problems using huge approximations before we had the computer power to do it correctly. I much prefer the rate models for distillation column design and think that mccabe-theil should be scrapped. HOWEVER, I think that students need to understand how that stuff truly works and since the algorithms are simple they should write a basic rate equation based solver for distillation column design. Then they would truly understand how the stuff really works and be better equipped to use it.
I just don't like the idea that you learn one method that is supposed to give you the idea of how things really work but then the actual systems you used are based on entirely different theories and assumptions.
Computer modeling for biotech drug manufacturing is HARD!
If you want to stomp out cheaters, come up with problem domains with very unique and strange processes that wouldn't be found in the wild.
And then everyone complains that they're being taught stuff that they'll never see in real life. The classwork isn't "relevant".
Why should anyone have to leap through hoops to "stamp out cheaters"? Why shouldn't simply expelling cheaters be good enough?
If you want to bust someone for leveraging a well known, legally OK use of a tool,
Except 1) they're not there to demonstrate that they can "leverage" the tool "google", they're there to learn algorithms and how to code in a certain programming language, and 2) it isn't legally ok in the context of doing classwork. "I want to see you select the right algorithm and then produce a working piece of code that implements it" isn't "find something someone else has done on the net and turn it in." Yes, sometimes there are more rules involved in life than just those found in the code of federal regulations or state ordinances or municipal code.
Code reviews only work in practice on code of known quality level. I stress that by "known" I don't imply "perfect" or even "high" - I only mean that it must be known. The code review process must be tailored to the quality of people who do the work.
There's no way to properly implement code reviews of code that effectively comes from random sources. Most of the time you'll be either wasting the time on code that's very good, or you'll miss some serious issues.
A successful API design takes a mixture of software design and pedagogy.
many of the "international" comp sci / engineering students prided themselves on beating the system (less time in college == less living expenses) by taking 24 or more credits per quarter. The way they did this was cheating their asses off by copying homework. Most of the work for comp sci / engineering was done in the labs so they'd rummage through the trash cans and look for other student's printed off drafts. :/