top | item 10077005

No Cheating Allowed

52 points| belgerath | 10 years ago |engineering.khanacademy.org | reply

48 comments

order
[+] lordsper|10 years ago|reply
Or you don't do 'security' features client-side, and instead only send the hint data in response to the user's request for the hint.

Wouldn't that be the 'right' way of doing this?

[+] Hamcha|10 years ago|reply
Yes, that's the proper way.

It's not even that much of a cheat, really. I'm surprised they decided to make a full blog post on how they fight such a simple trick (incorrectly, even).

It won't work that much anyway, a simple chrome extension that injects code can overturn their whole thing.

How far can they fight cheating anyway? I remember making a javascript snippet in Chrome devtools that would bruteforce all the crypto questions (because they had predictable patterns, like all sentences involved "Anna" or some similar name). That seems way harder to fight.. will it deserve another blog post?

[+] hellofunk|10 years ago|reply
I must admit also, I was reading this and wondering how their fix actually "solved" the problem, and even more confused that they thought it was a novel enough solution to actually blog about it. In reality, this blog post reveals further ignorance of the actual issue.
[+] msravi|10 years ago|reply
I'm guessing the idea is to have the hints available through spotty connections...
[+] jasonkester|10 years ago|reply
Strange to see them trying to fix this with technology at all. Cheating is a social problem.

Universities survive just fine giving out take-home tests and trusting students not to cheat. Honor codes work, even when there is an actual useful reason to cheat.

But on a site like Khan Academy, where the end goal is to learn something useful, all the user is doing is cheating themself out of the thing they signed up to get. Let them go nuts. If they want to go through a course, but go out of their way to avoid actually learning anything, that shouldn't cause the site owner any grief whatsoever.

[+] mafribe|10 years ago|reply

     Honor codes work
As a working university teacher, I have to disagree with this somewhat. Cheating happens of a massive scale, I'd say at least 1/3 of all coursework I have graded involved some degree of cheating, and I've seen cases where clearly everybody in the course had copied from one person (who had an ingenious but false solution). Whenever I discuss this with former students, they think 1/3 is too low. When I give out coursework, it shows on sites like rent-acoder.com. One meets people who make a living out of writing dissertations for rich students.

The universities accept this tacitly for two reasons.

1. They need the income from the students. If they'd fire every student caught cheating, they'd go bankrupt pretty quickly.

2. It's an extreme amount of administrative work for the professors to deal with. In my experience, I need to invest a day's worth of work per cheating student, all things considered. I really have better things to do in life.

To put it pithily: the students pretend not to cheat, and the universities pretend not to notice.

This is nothing new, students have been cheating since time immemorial, the world keeps on spinning ... there are lot's of stories about cheating in what may be the oldest exam system in the world, the Chinese Imperial examination. (As an aside, if you want an alround fascinating story that involves the Imperial examination, check out the history of the "Taiping Rebellion".)

[+] nadams|10 years ago|reply
> Cheating is a social problem.

I want to quote Sir Ken Robinson [1]:

> They have spent ten years at school being told that there is one answer – it’s at the back…and don’t look, and don’t copy, because that’s cheating. I mean, outside schools, that’s called collaboration.

I don't think cheating is the big picture problem. I think it's how we think of are tests. Imagine a test designed in such a way that you couldn't cheat - or even that collaboration was ok - what would it look like? Could it be an open note/open book test?

The way I give tests to my students is open book/open note but not open neighbor. I do this because I'm realistic - memorization is not comprehension and whatever they did memorize will be lost 5 minutes after class ends (they have N other subjects that they need to memorize material for - even though I teach a core class they have much more important things to worry about). My tests are long and short answer but not hard - so if you have been comatose for the lectures you won't do well (I have had people fail my tests...). Some teachers have the one notecard rule and think that they are clever tricking the students to memorize the material - they aren't. You may retain some more information - but it's still the core of the problem memorization != comprehension.

Yes I understand some fields do require memorization - such as history or the medical profession. But people don't need to memorize the bubble sort or the binary search algorithms - it's been done a million times and if anyone ever needed it for their career a quick google search would reveal this site [2]. Yes they need to understand it - but they don't need to memorize it.

[1] http://edtechnow.net/2012/01/20/sir-ken-robinson/

[2] http://rosettacode.org/wiki/Binary_search

[+] S4M|10 years ago|reply
> But on a site like Khan Academy, where the end goal is to learn something useful, all the user is doing is cheating themself out of the thing they signed up to get. Let them go nuts. If they want to go through a course, but go out of their way to avoid actually learning anything, that shouldn't cause the site owner any grief whatsoever.

Yes, especially since Khan Academy can't totally prevent cheating. For example, one can always create two accounts, one that is used as a draft to get hints and the second one that will enter the correct answer after the hints have been showed to the first account.

[+] vdaniuk|10 years ago|reply
Individually, cheating is an user experience and design problem. Did you ever play an engaging, interesting game, used a cheat code for more resources/lives and game instantly stops being interesting even if you don't use cheat codes any more? This happened to me multiple times. Experiences of others is similar.

"go out of their way to avoid actually learning anything, that shouldn't cause the site owner any grief whatsoever."

Obviously, Khan Academy staff has a different take on this problem and that's great. Online education should strive to cater to cheaters, too.

[+] jackweirdy|10 years ago|reply
This solution seems to overlook the fact that once you've served something, you lose control of it. If the hint's been served, there's probably another way to find it - even just watching the bytes come over the wire.

I may be missing the point - but why not serve up the hint on a separate request? That way if you're offline, you don't get the hint, and if you're online, they can log that you requested it on the server side.

[+] moey|10 years ago|reply
I think you ARE missing the point. Watching the bytes come over the wire isn't something that they are trying to protect. Just easy cheating in the classroom. They probably received some complains from teachers.

They wanted to keep it working offline, and hints should still be available for students in areas with spotty internet.

It's not Khan Academy responsibility to ensure students don't cheat after all. I mean for all they know the students could have other browsers/computers open.

[+] hellofunk|10 years ago|reply
Definitely agree, the hints should not get served to the client unless they are requested in the first place. This would obviate much of the "fix" they proposed, and it would seem to me that this would have been the first thought in designing the system anyway.
[+] BlackBerryPi|10 years ago|reply
Probably a dumb question but why not just let people cheat? I'm pretty sure we all heard in grade school that "cheating only harms yourself." Those who actually want to learn the material will stick it out and do the work.
[+] DanBC|10 years ago|reply
KA is used by schools. Some of those schools want to prevent cheating. They'll have honour codes, but they'll also want to use technical means.

KA implementing these technical means makes the product more useful to those schools.

[+] Udo|10 years ago|reply
I agree. Unless Khan Academy has recently started handing out degrees or certificates that people use to get ahead in something (as opposed to just learning stuff), I'm not sure I see the point of this.
[+] kristofferR|10 years ago|reply
It's kinda funny that this blog post, essentially describing how to cheat on Khan Academy, soon is going to be one of the top results on Google when students search for "Khan Academy cheat".
[+] RobinUS2|10 years ago|reply
Wouldn't it be an option to basically chain the "events" in the local storage queue with crytographic hashes (kind a like a block chain). You can then fairly easily verify modifications somewhere in the list of events.

It wouldn't make it entirely impossible, but much more complicated.

[+] cjg|10 years ago|reply
No, because if you have the ability to create the hash on the machine then you have the ability to create a hash for a manipulated version.

The blockchain gets round this with consensus.

[+] zackify|10 years ago|reply
Deleting your localstorage is way too easy to do. I feel like this isn't much of a solution at all
[+] epaga|10 years ago|reply
Especially because it doesn't have to be visually obvious like they suggest. It could be a bookmarklet.
[+] espadrine|10 years ago|reply
Sure, but presumably, if the student does that they learned quite a bit about how browsers work… It may not be related to the course they are taking, but at least, they learned something thanks to Khan Academy, and will prompt them to learn even more.
[+] z3t4|10 years ago|reply
I'm a professional and I search the web, look in books, and ask other people ... I also learn new stuff every day by doing so. It's pretty stupid that it's considering cheating in school.

Do you want schools to turn our kids into encyclopedias!? I think it's more important that we learn them to share, work together, communicate, find information (source criticism), explore and learn new stuff.

[+] Asbostos|10 years ago|reply
The problem they were having wasn't Googling for the answer, it was pressing the "Hint" button right next to the question. That doesn't require any of the skills you mentioned, so it's probably not very helpful for assessment. It may well be helpful to teach the concept though, which is probably why it's there in the first place.
[+] emerongi|10 years ago|reply
The problem is that localStorage never gets cleared on its own. So you could have a situation where a hint persists from the last user using the computer (or last session in general), effectively sabotaging the current user's answer(s). An edge case, but possible. SessionStorage would be more suited here.
[+] jand|10 years ago|reply
To my understanding they do not store the hints. They maintain a request log to enable retransmission of requests made during a offline period.

So the hint-thing should not be a thing. On the other hand: The request log requires a user identification method as part of the requests to avoid crediting a "hint-taken" request to the next user in your scenario.

[+] BasDirks|10 years ago|reply
Perhaps this blog post is a decoy, and they implemented a better prevention mechanism. I don't feel like "giving away" this possibility harms their efforts, as it will only make those intent on cheating more paranoid. >:]
[+] est|10 years ago|reply
Some other online testing websites try detect cheating by using `onblur`. As soon as your browser lose focus, you are considered cheating.

It's quite effective in its regard, unless you search for answer with a phone or something.

[+] vultour|10 years ago|reply
Or you accidentaly hit the Windows button. Or Windows updates pops up. Or any other of the million things like these...
[+] stonewhite|10 years ago|reply
I thought offline data sync was a solved problem even at the levels of PouchDB. I don't see how this post was of any concern.
[+] danielsamuels|10 years ago|reply
What happens if you reconnect and submit the answer before the hint request goes? Seems like a classic race condition.
[+] jlebrech|10 years ago|reply
one could create a bookmarklet that actively deletes the 'hints'