Computer Science Students Outsource Homework
Carl Bialik from the WSJ writes "'If U.S. companies can go online to outsource their programming, why can't U.S. computer students outsource their homework--which, after all, often involves writing sample programs?' Wall Street Journal colummnist Lee Gomes asks. 'Scruples aside, no reason at all. Search for "homework" in the data base of Rent A Coder projects, and you get 1,000 hits. (An impressive number, but still a tiny fraction of all computer students, the vast majority of whom are no doubt an honest and hardworking lot.)' Some of the Rent a Coder users appear to be outsourcing their way through school, at low costs--probably less than $100 per assignment. The posting are, of course, anonymous, but Gomes traces one to a student at the New Jersey Institute of Technology, where an instructor tells him that Rent a Coder contributed to a problem of plagiarism last semester."
Or maybe they won't realize it, and you'll be writing the kind of code that ends up on The Daily WTF. The reality is, unqualified graduates have been coming out of CS programs for years. The problem is that many employers have no good way to guage whether a candidate can really write code or not. In the mean time, you can take comfort that these incompetent employees will be moved the where they can do the least damage, management (The Dilbert Principle)
Of course any dummy knows that the actual coding part of CS is braindead fucktard robotic monkey easy, but in my part of the woods, any serious CS student has a whole metric fuckton of math to study... Indeed, from my university, CS is basically equivalent to a math degree, plus programming. It's mostly theoritical type studies, with actual physical application of those ideas at the end. I know for a fact that graphs scare stupid people.
I don't know what kind of dipshit thinks what I've gone through was especially easy, they can be assured that real, honest to goodness Computer Science is not something someone would chose for easy assignments, or the job that comes about at the end. That's what liberal studies, business, marketing and multimedia is for. Then again, maybe that person studied Computer Science at a community college (not that what they have to offer isn't valuable, in general).
I had many friends who graduated with BA in CS and related subjects from a respectable state university in the US and all of them seem to have gotten excellent job offers right after graduation from -major- e-comerce and software companies.
It's not 1999 anymore. When I graduated with a CS degree this past spring, I don't know of a SINGLE person in any of my classes who get any offers AT ALL. From ANYONE. As far as I know, immediately after graduation, people either continued at the company they were interning for (if they were smart enough to intern during the school year) or they are now doing computer shit work (like data entry) at some borderline-illegal business run out of the basement of some dilapidated office building... or, like most people, they switched careers.
UNIX: A computer user is defined as a programmer. WINDOWS: A computer user is defined as a consumer.
Requiring a code-walkthrough isn't going to catch the skilled but lazy CS students. I don't have a problem explaining fragments of code I've never seen before (providing they're reasonably sane). This is basically what happens whenever I need to patch something so it Just Works. OTOH, should students who write insane code (and thus can't explain it the next week) be labelled as plagiarists?
It's much harder to explain why you chose a particular design (especially for complex OO systems) if you haven't taken the time to grok it. For us, code is usually worth 50% or less of an assignment, with a lot of marks going to reports.
The other issue is that most of the early undergraduate homework is fairly trivial (data structures, language basics) and is thus prone to similar/identical implementations. Even in a moderately challenging first year haskell assignment, several of my functions turned out identical to another student's (although my whitespace was prettier :D), and although we'd had fairly broad discussions about algorithms, our code was written indepedently. Although the collaboration between all the functions was subtle, each function was in itself trivial and usually less than 4 lines long. It makes sense to put more emphasis on the design aspect.
Well, even for other reasons than catching plagarism, making students explain code is a good idea. Firstly, it builds up their communications skills. Secondly, it catches shotgun debugs (I'll just twiddle everything around until it works). Thirdly, students shouldn't write "crazy code" that they can't explain. If they can't explain it, it isn't maintainable. Nobody is going to want to see that in real life. Teach them while they are young. Fourthly, it catches code that accidentally get right, as in, they misunderstand some concept, but manage a working solution anyway. Next time they won't be as lucky and by not making them explain code, you miss a chance to correct their error which wouldn't show up in your test cases.
====
Crudely Drawn Games
My CSC316 teacher was talking about this in class this afternoon, before the article was posted. The CS department at my school is fairly large, and they already have programs to compare assignments to code produced by fellow students, previous graduates, and code posted on the web.
Teachers aren't stupid, and I suspect they'll find a way to check for this before long.
The sad part is that according to my old java 1 professor, they flunk about 100 students a semester on cheating alone.
I guess that depends on where you live. I also graduated last spring, and all my classmates (that I know of) have found good jobs. We didn't get people running up and giving us jobs, but we applied for jobs and got them. Mind you, this was Software engineering, with Coop, so we all had experience. I think the most important thing you can do in school, apart from actually doing the work, and learning the material, is to get into the co-op program, and get some real world experience. It pays well too and helps to keep the student loans at a minimum.
Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
The sad fact is that when you cheat, you are really only cheating yourself. If you do not gain the knowledge that is taught in a course, it is your loss. You paid for the course, and did not get the benefit (the knowledge) that was there for the taking.
The most important thing that you gain from a college education is learning skills. By learning a variety of subjects, you gradually develop skill at learning new things. Learning is the only professional skill that really matters during the longer term (20-40 years) of your career. If you don't develop skill at learning, your career will plateau or fail very early.
The other observation that many seem to miss is that the easiest way to get an 'A' in most courses is to actually read the text and learn the material. Reading most undergraduate computer-science textbooks only takes a few days, even if you are unfamiliar with the material. (The math books take a little longer, of course.) Then, if you actually know the material, writing a programming assignment normally only takes a few hours.
The fact that cheating seems to be common has had an effect on the courses, though. I now give exams. It is amazing how a 3-hour exam can separate the people who know the subject from those who don't. I try to design the test so that I can write it in about 10-15 minutes. The students who really learned the material usually write it in less than an hour, and thank me for the easy test on the way out. But some of the students take nearly the whole three hours, and turn in messy piles of disorganized scribbling. I almost don't have to grade the papers -- I could just note the time that each student turns in the test and leaves the room.
We run a small numerical website (www.codecogs.com), nothing the size of RentaCoder but never the less, we frequently get direct request or forum postings for C code that's very clearly homework - deleted straight off.
...."
What gets me, is some don't even have the intelligence to disguise the problem they need solving with us often receiving the exact text from their course work, i.e. "Question 10, Write a program in C to extract
Furthermore I'm struck at how bloody rude these people tend to be, esp given they are cheating. You'd think that if this is your approach to getting through Uni, then the first two words of the English language you might learn are 'Please' and 'Thank you'.
So far I hope we've not helped anyone.
Cheers
Will