Hacker News new | comments | show | ask | jobs | submit login
Coursera's Functional Programming - Cheating Discovered (pastebin.com)
145 points by ilija139 1565 days ago | hide | past | web | 173 comments | favorite

I'm of the opinion that the value of Coursera's courses comes from the learning opportunity, not the certification. I think they should simply allow cheating and not issue certificates. Alternatively, allow cheating and continue to issue certificates while letting employers decide the true value of the certificates.

The point of Coursera (to me) isn't to pad my resume, it's to learn from courses not always offered at my university.

Just wondering - would you put a certificate from Coursera on your resume? I raised this question a while ago in here : http://workplace.stackexchange.com/questions/2074/showing-co...

Also - cases will be handled on an individual basis - I guess it's not a standard sized class. There is a few hundred people signed up at least. Putting up a free course in functional programming seems like a lot of work. On top of that, trying to find people who are cheating and handling them more or less individually is a bit of a time waste in my opinion.

I would not list it under "Education" alongside a formal degree. However, I might mention it in a cover letter to demonstrate passion and internal motivation for a given subject.

While I'm quick to condemn certification, I can see the other side of this argument as well. To a lot of people, Coursera represents the opportunity to overhaul a broken education system. In order for true change, Coursera must not only demonstrate that it can educate people, but that it can do so credibly and consistently.

As an employer, I take continuing education of any sort as a positive sign when looking at resumes. Software development is a Red Queen field; one has to keep up.

However, I do take most certifications as mild negative signs. E.g., SCJP, CSM, PMP. A lot of for-profit certifications are worthless. A notable exception are some of the Cisco certs, which really put people through their paces. Which makes sense, as Cisco benefits more from having expensive Cisco products work well than from certification revenue.

It'll be interesting to see what bucket Coursera certs fall into. They need to jump on the cheating thing right quick, though.

Considering that the Coursera certificates require you to take a class (usually taught by experts in the respective field) as opposed to cramming for a certification exam, I'd say it's a good bit more valuable.

I took the first AI class last Fall, and if you've never been exposed to the material, it was a very good survey of Artificial Intelligence.

I agree, just as long as the certificate actually means you've taken the course and done the work. If one can cheat one's way through the homework and then just cram for the final, the Coursera certs would end up being of low value. I hope not, though. I'd love to have a good way to tell the continuous learners from the people who get stuck.

> Which makes sense, as Cisco benefits more from having expensive Cisco products work well than from certification revenue.

I'm not sure about the actual comparative amounts, but Cisco makes a lot of money off of certifications. Of course, in the long run making them actually represent something is best for both sides of the business.

> I'm not sure about the actual comparative amounts, but Cisco makes a lot of money off of certifications.

80% of Cisco's revenue is hardware. And even the service side is something close to $2 billion. I suspect the amount of money they make off of certifications is a tiny slice of that. Even if there are 10k CCIEs each paying $1500 for a yearly test, that's only $15 million, which is nothing to Cisco.

> Of course, in the long run making them actually represent something is best for both sides of the business.

That's not true for many certifiers. Take a look at the CSM certificate. It is meaningless, but popular and therefore profitable.

I completely agree, which is why I find the cheating so interesting. I strongly doubt that any employers are going to lend much value to the certification so early in Coursera's lifespan, but I don't doubt that cheating is going to continue even though the only thing you 'truly' gain from a Coursera course is knowledge.

I agree with you, but that is mostly because I already have a 4 year degree in Engineering and I'm assuming you do too. There is a problem in the fact that many people cannot afford that degree because their parents can't afford it (or the loans that they'd need).

Cheating degrades the quality of education at any level. Cheaters are trying to get accreditation when they shouldn't. While Cheating is all over in education (we had a couple of cases at my school), it is obviously going to be more prominent in a place like Coursera, where cheating is easier and looking for cheaters is harder.

One thing they could do is create an algorithm that checks answers much like what they do for journals, but again that's an extra load they "shouldn't" have on their employees.

> Cheating degrades the quality of education at any level.

Not in the least! You can argue that it degrades the prestige or something like that, but the education remains the same.

I would argue it hurts after the cheating, though possibly not precisely when it occurs. Later courses, things that build on what was cheated, that kind of thing. Time (and money, and happiness) must be spent to deal with people who aren't prepared, degrading the quality of what the legitimate ones receive, and the educator's time.

There is a big crediblity difference between taking random classes and completing a program in a university.

The university has the onus to hire credible teachers, and to maintain a high reputation. You're paying for the standards they apply. Some universities aren't worth their weight and some are. The information that they have is out there. This has not changed. Textbooks have been arround for a while. Additionally professional teachers have the ability to communicate the material affectively.

Online classes can't guarantee a level of understanding of the material. Additionally online classes will never be able to guarantee that the person who signed up for the class is the actual one that gets the credit.

The algorithm for checking answers in journals is to send it to a panel of other people in the field, ask them if it checks out (obvious errors, overlooked things, etc.), and publish if it does. This model has already broken down when people outright fabricate results, it has missed blatant plagarism, and overall is largely dependent on all the parties being honest.

It wouldn't work at Coursera's scale and for a price point they can afford.

Coursera has a huge amount of data and could create their own algorithms that check for similar code in the database. It wouldn't be perfect but it could do simple string comparison against other work.

People shouldn't let cheating degrade the quality of education. You either possess the skills or you don't, and if you don't you shouldn't act like you do. It'll probably be obvious. Here's the scenario in my mind...

A: "Oh hey I know how to program Scala"

B: "Ok program Scala..."

A: "Well I only got the cert, I don't actually know."

B: "Sorry I guess you're not qualified then. Why don't you learn?"

"Ok program scala"

Yeah that sounds like a great interview. How long do you let them go, half an hour, a day? Do you think you can adequately judge someones abilities like this?

I think it was more of a broad sketch of a series of interactions, not a formula for an interview. Someone represents themselves as having some skills because they are certified as having those skills; they are asked to apply those skills; etc...

Who said interview? You did.

Your format implies more formality than a normal conversation - I assumed you meant it in terms of an interview too, and if not that, I'm not sure what you were aiming for. I don't see conversations like that outside technical interviews.

From a practical standpoint, while it's disappointing, I don't understand why they are so surprised that solutions were posted online.

I mean, if there are 5000 students in the course, for even odds of it happening, 0.5 = (1 - n) ^ 5000 -> n = 0.0139% chance per student, which seems like an awfully saintly ratio to assume.

Won't they be making the problem worse by drawing borderline cheaters' attention to it (http://en.wikipedia.org/wiki/Streisand_effect)?

Some would argue that the point of Coursera is to offer education to those who cannot afford it or access it through traditional means. If I come from a poor community anywhere in the world, but have internet access, this certificate means quite a bit to me in terms of employment and opportunities (not just as a resume pad). I think for this reason alone your second alternative is more fair. Obviously, Coursera also helps to augment someone's existing knowledge, or as an educational source for a hobbyist.

Present market value of learning materials - ~$0. (Wikipedia/library/sneak into university/independently tinker/etc)

Present market value of a common certification - ~$100k.

Which aspect would you attempt to build a business around?

What employer takes Coursera classes seriously?

At this moment: very few but I imagine this will change in the near future and that Coursera is betting on this. That, off course, requires strict enforcement of the rules.

Well, things change. Some years ago, nobody took MMORPG experience seriously (even thought it to be a bad thing), but these days, people get management positions because of it.

For many of us, the value is in the learning opportunity. Some people, I imagine, are out of work and need a way to pick up skills and job credentials cheaply. For them I think huge value could be found in a certification. Having a certificate on your resume can start an interesting conversation in an interview, show personal initiative, and so forth.

>I think they should simply allow cheating and not issue certificates.

This kind of thinking really bothers me. They've gone to some pains to ensure their certification has some level of meaning, and now they want to chuck it all out the window based on the actions of a tiny minority.

Collective punishment is usually the product of lazy thinking.

Fair enough. Perhaps, the second option I proposed might work. The value of a Coursera certificate will not be reduced if it continues to be only a tiny minority who cheats.

I suppose I've always been of the opinion that they should offer the courses in a fashion similar to that of Khan Academy. I don't expect a certificate when I complete a section there as I'm there for the purpose of educating myself, not for accrediting myself. I think it's hard for Coursera to fulfill accreditation, but wish them the best if it's what they want to try for.

I think that's how I instantly analyzed the title: "how can someone cheat at coursera??". I get it that some people put the certifications on their resumes, but there are also a subset of people who take the courses just to learn, and therefore may not be able to spend the time doing the work.

While its true that the value is in learning and not the certification, it is also true that assignments have a specific role to serve.

If learning is truly your motive and you are unable to do the assignments, well just don't do them. Why even go as far as cheating.

Indeed, the possibility to learn quickly, without wasting time on filtering and validating publicly available information (mostly long, self-praising blog posts by narcissists) is such a rare opportunity.

Certification is second after ability, as it is in most arts and activities, except scams, such as SAP, Oracle, Cisco or other pay-walled artificial hierarchies.

To put it differently - certification is for those, who are unable to prove/show his abilities second time.)

Universities put a lot of time and effort into managing cheating, and we surely only scratch the surface. This is soul-crushing, no-fun, give-up-and-work-at-Google kind of work for professors. Everyone hates it.

The decision we have to make is the level of resources to put in. We've tried emphasizing the honor code and putting resources into teaching quality. This leads to endemic cheating. We've tried cracking down very hard on detection, and this leads to massive work for the instructors, lots of busted students and a general "meh" from the administration. Finding the right balance is really tough.

I don't get it - it never occurred to me to cheat as an undergrad. But then I had UK-style end of year finals instead of homework-heavy classes and constant grading, and I was never optimizing GPA from class to class. There are problems with mega-finals for some students, but they sure make cheating hard.

The online services can't possibly defeat cheating. The main defence they can have is proctored exams at physical locations, which kills some of the online advantage, and even then they have the ID problem. The Open University has worked out how to deal with this pretty well but it's not cheap. The new online services can and should be different to this, and focus on the massive ultra-low-cost learning opportunities. It's going to be interesting to see if they come up with something really new, and not just distance-ed 3.0.

I don't really understand the cheating itself either. But I do think the cheating and never being caught as an ignoramus reveals the larger problem (with all education, in fact more offline.)

I think the bottom line is that a year after you "ace" a <3 month course you can't be caught because you can't be expected to remember all that much. You may be more suspect; but there are also plenty of innocent suspects.

A hierarchy of classes that truly builds works, but they are rare. Really, we need spaced repetition for as long as necessary to master the material, not a virtual version of a broken semester design. Then there is no point in cheating.

Actually, this is valuable data.

As a potential employer, I care more about the candidate's ethics (or lack thereof) than their ability. I could always teach them, but I could never trust them.

Coursera should just publicly identify cheaters so I can cross check against resumes or certifications. Problem solved.

>Coursera should just publicly identify cheaters so I can cross check against resumes or certifications. Problem solved.

This introduces a lot of problems, all of which are difficult to solve and not directly related to the fundamental vision of Coursera. If I cheat under the full name of my sworn enemy, I can have them publicly blacklisted from any employer who uses this list. Identification seems like the logical next step, but it's no easy task especially when your students come from hundreds of different countries with varying forms of ID.

If you're serious in your suggestion, you're going to have to explain how these kinds of problems can be solved. You're then going to have the same problem Google+ had with online identities. Why should one be forced to give their real identity if they're simply trying to learn, not to be recognized for it?

Only require ID for the recognition. If you detect cheating, don't do anything about it until they confirm their ID to get their certification.

You also need to manage false positives almost perfectly, as you're going to try to ruin someone's professional credibility.

require ID for free online classes? Facebook, email, everything else doesn't require this. Good luck!

You could make it required for a certificate but not for taking the classed.

Continue to award the certificate even to cheaters but then allow employers who are presented that certificate to verify whether the person has been cheating. :)

It's possible students (ignorantly) made their work public because they were proud of their accomplishments. I've done that once or twice under the assumption the course would change for other classes, if only slightly.

That being said, the onus is on the student to make sure they aren't submitting someone's work as their own. I'm not really sure if they understood what they were doing was serious (as in if Coursera was just a bunch of robot drones and they didn't give it much credibility). I know this incident legitimizes Coursera (and it's certificates of completion) in my eyes.

Really I believe all they need to say is, "Look, we really put a lot of work into this to make a good experience for people. We'd appreciate it if you took your answers offline and help make Coursera a respectable name in learning by submitting original work". The whole "We'll start expelling!" doesn't really strike a chord with me. I've been expelled before [not from coursera] for really dumb reasons.

# ALSO, they should take their Honor code out of the ToS. Put it somewhere that people READ!

They definitely showed the honor code the first time I went into this class as well as a different class I took on modeling.

I think the expelling is totally fine. Martin and his team put a lot of time into this, developing the course and the tools to automate grading and if someone is going to put this up publicly and not take it down they should just boot them from the course.

I don't understand why anyone would actually turn in the same work, though. It's not like a completion certificate from this class will get you closer to a degree or anything. I'm sure there must be some reason and I hope it's more than just "I wanted a 10/10 for me to see!". I suppose that an employer might tell someone "learn Scala and get that certificate and get a 10/10 on every assignment" but I somehow doubt it.

Quick follow up... They might have changed the system since I took a class last, I don't know. So I decided to sign up for a class and BAM!

There it is, really obvious too.


I remember being presented with the Honor Code directly when I started the course. I don't remember if it was a popup or during the introduction video, but it was definitely highlighted.

Oh okay, I took a course and have no memory of being presented with the Honor Code. The one they linked to is in their ToS, it still deserves it's own page.

You have the sign the honor code again when you submit the homework. At least for the course I'm taking.

I second this. Should make most people uncomfortable with cheating. Those who go through are ones who don't give a shit.

Now that I have some spare time I'll take another course and pay better attention :)

You have to re-agree to the honer code every time you submit an exercise for grading, too, and they are very clear with the no cheating policy.

If the cheating detection algorithm has any false positives, this is a terrible idea.

Lol, thats harsh. Everyone makes mistakes, everyone slips. Making mistakes is an integral part of iterating towards the better.

"Cheating" is not "making a mistake".

It's "cheating" though in the sense that it's against a TOS on a website, but tons of things are against a TOS and almost no one reads them. They're pretending to be one, but Coursera is not a college, is not accredited and does not hand out degrees. This is a free online self-study course being taken by hundreds of thousands of people with varying degrees of seriousness. Some people may treat it like a college course and want the certificate (for what I am not sure), but I bet most people just want the knowledge. I signed up for a similar course once and never logged in because my schedule changed, should I get an F and have that publicized?

I have also worked through some iOS courses from Standford on iTunes U and I would not think twice about helping someone with one of the problems. Is that cheating?

If people sign up for a course like this and then turn in work they copied from the Internet, I definitely don't want to hire them. Even if they weren't after the certificate. That's like cheating at solitaire. It's just sad.

Also, do you have any evidence that the no-cheating, no-publishing-homework policy is buried in a TOS? If Coursera hasn't made it obvious enough, then sure, people could have made a mistake. But Odersky's a smart guy so his reaction makes me imagine he made the requirement obvious.

Much like I wouldn't hire a Stanford CS grad based on her certificate, I would recommend not hiring a Coursera "grad" based on a certificate either.

Nobody smart hires purely based on the certificate, but the question is what value one assigns to it. Anybody with a degree from a strong CS program is much more likely to get an interview from me. Ditto for anybody with a good online portfolio. I'd like to assign some value to Coursera courses, but we'll see.

As someone taking the course - yes, it was pretty obvious. And even if he had said nothing, it's common sense that uploading other's solutions as your own is frowned upon.

Right know there are actual students at EPFL who are taking the Functional Programming Principles in Scala course, using the same web site that random joes like me are using at the same time. So for me it's not an actual college, but it is for those students at EPFL. They have no choice but to enforce academic honestly rules, given that real students at a real institution are involved.

It makes sense for EPFL to use the course lectures and quizzes to help the students, but it makes absolutely no sense to use it for the grading part. It is trivially easy to make a second account, take a quiz, and just answer randomly to be able to see all the correct answers. It's absolutely absurd to not have a totally independent grading system.

The quiz questions in the course videos do not contribute to the grade for this course. Only the programming assignments count.

"in the sense that it's against a TOS on a website"

A website that is providing you with completely free content from some of the top universities. I think it's fair for them to dictate the terms.

I disagree with your assertion. Cheating is not necessarily an act of malice. As an example, a friend of mine (who is from India) helped another student (also Indian) with a programming project in an intro to CS class at my alma mater. My friend was trying to help a friend out, not intentionally trying to break the rules. This took place during the first few weeks of school, mind you, and neither student had any significant experience with the ethical standards of American institutions. Both students readily admitted to what had happened- neither was trying to hide anything. Nonetheless, the professor gave my friend a two letter grade demotion and the person whom he helped an F. Arguments about the fairness of their punishments aside, I don't think it's fair to assert that either had a lapse in ethical judgement more than a cultural misunderstanding, but nonetheless both students did cheat.

There's a difference between cheating and helping. If the professor believed that there were cheating, that meant that the work didn't appear to be original. Helping someone else means that you're helping them with the concepts related to the problem. If you want to be hands on with helping them through the problem you create a similar problem [that doesn't have the same requirements and help get them over what got them stuck]

I am taking this course - it's impossible to not notice these rules, there are annoying confirmations at every single submission or multiple choice test that you are submitting your own individual work only. I.e., submitting a program copied off web is 100% intentional fraud.

To me it is unclear whether it is allowed to talk about solution after the hard dead line. Is that ok? Not publicizing them just talking about them in a closed study group.

Forget the certificate. If you enroll in a coursera course to learn, and you need some help getting started on the code or checking your work, why not take a look at the code? Not submitting it as your own, of course, but taking ownership of your education, which is all that matters.

Sure, I think that's perfectly fine. Coursera needs to provide some ability (if they don't already) to allow a student to say "not taking this for credit or certificate".

But I don't think that should allow you to go and post code / answers in a public forum of sorts.

Making categorical declarations about what is in actuality an extraordinarily large range of grey areas is not useful to discussion.

I beg to differ. Simply based on the number of students and therefore the degree of diversity seen in a Coursera class, if nothing else.

That's just crazy. Whether or not cheaters should be exposed, I hope that mistakes bit is not your general policy for anything.

Well, it sort of becomes your policy when you stay out of the comfort zone long enough.

I wonder how many potential employees should consider working for potential employers like edw519 who make such short-sighted decisions. What they care for maybe relevant, but how they care is questionable.

Problem solved only if ALL of cousera's students need to be employed by you.

Or by any employer who checks this "black list"

Cheating without consequences hurts everyone taking the class. I'm disappointed to see so many comments implying it's fine to just let that go.

My thought on this comes from a good chunk of direct experience: I've taught a number of courses to undergrads at NYU, as well as having about 5 summers of teaching experience in programming and cryptography at summer camps including CTY.

Imagine all students are given a button that says "give me an A," and they can press it if they choose, or do all the course work and possibly get a worse grade. Even if you chose to do the work because you were self-motived, you'd still be tempted to press the A button to guarantee a good grade.

That's an exaggeration, but the point is the same. The easier it is to get _any_ kind of validation without real work, the harder it is to learn.

It is harder to stay motivated, and the feedback received becomes less meaningful. It is even disappointing to simply know many of your fellow students probably cheated without consequences.

I do believe in seeing answers after doing the work, but it is just common sense to avoid posting them before things are due, and to support clear communications between the instructors and students about the details of posting answers.

I cannot believe that this opinion is so prevalent.

First of all, cheating is really easy on Coursera without having to appeal to public solutions posted by somebody else. You can get private help without anybody knowing anything about it and you can do so in a really efficient way, since there's absolutely nobody watching you.

Coursera courses are for people willing to learn something, providing certificates was stupid in the first place, poisoning the well for everybody that's there for the right reasons. The topics are not exactly PhD-level, you can probably find 80% of all the answers you need by doing stupid Google searches and even if we were talking about PhD dissertations, cheating is still possible, the only difference being the difficulty threshold.

That cheating is so easy on Coursera, "give me an A" is precisely what's going on for people that are there, not for the learning experience, but for an A.

Which is why the value in these courses is only for personal growth and personal gratification. I would never look at such certificates on a resume, because such certificates are even less valuable (from a market perspective) than a piece of toilet paper, because at least a piece of toilet paper is useful for something while at work. And no, interest in subjects such as "Scala" is not enough, because such proxies for performance can be easily discovered and hence gamed.

Also, the gratification comes from knowing that you worked and that you passed the tests. The certificate only holds personal value if this condition is met.

And in the context of Coursera, that certificate does not make sense anyway. If you follow the forums, you'll get a lot of people asking if they can still join the course with late submissions, providing reasons for why they are late in the hope that staff will make exceptions (they've taken long trips, the dog ate their homework, etc...) - which is just a mindbogglingly dumb thing to do.

> That cheating is so easy on Coursera, "give me an A" is precisely what's going on for people that are there, not for the learning experience, but for an A.

Maybe the 'A' or nice cert is there for some people, but no one that I know personally cheats for the grades on coursera. OTOH, all 7 of them are currently well employed software engineers, so maybe the incentive to cheat just isn't there for them in particular. Until the signal gets gamed, I think it will be useful for hiring. Further, it's pretty verifiable if the interviewer has also taken the course. What did you think about the programming assignment about X for course Y, how did you do Z? Throw in fake X for real Y if you are particularly suspicious. If you've cheated through it, it's gonna be obvious.

I have to wonder if those posting solutions on github are actually doing it in an effort to cheat. I made a similar mistake recently with a project I completed in my computer architecture course. When the professor contacted me about it, it seemed obvious. But at the time, all I was thinking about was "yay, public code!" Obviously, I took it down right away. I wonder how many people are doing the same thing. Cheating a Coursera course just doesn't make much sense.

i imagine they weren't. the people submitting copies, however...

If it's your work, you own the copyright, and it's totally within your rights to make it publicly available.

Sure, but if it's against school policy, the school has the right to expel you. Coursera is not taking the public code down, the owner is, at the coercion of the school. The student is making a value decision: continue the course or take my code down. If you can't play by the rules, you can't be in the game.

I think there's a unique opportunity for GitHub here. They could give an educational license to verified students in college/high-school/on-line schools. For the duration of their class, they can have as many private repos as they like. When the semester ends, you've got a week to grab your code before it goes public, like a free account. First, it would get students used to GitHub and they would clammer for it in the workplace because they love it so much; Second, it would position GH as a great supporter of education.

BitBucket offers free private repos.


Edit- Apparently BitBucket launched a new version of their site only moments after sharing this link. Looks great!

Thats what I have been using for this course. Bit bucket lets me have unlimited private repos. ( woot bitbucket )

Hoorah for Git on BB. I hadn't visited their website in a while, now I'm motivated to try again :)

Github already offers free micro plan (5 private repos) for verified students. Unlimited private repos is a rather big hammer and might attract abuse.

edit for link: https://github.com/edu

Thanks a lot for that! This has come really useful. I just finished up this summer, but my .edu address still works! This is awesome! :)

If you're on Coursera there's a good chance you don't have a .edu address.

Maybe Coursera should host private repos?

When the semester ends, you've got a week to grab your code before it goes public, like a free account.

I suspect this would catch on better if the repos were destroyed or stayed private. Professors reuse assignments year after year and wouldn't be too happy about public solutions to all their past assignments.

At least in my university solutions to all past problems are posted anyway, we even have our own wiki for it. I imagine it's similar in other universities.

(fwiw, I use Github exactly in this way, only with public repos)

What does the copyright of the code and legality have to do with the issue being discussed?

That's true, but doing so is a breach of the code of conduct you agreed to when signing up for the course.

So, whilst you cannot be prevented from posting it somewhere public, you can (theoretically) be thrown off the course for doing so.

And it's within their rights to expel you from the course.

What a stupid, overly defensive sentiment.

That's like using free speech as a motivation to tell your boss to "Go fuck himself"

Not that this is very relevant to begin with or anyhing. But as a side note, in this course the solutions tend to be mostly code written by Coursera course people, with some small parts written by the students.

It would be cool if we could upload our private Git repo on Github once the course is finished. But I guess they might want to re-use the assignments next year...

I (unknowingly) posted my code for the class on Github. As you point out, I did it with the "yay public code" mindset, not thinking about cheating at all. I'm taking it down right now and apologizing to the Coursera staff.

If it's this easy to "cheat" on these assignments, then maybe the professors should sit down and think about how to properly craft assignments. It's clear to me that traditional assignment grading will not work in an online/anonymous environment - appealing to a code of honor will not help if they want the certificate of completion to actually hold meaning.

I don't have any actual suggestions other then when I was in school the assignments were worth about 10-15% of our final grade because of this very reason (shared solutions). Actual knowledge was tested in other ways: presentations, quizzes, exams, etc.

Revoking the completion certificate for everyone else is NOT a way to build trust with the community at large - use those large academic brains and come up with a better solution.

actually, when I took the first "not-quite-coursera" classes (ML and DB) they did quizzes in a smarter way[0], using a larger set of questions per quiz than the stuff you'd get in a single attempt.

So each attempt, even from the same student, would get a slightly different set of questions, and the dumbest attempts at cheating were discouraged[1].

I don't see why this couldn't be done for the programming assingments.

For example, the first assignment in this functional programming was "functional sets": empty set, singleton, contains, union, intersect, filter. It would have been trivial to add a few more (unionAll, containsAll, difference etc) and select a subset for each student, or something like that.

[0] alas, they don't seem to do this anymore.

[1] also, a "random answer + replay with proper solution" approach wouldn't work.

Another solution would be to employ an alogrithm that checks your solution against past solutions. It would work much like what professors employ when they submit Reports to an online repository.

If someone it stupid enough not to even change variable names then they'd be caught easily. While with Millions of solutions it would be easy to get some replication, most of the time there wouldn't be any and this is when manual intervention by a person could be triggered.

This in conjuntion with your solution would work pretty well especially if someone submitted a wrong answer for another question that they haven't seen.

Here's another possible solution.

Use an algorithm to cross-check homework submissions, checking for structural copying. If a high correlation is found, as with human intervention, you suspect cheating but cannot prove it.

So, only for the potential cheating students, issue an extra quiz at some scheduled time, and discard the homework score. These quizzes should be all issued in parallel batches and last an hour or so, so solutions can't possibly be copied among cheaters. Make sure the quiz is actually harder than the homework, conceptually.

In other words, rather than trying to punish potential cheaters, just keep testing them until you're sure they're not cheating. This is better IMO than producing a 10x size problem set and selecting random subsets, because the number of suspected cheaters will probably be a small-ish percentage. Therefore, rather than having to write a ton of etra test material for everyone, you only have to write a few extra quizzes for a subset of the class.

So far, majority of the functions in the Scala course homework have been one-liners. Mostly without any new variables that one could name. This kind of problems, a lot of people write the exactly same answer, down to every single character.

I know there is one class on Coursera doing exactly that. The reason was to allow students multiple attempts at quizzes - have a bank for 20 questions where only 10 get asked.

The certificates, IMHO, are meaningless in the context of these online courses. Considering this, I find the measure exaggerated.

I use github as a central place to store almost everything I write outside work, so it comes pretty natural for me to version code for problems I've been working on there.

Disclaimer: I'm not involved in the Scala course, so I don't know how the actual assigments were structured.

The certificates will have value as long as they remain evidence of honest completion of the course. To say they are worthless is kind of short-sighted. Considering the number of tech resumes in the typical hiring manager's inbox that contain a laundry-list of programming languages in the skills section and not even a single project or course to prove the knowledge of the candidate, I'd say there is a fairly large domain for these certificates.

Given two resumes, one with a big bullet list of unverified skills, and one with a bullet list of some completed coursera courses, which would you choose?

Obviously coursera will not be replacing real college any time soon, but it can definitely serve a role in verifying at least cursory knowledge of basic skills.

> Given two resumes, one with a big bullet list of unverified skills, and one with a bullet list of some completed coursera courses, which would you choose?

I would accept neither as evidence of anything other than the skills a candidate advertises.

IOW, I trust "I know Scala" on a resume exactly as much as "I know Scala and completed a Coursera course on it".

Well if nothing else it gives a portable measure of ability. Like instead of having to saying I'm an expert in Scala and the meaning of that being largely arbitrary; you've got a syllabus of stuff they claim to know (which you still need to verify it it matters).

>Given two resumes, one with a big bullet list of unverified skills, and one with a bullet list of some completed coursera courses, which would you choose?

The big problem with your logic is assuming that one of these two options must be meaningful. Those two resumes are either both good enough to bring in for an interview, or both not good enough to bring in for an interview. "I have a worthless piece of paper" changes nothing.

It does to me. It shows that someone at least took the time to work through a course. It also shows they are cool enough to know what coursera is and open minded enough to use it.

Ok, but you asked "which would you choose?". That is not the same as saying "I would choose X". You are assuming your opinion on the matter is common, I am suggesting it is not as common as you believe.

Certificates and other records from this and Robert Sedgewick's algorithms course (maybe others) can be shared with employers through Coursera's placement service. Not entirely meaningless.

Coursera will ultimately try and leverage their courses as a hiring mechanism. I'm participating in the course, and have taken a prior course as well. After sigining up you will receive an email from coursera asking your permission to share course results with employers.

If they can't use the course certificate as a signal mechanism then there will be no incentive for employers to partner with them

I'm taking a different Coursera course right now. I completed the first homework assignment on my own, but I would have loved to see how other people solved the problem. I definitely felt like I had some ugly hacks in my solution. Posting solutions online would be a great way for me to learn.

I'd recommend that they get rid of the certificate. There is no way to prove that 1) the person who took the course is who they say they are, and 2) they didn't cheat. Copying and pasting from a solution online is only one way to cheat. You could also have a friend finish the assignment. Maybe some day we can get past the point where education is simply a list of achievements, and more about who you have become as a person.

"I am not able rightly to apprehend the kind of confusion of ideas that could provoke" people to enroll in a free online course that (presumably) nobody forced them to take and then submit homework done by someone else.

Rather than trying to fight cheating (which is impossible), Coursera should emphasize the point that these courses are not resume busters but for learning.

Well, it seems that Coursera business model is either issuing meaningful certificates, or offering other companies potential hires (the latter being what I've understood of Udacity business model). In both cases, the certificate is supposed to mean something.

I've taken several Coursera classes, but I don't mention them in my resume and I only care about the certificates as an incentive to complete the course, but from the very nature on how these classes are graded, it would be very difficult to prevent cheating (or sharing), barring having the exams taken in real-life locations (something that Udacity optionaly provides for some of its courses if I recall correctly).

The point is that Coursera eventually does want their classes to be resume busters

You have to expect that they kinds of programmers this course would attract will want stick the code they've put hours outside of work into in some kind of source repository.

With the ubiquity of free (public only) github accounts, I'm not entirely sure what else they expected might happen.

Free private repositories at bitbucket? Or assembla, or projectlocker, or ...

The most recent assignment was only like 10 lines of code to write. Although fairly challenging, it wasn't something worth putting on github.

I think that something a lot of people who read this are forgetting (and please correct me if I'm wrong) is that most of us have 4 year degrees and/or jobs in Software Engineering (or at least Engineering).

These courses are meant to be a segue into free courses offered online that people can use in lue of a 200k four year degree. While this form of education isn't there yet, it's use builds the reputation of these online courses.

If cheating runs rampant in the courses (more so than in person classes) it has a chance to negate the reputation of these sites. This could set back "free" education for years.

While I don't think that Cheaters should have an affect on what we can learn and take away from these classes, but it will have an affect on how much employers (like edw519) trust the courses. If they don't trust the online classes, then people who don't have a formal education won't be able to use these freely offered classes to raise their earning power.

It's sad how much a few bad apples can spoil.

One of the hints for assignment 2 is:

"Most of the solutions for this assignment can be written as one-liners. If you have more, you probably need to rethink your solution. In other words, this assignment needs more thinking (whiteboard, pen and paper) than coding ;-)."

Is it not entirely possible that they're getting some false positives?

Very unlikely, similar code? yes, exact duplicate? there are so many ways to solve it, that statistically it's not that likely, and if so, it will be on 1 answer, not all of them.

If you have, for example

    class Rational(x: Int, y: Int) {
      def numer = x
      def denom = Y
and then homework is to implement

    def less(that: Rational) = ???
then you're gonna get 15 000 people answering with

    def less(that: Rational) = numer * that.denom < that.numer * denom
and another 15 000 with

    def less(that: Rational) =
      numer * that.denom < that.numer * denom
and maybe a couple thousand with something like

    def less(that: Rational) = numer*that.denom < that.numer*denom
(This example was taken from Scala course lectures, but some of the homework problems are as short as this.)

yes, but none of them are that trivial... and if they were, then cheating wouldn't make much sense. e.g. the coin change algorithm, I'm sure the distribution of answers was quite unique for anyone who tried solving it alone. same for even simple things like the pascal triangle.

But it's a moot argument as we need to do a real research (or ask coursera / Martin Odersky for the data, which I'm sure HN community will be happy to run some data mining on)

Actually I think some (many?) of the answers to the functional sets homework are that trivial in the sense that they're as short (or shorter) the the examples in the parent post. The only longer function was, I think, the one for which they provided a template implementation. So I think even that one would generate false positives somewhat easily.

The solution for the count change is already in the recommended literature (SICP). And this was mentioned in the forums.

The fact that people publicly posting their work would get expelled disappoints me. During the Machine Learning class on Coursera, I did all of the programming exercises myself. After submitting the assignments and getting 100% scores, I would browse other people's GitHub repositories to see how they completed the assignment, which taught me more about both Octave syntax and machine learning and helped me to vectorize some of the more tricky algorithms (use Octave's native matrix operations rather than slower for loops).

The people who submit exact copies of assignments they find online should absolutely be penalized. To expel those who publish their work seems overly harsh.

" For those students for whom it's been discovered have uploaded similar or duplicate solutions, cases will be handled on an individual basis. Though beware, that cheating in any capacity not be tolerated. "

This seems like pretty clear language. I doubt people who accidently used a public repo will be punished for it.

I was referring to the section that stated, "We have identified several individual students with solutions publicly posted (github included) who will be expelled from the course in the coming days if these solutions remain public." People who use a public repo to share their work will be expelled.

Ditto and 100% agreed!

It's to be expected there will be cheating. Even in normal brick and mortar school s there were always cheaters. Hell, even the tour de france got turned into a dopers ball. So yes, this is a bummer and all the naysayers of these free opensource online classes now just have more ammo. But as someone who's life has not allowed them the path to Stanford/Upenn/University of Toronto, etc, I am putting in the work and bothering to actually learn and extremely grateful for the opportunity. So bummer, sure, but shame on the cheaters.

A lot of comments here are suggesting that the staff should allow the violations of the academic honesty rules and deal with matters by some other means.

It's my understanding that, in this case, this is not possible. There are real students at EPFL who are using the Coursera system to take this very same course for credit. If some random resume-padder creates a public repository on github for doing the homework, then a simple google search by an actual student at EPFL could easily find it.

I don't see how they have any choice but to bring the hammer down.

I personally did not enjoy the threat of expulsion in my inbox this morning. As, like probably many other, but the code up on Github because, well this is just what I do with code.

I've signed up for this class because I was interested in learning something. Cheating would obviously not teach me anything, so why even take the class in the first place?

The Coursera certification currently holds no or little value. Maybe if they gain enough traction, someday, having many coursera certificates could have some value when applying for a job. This is not currently the case. I understand that they want to be in the position at some point in the future and that if they don't enforce these rules now, doing so later will be hard. Nevertheless, threatening to ban users in not a winning move for any startup.

A better solution would be to offer an alternative to Github, maybe even a partnership with Github. If they hosted their own git repository and used that as the submission system, they users could get source control, as well as a simple mean of distributing assignments.

This felt like a poor PR move from coursera.

> I personally did not enjoy the threat of expulsion in my inbox this morning. As, like probably many other, but the code up on Github because, well this is just what I do with code.

Then you're violating the conduct. They ask tons of times to not share your code, including on GH. So you should either use a private GH repo or host it elsewhere, privately.

Don't whine about not liking the "threat of expulsion" when it's perfectly clear that you shouldn't be doing that.

They shouldn't have to offer that, anyone who wants a private repo for free can use bitbucket, for instance.

The issue isn't that the school isn't within their rights to do this. It's that they're putting an unnecessary limitation on good students, forcing them to help fight the cheaters. There's nothing inherently wrong with putting up my answers to homework on GH. The onus should be on students to not cheat; it feels kind of scummy to force students who have no desire to cheat to take down their code in a sad attempt to fight cheaters.

I guess I'm a little bit curious as to why it is so important code like this ends up on your Github account? It is pretty simple, relatively useless outside of the course, and thousands of other people are writing very similar code - I'm not sure I see the value in hosting your solution on github.

Perhaps in a perfect world, you could publicly post all of your homework and whoever is administering the course would be able to detect someone using your code for their homework - that is incredibly difficult in the best of circumstances, and in this case, effectively impossible. Doing something about low-hanging fruit - publicly available answers to the questions - seems like a reasonable mitigation step.

> this is just what I do with code.

Really? That sounds like something I would not expect to get away with in a number of situations. Like, for most of the stuff I've done as a student and as an employee I have considered stuff like that to be totally out of the question.

(And in this case, it doesn't even feel that much like "my" code. It's mostly written by them Coursera course people, with a few blanks filled out by me. I'm not sure how cool I think it is to upload other people's code to publicly available places without checking with them first.)

Did you read the terms of the course? Did you notice that they ask that solutions to assignments not be shared publicly? I think it's an even poorer move to blatantly violate Coursera's terms, and then claim that "that's what you do with code". You should seriously consider taking down your github repository.

I would think it would be better to let the course go on, and mail the certificates and give each one a unique identifier. Then make an annotation at cousera of which students were caught cheating. Then give employers the ability to check if a certificate is from an honest student or one who was caught cheating. Everyone wins.

When discussing online courses, a recurring theme is that of the "value" of online certifications, versus "real life" certifications. By taking action against cheaters, Coursera is trying to preserve the value of their certification. I wonder how it will affect it.

Do people really care about online certifications anyway?

For me, the main advantage of the weekly assignments, is that it stops me from procrastinating, like I might if I were to learn by myself with a book... I don't really care about the certification itself. I guess I can add it to my resume, like the SCJP, but I don't think employers will care much.

I'm entirely self taught at Scala and never did Java, so I'm doing it just to test myself to see how much I missed and how much I understand already. Certification is almost entirely worthless as a CV aid... it gives an indicator that you are willing to put in effort out of hours for self improvement, but it's value vs a well tended github account / a programming test is negligible.

In my eyes, the only benefit of the certificates is that you have something to show for your time and effort; something that proves you're willing to take the time to better yourself. That being said, it's not much.

I see several comments on this submission relate the issue of cheating in a Coursera course to the issue of presenting a false credential to an employer when seeking a job. People seeking jobs as programmers had better be ready to do a programming sample under conditions controlled by the hiring company to prevent cheating. The reason to be ready for that is that work-sample tests are the best validated procedure for hiring workers for jobs in general, and any company that takes a scientific approach to hiring will make work-sample tests a big part of its hiring procedures.

The long story about why companies should use work-sample tests to hire job applicants, including programmers, can be found in the online FAQ I post from time to time here on HN, last posted five days ago.


Of course, because some (many?) people cheat, work-sample tests work best if the companies using them make sure that cheating is not possible during the test. If you want to get a job at a company that doesn't hire cheats or fakers, be ready to show what you know in a work-sample test.

Well, obviously cheating is bad. And obviously breaking an ethics code is bad. I think an issue with what's going on here is that, in this case, there are conflicting natures between education and programming.

To be a good programmer, you need to be efficient. Writing 100% unique code is not efficient. It's not even good. It's bad. Good developers research solutions to solved problems. Good solutions have been used and tested by dozens, if not hundreds, of other developers in just as many different use-cases.

So, as a DEVELOPER, it's GOOD to research and find an existing solution to your problem. It's even good to go on places like Stack Overflow and post your problem and let someone else solve it for you.

But, as a STUDENT, doing these things is BAD. Taking credit for someone else's work isn't good. And letting other people do your work for you is cheating.

So, how do you resolve being a STUDENT DEVELOPER? Do you follow practices that would make you a bad developer? Or do you follow practices that would make you a bad student?

What I see is a complication in proving that the student understands the concepts they need to understand for the course. If you just go out and copy other people's code, but never take the time to understand it, then the course is worthless. Remember that the knowledge and understanding gained is the purpose of the course. Assignments, quizzes, whatever - these are just measurement tools, they are not the purpose behind the course.

I feel that we probably just need a different way to determine whether or not a student understands the concepts of the course. Is there a way to determine a student's understanding or comprehension outside of assignments, tests, and quizzes? Something that isn't replicable student to student?

I'm taking this course, and have no idea what the motivation for the cheaters was. But, it would be nice to have some sort of forum where you could discuss your answers after you had successfully completed the homework. I know my code is correct, but I think I would learn even more by seeing other people's solutions. Something like the forums on the Project Euler site would be fantastic.

Well, this seems like one of those social problems where a technical solution might be available.

1) Figure out the number of students taking course n.

2) For the first assignment, figure out the number of questions m you want.

3) Make a question bank of size M.

4) Satisfy the constraint n < (M-m)!

5) You now can uniquely identify uploaders via the set of answers they upload.

If you're willing to kick people out of the class and mark them as cheaters, you can now do so without worrying they're trying to frame someone else.

This can be refined--maybe make it so that the question bank is large enough that several people conspiring will be unable to randomly generate a sequence of questions that's been given to a real person, so they can't randomly screw people for shits and giggles. You could also make the questions differently phrased, making it harder to Google them. Depending on how many cheaters there are, you can also just make a question bank that's large enough that any given question is unlikely to have been uploaded by a cheater, though that rapidly blows up the size of the necessary question pool if you do have a significant proportion of cheaters.

The problem with question banks, at least in normal academia, is making sure everyone gets a question set of equal difficulty. If one person gets asked for an algorithm to find the length of a linked list and another gets asked for an algorithm to remove a node from an AVL tree, that's not fair on the second person.

You could experimentally calibrate the question bank, seeing which questions trip students up the most, but that requires asking the same questions a bunch of times to different students, which is exactly what using the question bank was supposed to avoid! And if you want to reuse the calibrated data every year, you'll have to ask the same questions every year, which we prefer to avoid. I suppose with a sufficiently large student population an effective calibration might be possible - maybe Coursera will be the ones to do it!

One thing I remember my tutors saying time and again, "It's really hard to think up good questions and assignments.".

Shame on the cheaters, but I don't see how they're hurting anyone but themselves.

In the spirit of the Platonic ideal of the Academy it seems beneficial to freely share and exchange ideas.

I'm not sure I agree 100% with your police work there.

I am enrolled in the class, and when I got the e-mail, my first thought was "Great. Now I have to worry about whether or not my work will look too similar to someone else's, or to the solutions that have been posted."

Granted, my first submission for assignment #2 was a third of a point short of 10/10, so maybe I don't have anything to worry about.

Searching Github for assignments is pretty easy, but I wonder how they'd be able to detect duplicates other then when every source is 100% equal to another student's.

The most frightening thing about this is the number of people that want a black list of names. what's the next step? stoning them in public, making them wear a special hat?

The job of coursera is to provide access to learning and there it should stop. Coursera should not provide certificate of any kind, most people go there to learn not to become certified on anything, Cheaters will go way if there is no certificate since their purpose is not to learn.

If they're going to issue certificates that people respect, they should do it like EdX is planning: paid formal testing at exam centers.

For connecting top students with recruiters, they're already looking at contributions to forums as well as homework/test scores. It shouldn't be too hard to see who's really engaged with the material.

Getting uptight about people sharing work seems counterproductive and hopeless.

I would have went the other way and forced everyone to develop in public via github (or similar, in fact it wouldn't need to be private if Coursera had access to the git repository). I'd guess it would be more work to try and painstakingly recreate a unique and authentic looking sequence of commits than it would to just do it yourself, probably teach some good habits too.

Are your downvotes coming because of you specifically suggesting github or are they because of the underlying idea? I think the idea's good. I had a group projects in a coding-intensive course (not distance) this summer and one of our members procrastinated endlessly. He kept insisting he'd done work and we hadn't but he was new to version control and didn't realize that you can pull up commit logs. He quit the team when he saw them.

At the least, if someone contributes a ton of code for an assignment in one shot that's identical to somebody else, the professor could compare commit logs there too. Tons of code is out there on the internet and plagiarism is something that'll be tempting on the job under a deadline, too, with potentially more serious legal consequences.

I keep my code private until the class is over, then open-source it. I consider this stuff to be my resume.

I wonder how many exact and similar copies there are. I can certainly imagine some honest overlap in the assignments (I'm taking the course).

I think people who copied are not lying to anyone but themselves, if they can't even modify it a little so it won't be an exact copy, they won't survive as programmers anyway as no one will keep them.

the people who share? I'm sure most of them simply put in as they put any code they do on their GH account. which is by default public.

solution: people should use bitbucket, it has free private repos.

So, what exactly is the point in cheating on these assignments? IIRC there is no academic credit available and all you receive is a non accredited certificate.

Surely the only point in doing the assignments in the first place is to satisfy yourself that you have understood and can apply the material?

Remember that the type of person who chooses to cheat on this type of assignment isn't exactly the sharpest crayon in the box.

I found it annoying when people were submitting answers to Stripe's CTF before the end date - just seemed to cheapen the experience - and would imagine for someone not cheating in the class that they might feel the same way.

(on a side note - did anyone get their CTF tshirt yet?)

I wonder how much work it is to monitor the students, it must be hard to tell if there's cheating, assuming the published solution is well written and tought. If they have to look at past submissions to detect sudden peaks in grades it's got to be a burden.

Coursera could offer an on site test ($) for the employer.

The perspective employee would login and take a test based on the courses that they have completed. The score would then be sent to employee and employeer and ranked along side others who have completed the course.

I do this course to learn, and I enjoy trying to solve things on my own, cheating on this is cheating yourself. If I was in a point I need this to boost my resume, I would ask myself if I'm in the right profession.

I get why they have a problem with this but it seems weird to punish the students for behaving like real world programmers. The entire FOSS movement could be written off as cheating with this mentality.

>If we find that solutions continue to be posted, we will reconsider offering certificates of completi

Wait, so they didn't know this was going to happen?

I've just got this in my email. It really is sad.

How about they expel those who used the solutions as well?

A lot of solutions end up looking similar, as the automated marking system requires certain method names and the questions often have answers that are only a line or two at this early stage of the class.

Early questions are things like: if membership of a set is a function mapping between an integer and a boolean, how would you define the membership of a singleton set? Modulo the spaces and variable names, every student's answer was probably the same!

So detecting who has copied their solution is probably difficult.

My thoughts too. I just don't see how there could be much variation in the first place, especially among more experienced participants who can easily find the most optimal way to write a given function.

so people who have submitted copies will still get certificates?

that's kinda amusing. [edit: thanks for the reply (have an upvote); missed that. that's more reassuring.]

Doesn't seem so:

"For those students for whom it's been discovered have uploaded similar or duplicate solutions, cases will be handled on an individual basis. Though beware, that cheating in any capacity not be tolerated."

Get rid of the stupid "certifications".

Thanks to some cheaters I just discovered Coursera. And you want to punish them now... uhm :)

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact