Slashdot Mirror


Why Computer Science Students Cheat

alphadogg writes "Enrollment in undergraduate computer science courses is at an all-time high at colleges nationwide. But this trend that's been hailed by the US tech industry has a dark side: a disproportionate number of students taking these courses are caught cheating. More students are caught cheating in introductory computer science courses than in any other course on campus, thanks to automated tools that professors use to detect unauthorized code reuse, excessive collaboration, and other forbidden ways of completing homework assignments. Computer science professors say their students are not more dishonest than students in other fields; they're just more likely to get caught because software is available to check for plagiarism. 'The truth is that on every campus, a large proportion of the reported cases of academic dishonesty come from introductory computer science courses, and the reason is totally obvious: we use automated tools to detect plagiarism,' explains Professor Ed Lazowska, chair of computer science and engineering at the University of Washington. 'We compare against other student submissions, and we compare against previous student submissions and against code that may be on the Web. These tools flag suspicious cases, which are then manually examined.'"

79 of 694 comments (clear)

  1. How many ways are there to do simple things? by nebaz · · Score: 3, Insightful

    If someone asked me to (in Java say) print the numbers from 1 to 10, I would probably do something like

    for (int i=1;i=10;i++) {
        System.out.println(i);
    }

    So would most other people. Would this flag me as a cheater?

    --
    Rhymes that keep their secrets will unfold behind the clouds.There upon the rainbow is the answer to a neverending story
    1. Re:How many ways are there to do simple things? by Surt · · Score: 2, Insightful

      Typically even an introductory level course is more involved than that, even for the first assignment.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    2. Re:How many ways are there to do simple things? by keithpreston · · Score: 4, Informative

      This would be flagged but wouldn't pass the manual review. As a former Graduate Teaching Assistant, cheaters are easy to spot because they are LAZY! They turn in the exact same files (same comments with same misspellings) with maybe a different name at the top. The only good way to cheat is to make sure every things is perfectly correct and has no identifying characteristics.

    3. Re:How many ways are there to do simple things? by TitusC3v5 · · Score: 4, Insightful

      If the person you copied it from also mistakenly used an assignment operator instead of a conditional, then yes. :)

      --
      And the masses cried out, "09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0!"
    4. Re:How many ways are there to do simple things? by ravenspear · · Score: 2, Interesting

      pretty much.

      I rarely cheated in my CS classes, but on some really hard assignments where I just had to reuse code for some sections to avoid going insane, I just copied some code and then made it look different by changing all names, sometimes rearranging order of things, etc but still having it do the same thing.

    5. Re:How many ways are there to do simple things? by fucket · · Score: 5, Funny

      for (indexnt index=1;index=10;index++) { System.out.prindexntln(index); }

    6. Re:How many ways are there to do simple things? by CorporateSuit · · Score: 4, Insightful

      What are these unneccesssary scribblings you're adding to your code? This is a job for a single line:

      System.out.println("12345678910");

      --
      I am the richest astronaut ever to win the superbowl.
    7. Re:How many ways are there to do simple things? by snowraver1 · · Score: 2, Insightful

      It would still be wrong. The loop condition (i=10) would be FALSE when the loop is initialized. (i=1). The correct form is for(int i=1, i

      http://cprogramminglanguage.net/c-for-loop-statement.aspx

      What site am I on again...

      --
      Copyright 2010. All rights reserved. This comment may not be copied in any way including, but not limited to caching.
    8. Re:How many ways are there to do simple things? by Derekloffin · · Score: 2, Interesting

      While true, the general issue is that there are only so many ways to go about doing X. Further there are only so many of those that are good ways among those, and even fewer still that students are taught about. When you then compare against both the net and all previous solutions, the odds of a match coming up greatly increases. At a certain point, particularly when we're dealing with introductory courses, you have to ask, are these true or false positives. I know at my work, I rarely can tell if it was me or someone else who coded something originally because the code structure is just that tight that you won't see much variation.

    9. Re:How many ways are there to do simple things? by nebaz · · Score: 2

      Good catch. Slashdot pruned my < character though as it was not escaped. I don't think the code that appears would compile. :-)

      --
      Rhymes that keep their secrets will unfold behind the clouds.There upon the rainbow is the answer to a neverending story
    10. Re:How many ways are there to do simple things? by VGPowerlord · · Score: 3, Funny

      System.out.prindexntln

      I laughed when I saw this.

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    11. Re:How many ways are there to do simple things? by adwarf · · Score: 3, Insightful

      Other signs of cheating: When you get a student that does A+ work on programming assignments, but fails the exam (not always the case, but usually). Another sure sign is when they turned in two or three sub par programming assignments and then turn in a beautiful program using concepts that haven't been taught yet. Also once you suspect them it is easy to verify. They can either explain the code or they can't, if they can explain it maybe they cheated, but at least they spent the time to learn what the code does, although I never saw this when I was grading work.

    12. Re:How many ways are there to do simple things? by Normal+Dan · · Score: 4, Funny

      I have a similar question,
      If someone asked me to (in Java say) print the numbers from 1 to 10, I would probably do something like

      for (int i=1;i=10;i++) {
      System.out.println(i);
      }

      So would most other people. Would this flag me as a cheater?

      --
      A unique way to learn a language: http://languageloom.com
    13. Re:How many ways are there to do simple things? by Monkeedude1212 · · Score: 4, Insightful

      Woosh.

      There is no need for an assignment like that to be scalable (as is kind of his point). If they were going for scalability they need to be using more variables, like i=x;i==y, and then setting x and y previously so it actually counts the range dependant on what you pass it. And then take out i++, because you don't know if you'll be iterating by one. Maybe you'll need every second number, or third number.

      The amount of things you can do to make a simple project "Scalable" is very overwhelming. You need to assess at what point does a scalable option becomes pointless.

      And in the case of counting from 1 to 10, he said scalable options ARE pointless already.

    14. Re:How many ways are there to do simple things? by fuzzyfuzzyfungus · · Score: 2, Insightful

      Well, because "cheaters cheat because they are dishonest" is an achingly vacuous near-tautology; and because rates of cheating appear to differ across disciplines, which rather calls out for a more nuanced explanation...

    15. Re:How many ways are there to do simple things? by Mike+Buddha · · Score: 4, Funny

      If someone asked me to (in Java say) print the numbers from 1 to 10, I would probably do something like

      for (int i=1;i=10;i++) {

          System.out.println(i);
      }

      So would most other people. Would this flag me as a cheater?

      No, the system would flag you as being wrong. "i=10" would give an error either in compile time in a strongly typed language, or in runtime in a loosely typed one. FAIL.

      --
      by Mike Buddha -- Someday the mountain might get him, but the law never will.
    16. Re:How many ways are there to do simple things? by natehoy · · Score: 4, Funny

      But we didn't wirk togehter you isnensitive cold!!

      --
      "This post contains words, known to the State of California to cause thought. Wash brain thoroughly after reading."
    17. Re:How many ways are there to do simple things? by Anonymous Coward · · Score: 2, Insightful

      Always good to write code with it's present function and all possible future functions in mind

      No its not, You can't predict all future uses of any given bit of code. Therefore it is not useful to try and design for the unknown. Once your code passes the acceptance tests. stop coding, you're done.

    18. Re:How many ways are there to do simple things? by omglolbah · · Score: 2, Informative

      *snortgiggle*

      I fondly remember one problem we had to solve in college....
      It involved some fairly annoying math and most of the task was understanding 3rd year math in an intro course....
      What ended up happening is me writing a class that everyone else copied and used for the math in their assignment.

      Amusingly the teacher didnt punish anyone for this. He found it incredibly clever to just write the framework and "outsource" the math ;)

      Then again... most of our turn-ins were never looked at. We just needed to turn in an empty folder with our name on it to qualify for the final exam. The teachers never bothered actually looking them over. Too much work.... Asshats :-p

    19. Re:How many ways are there to do simple things? by MartinSchou · · Score: 2, Funny

      Actually, if you are particularly evil, and you happen to know that the person you're cheating off of hasn't used any kind of repository, just introduce some tricky bugs that keep the program from running properly.

      The kind of bugs that you'd fix if you wanted the program to look like your own.

      That way you get your okay grade, and the guy you cheated off of gets booted for cheating off of you. After all - if you are willing to steal their work, why not kill their career as well?

    20. Re:How many ways are there to do simple things? by breinera · · Score: 3, Informative

      As a teacher who used Moss (for a Measure Of Software Similarity), it was dead on. I taught an introductory course for non-CS majors and when MOSS detected something above 90% similarity, it meant cheating was involved. When I questioned the students, they all confessed. I would say about 20% of the class was caught cheating at one point of time or another.

    21. Re:How many ways are there to do simple things? by DrgnDancer · · Score: 3, Interesting

      Let's say a professor gives us both the same very easy assignment. Something that can be done in ten lines or less, and is meant to display how a for-loop works. We're to comment the code and explain what each line does (because it's a classroom assignment, and that's almost always a requirement even for the simplest tasks). Now chances are we'll need at least two or three variables, and just like the comments we'll be expected to use descriptive names; even though the task is mind numbingly simple. You just have to do these thing in classrooms, even when you're only dealing with two variables and "x" and "y" would serve just fine.

      So, what are the chances that we will choose the same variable names, use the same comments, put the same number of spaces and/or tabs in our indents, and insert our white space lines in the same places? Pretty slim most likely. It's more than just "did they use the same basic approach to the problem" or even "did they use the same functions and control structures in the same order?". It's more like "Is this exactly the same program?" or at least "are parts of these two programs completely identical or nearly so?" Of course they also manually chaeck what the automated tools flag. Or at least they should and they claim too.

      --
      I don't need a million points of light, just two points of multi-mode fiber and a 10 Gig-E router.
    22. Re:How many ways are there to do simple things? by Khisanth+Magus · · Score: 4, Funny

      One of the more amusing moments of my time as a Graduate Teaching Assistant was when I caught 3 students working together in a class where no collaboration was allowed. The sad thing is that in this particular class, there was only one correct way of doing the assignments, so anyone who did it correctly could not be caught. These three had such a horribly wrong answer that there was no way that 3 independent people could have gotten that answer.

    23. Re:How many ways are there to do simple things? by acidrainx · · Score: 2, Insightful

      Exactly. Reasons like those explained the GP and the subsequent replies are the reason we end up with bloated code with hundreds or even thousands of unused methods/functions/classes/etc.

      "What is this function used for?"

      "Oh, because I know that the next feature we add here will need this."

      This is not a valid excuse. Anybody who has spent a month working in the industry will know that product managers change their minds on a minute-by-minute basis. Don't waste my time by putting in code that I will end up reading, deciphering, and eventually find is not even used.

    24. Re:How many ways are there to do simple things? by PSandusky · · Score: 2, Insightful

      "Would this flag me as a cheater?"

      Yes, simply because they're using automated software which is 100% incapable of critical thinking like what you just demonstrated.

      And apparently, the professors are just as incapable of those thought processes.

      This is why I left the IT field and went with horticulture - less bullshit from "professionals" with no common sense.

      If they're pegging every single flag, then sure. If they're going back and looking at what the system spits out -- which I imagine they are -- they can tell what is and isn't plagiarized. Really. A report may come back saying that 85% of the text of the code is from a single source, in the order given -- and that's not plagiarism? If I were a TA for that course, I'd be having words with a student -- moreso than I would if someone's report came back saying that 5% came from here, 2% came from there, 15% came from over there...

      Don't knock the professors out of hand. True, there's a yutz in every crowd, but they're often doing the best they can -- especially now that students have become far more militant about demanding the grades they want rather than working for them. Grade inflation isn't a myth, and it's frequently not the faculty's idea. When it comes down to it, though, the administrations involved will tend to lean more strongly toward whatever gets them less noise -- and if that means quieting down students who are complaining about their grades, then so be it. Same goes for students complaining about getting told about academic dishonesty.

      --
      "What's the use in being grown up if you can't be childish sometimes?" --Fourth Doctor, "Robot"
    25. Re:How many ways are there to do simple things? by fataugie · · Score: 4, Insightful

      So how did writing the tuition check feel after knowing they were rubber stamping things? It would piss me off knowing I was supporting some lazy ass professors.

      --

      WTF? Over?

    26. Re:How many ways are there to do simple things? by Asclepius99 · · Score: 4, Funny

      But we didn't wirk togehter you isnensitive cold!!

    27. Re:How many ways are there to do simple things? by ShadowRangerRIT · · Score: 3, Informative

      I had a similar experience. Technically, a correct assignment could be done in different ways, but it was a limited enough assignment that I'd be hard pressed to identify cheating on a correct assignment. Fortunately, the two people who decided to cheat not only did it wrong, they did it hilariously wrong. The assignment was to create "bank accounts" based on an input string (c for checking, s for savings, m for money market). Each account created got $400 more than the previous (the initial account got $500). Then you ran each of them through three months of accruing interest (only difference between account types was interest rate), printing the value at the end of each month. The instructions were far more explicit than I'm being; output was provided for enough example inputs so checking your work was trivial. The two cheaters interpreted it in a hilariously incorrect fashion: they statically created exactly three accounts, one of each type, then used the input string to determine which ones would earn interest. So a string of "csm", instead of creating three accounts and running them through three months interest would run each static account through a single month's interest, then terminate. "ccc" meant the checking account ran for three months, and you saw nothing at all for the savings or money market.

      And of course, they were lazy as hell about the cheating. The only difference in the code was variable names, and they weren't even well disguised; rather than changing them, the other submitter just appended to the original name. A variable named "cash" in one submission became "cashMoney" in another.

      Lesson to future cheaters: If you're going to cheat, cheat off someone who isn't a complete moron. In CS1, you can only solve the problem correctly in a few ways; identifying cheating is hard, and you're not likely to get called on it unless your solution is character for character identical. But if you solve it in a uniquely dumb way, you'll get caught, and provide amusement to TAs for quite a while.

      --
      $_ = "wftedskaebjgdpjgidbsmnjgcdwatb"; tr/a-z/oh, turtleneck Phrase Jar!/; print
    28. Re:How many ways are there to do simple things? by Kevin+Stevens · · Score: 3, Informative

      I TA'ed an intro to CS class that used these error tools, and this was almost 10 years ago. Cheating is a very serious accusation, or at least was taken very seriously by the professor of the class, and several methods were used to ensure there weren't false positives. The first half of assignments were not run through the cheat system, because they were a bit too simplistic and could have caused false positives. The latter half of assignments were all 100+ lines of code.

      The system did several checks, and included positives with and without whitespace. In most cases where we had matches, there was a 100% whitespace match, right down to sloppy indents, trailing whitespace, etc. Clear cut copy and pasting. Smarter students would try to clean up the whitespace, usually by adding extra lines, changing comments, or removing some, but it was usually pretty obvious from the diffs as to where they would miss some and it would blow their cover.

      The system also did code structure tests, and could pretty easily tell if you just renamed some variables and messed around with whitespace. This was a little harder to review, but when you checked their analysis, I agreed with the results.

      All positives were personally reviewed by the professor and TA's, and to be quite honest we were conservative when actually making formal charges against a student- if only a non-critical function (IE the code to load in the list of items in a file in a binary search problem, but NOT the function that actually performs the search) or two seemed to have a direct match, we would warn the students not to share code again and let them off with a warning. I can't recall ever seeing a real false positive. The professor more or less forced you to use vi or emacs on the linux cluster to write your code, so there was no IDE manipulation of the code, and CS students have no sense of coding standards or consistent style, or even reasonably formatted code for the most part, which made cheats even easier to spot.

      We taught source control (RCS) pretty early. We told students to check in early, check in often. We understood that beginning CS students were pretty poor at frequent check-ins, but my professor would often give them the option of trying to prove that they were at least not the mere copiers by providing their RCS logs to view intermediary versions and progress. Often the cheater and the cheated on were pretty obvious. The source of the code usually had a few check-ins well before the deadline by someone with a B or better in the class. The copier, if he had any, was usually a few hours before the deadline and had been a C or worse student.

      The professor wouldn't punish to the full extent that he could unless there was 100% certainty there was cheating going on.

      Personally, I think there is (or at least was at my school) more cheating in CS because it takes a LOT of time to produce relatively little output. A "page" of code could easily take a CS student 4-8 hours to produce fully debugged. When it comes down to deadline time, there is intense pressure, and if someone leaves their files in their home directory undetected, or walks away from their terminal to use the bathroom, the temptation was too great for them, if they couldn't get the code by begging and schmoozing. Some thought they could just use code from previous years, except that we already had a database of previous years assignments (oops).

      The only time we ever had a gray area was in the case where a student claimed that they had no idea how the other student got their code. Even then the professor would generally error on the side of caution, but watch the student like a hawk in the future. It was all pretty obvious, I don't think anyone was unfairly persecuted, ever.

    29. Re:How many ways are there to do simple things? by TheRaven64 · · Score: 2, Funny

      I'd have given some points if the code had been any Algol-family language. Hell, I'd probably have given some if they'd given me a solution in Smalltalk or Lisp, but not very many. This just looked like they'd copied random words and symbols from the board, without any understanding of where they went. Come to think of it, maybe it was valid Perl...

      --
      I am TheRaven on Soylent News
    30. Re:How many ways are there to do simple things? by GasparGMSwordsman · · Score: 2, Interesting

      The poster commented else where that /. removed the less than sign from the equality portion. It should have been less than or equal to 10.

  2. Problem by COMON$ · · Score: 5, Insightful

    True CS curriculum require a massive amount of critical thinking and other analytical skills. Something the recent graduates of HS are not prepared for. Match that up with the sense of entitlement and you get expected results. Back when I was in CS the dropout rate was around 90%. There were no rent-a-coders and using the web for a resource was a very new thought. So it was write your own damn code or head over to liberal arts...

    --
    CS: It is all sink or swim...oh and did I mention there are sharks in that water?
    1. Re:Problem by eln · · Score: 5, Insightful

      Leaving aside the usual nonsense that kids today are worthless and can't do anything right, the problem is more complicated than that. Many universities have stepped away from the idea of going to college as a way to get a well-rounded education and have positioned themselves as places to get a piece of paper that will let you get a good job. Combine this with the increasing number of positions requiring a college degree, and you get a lot more people more interested in just getting through and getting that piece of paper as quickly as possible than they are with actually learning anything.

      College is quickly becoming like high school: It's a base requirement that everyone has to go through if they don't want to spend the rest of their lives picking lettuce, so people are going to go and try and get through it as quickly and painlessly as possible. There have always been people who do this of course, and cheating is certainly not a new problem, but the above-mentioned issues may make it more prevalent than it once was.

      Remember, though, that our generation cheated as well. Every college in the country has an honor code, and many of them have been in place for decades (or longer). These codes wouldn't exist if no one was cheating before.

    2. Re:Problem by AstrumPreliator · · Score: 3, Insightful

      I also find it interesting that the TFS mentions "...excessive collaboration..." as a form of cheating. Considering many CS students will graduate and get jobs as some type of programmer I would think collaboration would be a really good thing to impart on students. Granted this is a computer science degree and not a software engineering degree, but I personally know my university treated it more like the latter, and I'm sure this happens in many other universities. Even if it were taught more like a proper CS degree collaboration is still something that should be required to learn. The most collaboration I ever did was with three other people in a software engineering course.

      I also did a major in mathematics in college. In contrast with the exception of first year courses like calculus you were always encouraged to work on problems together. Most of my classes were small enough (8 people or less) that the entire class including the instructor worked on the problems. Of course in math your grade was 50% homework and 50% exams. So even if you worked on problems as a group and just took the answers without contributing, you would still fail the class since exams were worth so much (and a C- and under is failing).

      I agree that true CS curriculum requires a lot more critical thought, it's actually largely a subfield of math, but that's not what a lot of CS students get. I know I didn't.

    3. Re:Problem by blair1q · · Score: 2, Interesting

      Fine. They'll get out of school, get a job, be found out as frauds, and have to pay $200K in student loans with whatever's left over from their next job, managing the convenience store at the car wash.

    4. Re:Problem by volsung · · Score: 3, Insightful

      Yeah, most of the cheating I heard about in my CS program 10 years ago was not from people who were necessarily lazy or "party-people" or whatever the usual stereotype is. Most of the temptation to cheat was for people who were completely in over their head with the entire subject and felt backed into a corner. They were wedged between a lack of preparation and social pressure to succeed. ("I did OK in math class, and I like using my computer, so why can't I do this?") The first time many of them had ever thought critically about the structure and function of a computer was day one of CS 101 (consider trying to do college algebra if you had never seen mathematical operators before) and they just got more behind as time went on. This was not helped by the cattle herd design of public university classes.

      The ethically smart ones got extra tutoring from classmates and teaching assistants, or worst case, switched degrees when they realized they were hopelessly behind. The not so smart ones abused the help of their friendly/naive classmates or found some other way to BS through the material. Most of the time, this didn't work out even on semester timescales, but I do remember one group project where a guy couldn't write a single line of code unprompted, yet somehow had landed a job at IBM to start at the end of the semester.

      I don't have any sympathy for people who cheat in classes, but I agree that characterizing the problem as simple laziness or the "moral bankruptcy of the kids these days" teaches you nothing about how to address the problem. Sadly, the solution probably involves things that are socially or economically infeasible: Smaller intro classes, actual focus on pedagogy and not teaching fads in intro classes, de-emphasis of 4-year degrees as a prerequisite for white-collar employment, more investment and advertisement in focused two-year programs for technical fields, etc.

    5. Re:Problem by volsung · · Score: 2, Insightful

      To be perfectly honest, I would be skeptical of any sociological conclusions drawn by primetime TV news programs, which are famous for peddling sensationalist moral panics about "the kids these days." They tend to be heavy on anecdotal evidence and cherry-picked expert testimony.

  3. keyword: caught by Surt · · Score: 5, Interesting

    They're cheating just as much in other disciplines, it's just in CS we have a lot of good tools to catch them. Plus, we get a lot of false positives with no defense, so we get to inflate our successful catch statistics.

    --
    "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    1. Re:keyword: caught by GrayNimic · · Score: 2, Interesting

      In my own undergraduate experience at least, students *did* cheat more in CS courses than in other classes, regardless of major. In part this was due to the different 'honor code' for the CS department than elsewhere (any form of collaboration whatsoever was cheating, unless otherwise specified by the professor), but it was also in the nature of the work. "Copying" someone else's homework in, say, physics or math, a student typically attempts to make their writeup distinct from the original, which involves reprocessing the math and requires some actual understanding of the techniques involved. As a result, they actually did gain some level of learning from the assignment, even if no where near as much as if they'd done it 'properly'. In CS, most people would go for a straight carbon-copy, resulting in zero learning.

      To me, that's the largest distinction - the way in which students leech off each other in CS is different, and results in less learning; combined with more draconian cheating regulations (which, by making any collaboration cheating, encourage people to either work in solitude or go all-out on the cheating, rather than actually trying to work together), it leads to a much worse cheating problem.

    2. Re:keyword: caught by volsung · · Score: 2, Insightful

      For one year during the middle of my CS degree, the department tried to enforce a rule that said that no student was allowed to view code in electronic or print form written by another student. We (and possibly some of the instructors) pushed back on this rule until it was repealed with good reason. While certainly it made certain kinds of leeching unambiguously disallowed, it also eliminated cooperative debugging, which we found incredibly helpful. I learned more about practical coding, and working with other programmers debugging other people's code than I ever did debugging my own code (or even writing it in the first place).

  4. Because that first step is a doozy by gestalt_n_pepper · · Score: 3, Interesting

    CS is just difficult for some people. We didn't all grow up programming in the basement. I've seen students who finally got their program to "run" by commenting out every line, and sadly, were so clueless that they were quite proud of the fact.

    Oddly, it's actually easier now that computers are ubiquitous and going to the CS lab to complete an assignment isn't necessary.

    --
    Please do not read this sig. Thank you.
    1. Re:Because that first step is a doozy by jwinster · · Score: 3, Informative

      Please mod parent up. I agree wholeheartedly with this comment in that there is a really large barrier to entry in CS. I'm a CS grad, and I remember reading the introductory paragraph to my "Introduction to Programming" book stating that this is not a good book for first time programmers, only people with some experience should use it. Luckily I was able to keep up with the learning curve (despite that being my first time programming as well), but it's choices like that which lead to CS dropout rates of 50-60%, and inevitably, cheating.

      --
      Q.E.D.
    2. Re:Because that first step is a doozy by gestalt_n_pepper · · Score: 2, Informative

      It's a matter of logic, not language. VB.net isn't the issue. It's now so close to C#, that it might as well *be* that. It's certainly no easier, or harder, for that matter.

      The most useful "programming" course I took, other than algorithms and data structures was symbolic logic. I'll bet that this course would be a fairly accurate predictor of who passes and who fails in programming.

      --
      Please do not read this sig. Thank you.
  5. What is the sound of one hand coding? by WillAffleckUW · · Score: 5, Insightful

    When the most optimum solution to any problem is frequently the same code, and the same exact question gets asked every single time for that course, is it cheating or is it just optimization?

    I use code libraries and recode old stuff to new uses every day - is that cheating or just efficient coding?

    --
    -- Tigger warning: This post may contain tiggers! --
    1. Re:What is the sound of one hand coding? by IndustrialComplex · · Score: 3, Informative

      I use code libraries and recode old stuff to new uses every day - is that cheating or just efficient coding?

      Most of the professors I had would state that you were allowed to use a set list of libraries. If you wanted to use a different library, it had to be written by you and included in your submission.

      The set list of libraries was quite small, usually something like std.h and not much else (I don't know if that was the library, I haven't written anything in C or much else for 10 years)

      --
      Out of modpoints but really liked a post? 1BDkF6TtmmeZ3yqXbz9yhdYVqRYnwFoXDj
    2. Re:What is the sound of one hand coding? by patternmatch · · Score: 3, Insightful

      It depends on the point of the assignment. If you're at your job, and you just need to get something working quickly, then you're not "cheating" by using a library or re-using someone else's code. But when you're in school, the point is to learn the material by solving the problem yourself. So if you just use someone else's solution, you're perverting the intent of the assignment, and that counts as cheating.

    3. Re:What is the sound of one hand coding? by noidentity · · Score: 2, Funny

      You must be one of those hippie coders who never trims his hair. In the real world, we always avoid using outside code or libraries. Only code we've written passes our quality standards. These schools are right to teach students that collaboration and reuse are cheating, because they are! Now excuse me, a customer has found yet another bug in our software today, so I need to see if I can fix it.

  6. My opinion: by butterflysrage · · Score: 5, Funny

    Enrollment in undergraduate computer science courses is at an all-time high at colleges nationwide. But this trend that's been hailed by the US tech industry has a dark side: a disproportionate number of students taking these courses are caught cheating. More students are caught cheating in introductory computer science courses than in any other course on campus, thanks to automated tools that professors use to detect unauthorized code reuse, excessive collaboration and other forbidden ways of completing homework assignments. Computer science professors say their students are not more dishonest than students in other fields; they're just more likely to get caught because software is available to check for plagiarism. 'The truth is that on every campus, a large proportion of the reported cases of academic dishonesty come from introductory computer science courses, and the reason is totally obvious: we use automated tools to detect plagiarism,' explains Professor Ed Lazowska, chair of computer science and engineering at the University of Washington. 'We compare against other student submissions, and we compare against previous student submissions and against code that may be on the Web. These tools flag suspicious cases, which are then manually examined.'"

    --
    the preceding post was not spell checked... suck it.
  7. Re:Why? by Z34107 · · Score: 5, Insightful

    Is this not the goal of code re-use? I mean, if there is no copyright violations, that's what ppl should do... Schools are always trying to make you implement retarded things anyway...

    You re-use code to avoid "reinventing the wheel." The intent is to 1) save time developing what already exists, and 2) take advantage of all the debugging that was already done for you.

    The goal of getting a CS degree is to understand what the fuck a wheel is. Copying from expert sex change is not going to make you a good computer scientist; it won't even make you a good software developer.

    --
    DATABASE WOW WOW
  8. Why Computer Science Students Cheat? by rodrigoandrade · · Score: 3, Insightful

    For the same reason Psychology students cheat.
    For the same reason Math students cheat.
    For the same reason English students cheat.
    For the same reason Economics students cheat.
    For the same reason Biology students cheat.

    You get the idea...

    1. Re:Why Computer Science Students Cheat? by tool462 · · Score: 2, Funny

      I like that you (correctly) left Physics students off that list.
      Physics students don't cheat. Their wave functions become entangled, so when you solve for the eigenvalue of one, the other is necessarily solved as well.

  9. Re:But is the class even relevant? by multipartmixed · · Score: 2, Insightful

    If you had taken more than one CS class, you would have understood that it's not about Pascal -- it's about what you're writing WITH pascal.

    Did you really think that say, trees in pascal are completely different from trees in C?

    --

    Do daemons dream of electric sleep()?
  10. how to not cheat by Anonymous Coward · · Score: 5, Insightful

    I used to cheat in college, and all my friends do. I don't cheat anymore. My secret? I switched to a major I like. For the most part, I enjoy and look forward to assignments, and haven't cheated on any since changing majors. For me the subject is CS, but I'm sure that most people could find something they like well enough to look forward to assignments.

  11. Real geeks/nerds never plagarise. by Antony+T+Curtis · · Score: 2, Interesting

    When I ran a tutorial group for fellow students who were taking the Imperative Programming module, I can guarantee that there was no plagiarism nor cheating going on. I helped them learn coursework and each of their assignments were done by them and I only intervened if they had made a mistake. They experienced some frustration because I would not give them the solution: I had them work through it themselves and figure out their own mistake. Only one time, I was concerned that they really were considering throwing me out through the 3rd floor window.

    Only after they had completed their assignments, would I show them how I would complete the same assignment.

    I think a difference was that each of them really did want to learn the material but many students today taking these courses just want a job and have no personal interest in the topic.

    --
    No sig. Move along - nothing to see here.
  12. It'll work itsef out eventually by wikid_one · · Score: 2, Insightful

    If you are one of those who cheat in an Intro. to CS class, then chances are pretty good that you won't make it too far with your programming aspirations. Just don't complain when the college keeps taking your tuition money for the same course!

  13. Re:And then they check it? by emurphy42 · · Score: 4, Insightful

    That's taken out of context. In context, it carries a clear implication of "manually examined for the specific purpose of confirming or denying plagiarism", on top of whatever manual examination takes place for the purpose of confirming or denying that the code is any good.

  14. CS classes need to be in the real world. by AnonymousClown · · Score: 3, Insightful

    The professors say:

    "Many of our students like to collaborate, but at what point are you copying?" Pitt asks. "The course policy needs to be really clear. Some courses will allow you to work in pairs but not in triples. If you don't follow that policy, we would call that cheating."

    The industry says:

    "In the real world, people write code in teams where they are given pieces of a project to work on," Foote says. "The academic world should be mapping onto the real worldThey shouldn't be handing out assignments where people are coding on their own."

    Ladies and Germs:

    We see here where academia isn't keeping up with industry. I can't tell you how many times I've seen where jobs descriptions demand "team players" and "the ability to work in teams".

    And I'd argue that academia promotes the prima donna. Someone who was a 4.0 CS student is going to have the impression that he's better than everyone else (maybe true) and that everyone else should get out of his way and let him do it all (not good). I worked with the latter. He was a GA Tech grad and he was rather brilliant. Unfortunately, with all his smarts he was a liability to the team. He couldn't possibly do everything himself (2 million+ line project due in 6 months) and he caused a lot of problems to the point where he was slowing the others down even more.

    The geniuses need to be off on their own developing - whatever - that's what we had to do with this guy. He was still miserable, though.

    --
    RIP America

    July 4, 1776 - September 11, 2001

    1. Re:CS classes need to be in the real world. by pclminion · · Score: 4, Insightful

      I disagree. Computer science has never really been about what happens in the real world. What happens in the real world is engineering. And before you scoff that most code you've ever seen is terribly engineered, remember that these people didn't study engineering at all -- they studied computer science. The problem is that people keep trying to glob CS and software engineering into a single idea, when it's not. CS is no more engineering than organic chemistry is chemical engineering. The goals, practices, daily ways of thinking are not the same.

      If I work with CS graduates who can't engineer their way out of a wet sack, I'm not very surprised, because engineering wasn't what they actually studied. And it's not their fault either, because the distinction is never explained in the first place. Students are prepared and told that to be a programmer, they need to study CS. I think CS is something you should study if you want to be a computer scientist. If you want to develop real world code, you need to be on an engineering track.

    2. Re:CS classes need to be in the real world. by serialband · · Score: 2, Interesting

      ...
      We see here where academia isn't keeping up with industry. ...

      The problem here is that people keep thinking that Colleges are trade schools. They are not. Academia never was about training you for industry. That's what trade schools are for.

      It used to be that you got a job after high school, because high schools used to prepare you for some trades. There used to be high school classes that taught autoshop, welding, woodshop, electronics, etc.. and you would be prepared to enter the workforce as soon as you graduated high school. That curriculum has been eroded by budget cuts and now you can't get many job skills from high school any more. You're now expected to get a college degree, but all these students really just need a trade school degree, because they're out chasing money, not knowledge.

      Companies really just want trade school graduates, not college degreed academics. They use the degree requirement as an excuse to bar or limit the candidate pool. The students need to go to trade schools, because all they want to do is ply a trade, not become professors and do research and gain knowledge. They really need to go to community college or junior college or ITT Tech or DeVry or University of Phoenix and get their trade school education and diplomas. The problem is that there has been a misconception about the entire college experience. Nearly half the students in college shouldn't really be in college because they aren't trying expand their knowledge. They aren't going to do research. They could care less about physics or calculus or chemistry or English, which are required of college students. Those subjects don't help most people with their trade.

      And I'd argue that academia promotes the prima donna.

      I suggest that your company stops hiring the geniouses for the regular mundane production coding. He should have been hired to do research, for which he is probably better suited. Code monkeys can be 3.0 or even lowly 2.x students.

  15. software sucks by InsprdInsnty · · Score: 5, Interesting

    One of my lecturers decided to test our university's plagarism software as it was coming back with a unusually high number of false positives. As soon as he submitted a sample he wrote it came back positive for plagarism even though he answered a question just using the knowledge he had gained over his 20+ years experience in the industry. He and many other people in the department put hardly any weight on the results that pop up. His issue with using it is that the content of the course changes so little that with every iteration of students passing through the school its more likely to have incorrect results as its saves a copy of the submission to add to its database. I myself have had work come back as plagarised beacuse there arte only so many ways to write the same damn sentance.

    1. Re:software sucks by poena.dare · · Score: 3, Informative

      "just because two people use the same algorithm doesn't make one of them a plagiarizer"

      The irony - because of skroooie US patent laws - when two people use the same algorithm it makes one of them a IP infringer!

  16. How does a 'caught' student defend himself? by Anonymous Coward · · Score: 2, Interesting

    How does a student defend against a false positive in this environment?

    1. Re:How does a 'caught' student defend himself? by blair1q · · Score: 2, Funny

      You want to speak to the Law School.

      In CS, we just throw exceptions. If someone has written an intelligent handler, fine. If not, there's always a default.

  17. Re:Why? by Z34107 · · Score: 4, Informative

    It's neither new nor subtle; it's why expertsexchange now hyphenates their URL: experts-exchange.com.

    --
    DATABASE WOW WOW
  18. Peers Pressures & Context by mindbrane · · Score: 2, Interesting

    Our big brains are deeply tied into our social matrix. Our value systems, our ethics and our morals, echo within our social system and inform our actions. Context informs values and actions. If disciplines like the hard sciences advertise their wares as facts and require students approach their studies with a "just the facts" attitude then that context will lend itself to a cut and past approach to homework that will more readily accommodate obvious borrowings from other students. If you're in an arts programme and your task is to display imagination and your core inner values in a medium and venue that accentuates individuality and creativeness then, ceteris paribus, it's more likely that context will not only encourage innovative output in homework but also encourage a more guarded attitude toward a peer borrowing your ideas. If you're a C.S. student and the world around you is rife with computer hacks and the news about those hacks inform you that you should be able to not only understand them but, possibly, be able to come up with something similar or better than to a considerable extent the ethics that inform your homework production will reflect the same ethics that inform the hacker culture.

    If as educators you advertise your discipline as an empirical activity scrutinized by peer review then undergraduates just trying to fill out their curriculum with a few tasty bits for their upcoming resume are likely to think, well it's just facts, cut and paste. Let it wash out in the exams.

    --
    ideopath @ play
  19. I suspect that it isn't just that... by fuzzyfuzzyfungus · · Score: 2, Interesting

    While it is almost certainly the case that comp sci assignments face the best algorithmic scrutiny(CS professors, shockingly enough, are probably more likely and better able than modern literature professors to subject them to such), there are similar algorithmic tools(albeit generally 3rd party contracted stuff) being used against writing assignments at many schools.

    I suspect that there are other factors at work, as well. I'll put out the following conjectures(whether you would prefer to say that I "reasoned from first principles" or "pulled them out of my ass" is at you discretion):

    1. Intro level courses, in all areas of study, will have higher rates of cheating than later courses. Two basic reasons: Intro level courses are much more likely to be mandated under "core curriculum" or "breadth requirements" or whatever the institution's term for the concept is. This makes them much more likely to have a substantial population of students who are deeply disinterested and/or very poorly suited to the subject. People who don't care, or who can't hack it, are the ones with the strongest motives to cheat.

    2. The level of cheating, broadly speaking, will reflect how profitable the area of study is. Other than the accolades of your tiny group of peers, the rewards for being a world-renowned expert in late-middle Assyrian civic structures are basically fuck-all. If you work hard for a decade+, and get lucky, you might get a steady but not-especially lucrative tenured position, maybe a few advances from books, and that's about the best case. Therefore, only people with a genuine enthusiasm for the subject will bother to take more than "Intro to World History 101". There won't be zero cheating(putting your name on the output of your toiling grad students, for instance, is practically a best practice); but there will be less. Things like law, medicine, business, CS(more before the bubble burst than now; but still some) offer relatively good monetary rewards, and so are more likely to attract people who have comparatively little interesting the the subject and just want the diploma. You will therefore expect higher levels of cheating.

    3. The level of cheating, broadly speaking, will reflect the student body's belief about "how relevant" the academic material is to the goals that they seek(this is partly covered by #2; but goes more broadly than that). If you, say, want to make it as an English professor, or in Real Serious Math, cheating is largely counterproductive. You learn to write by writing, so if you skip much of the writing, you won't know how to write at the end of the course. You gain facility in math by doing, so you won't be facile if you cheat rather than work. If, though, you are sitting through CS, with visions of being a .com millionaire(or even just a workaday java monkey) dancing in your head, you'll be thinking "why do I need to know this crap about NP complete Turning machines and O complexity and stuff? I just want to write Facebook 2.0!". People smarter and/or wiser than you may well suggest that you are wrong; but you will still be tempted to cheat your way through the "irrelevant" material.

    I suspect that Intro CS sits at the intersection of the worst of both worlds. On the one hand, since it's an intro course, you get all the people who aren't really cut out for it learning the hard way that programming isn't as easy as playing video games, even though they both involve computers, who then freak out and start cheating(either to pass at all, if they are really hopeless, or to pass without cutting into their drinking time too much). On the other hand, you have all the people who are seeking Technology riches, and don't want to hear this ivory-tower-crap, they just want to write some programs and get a job.

  20. Re:And then they check it? by martas · · Score: 3, Insightful

    wrong. they may still look at the code for grading. but catching cheating is a much harder problem: in terms of complexity, grading is O(n) while verifying for similar submissions is O(n^2) or worse. also, in big classes you may have multiple TA, each grading a subset of the submissions. hence may be impossible for them to find such similarities.

  21. What is this "sense of entitlement"? by Anonymous Coward · · Score: 3, Insightful

    I'm European-trained, but working as a visiting professor in the USA. I hear a lot of people here throw out the "sense of entitlement" phrase, and it's almost always when talking of today's students.

    Based on my experiences here and in Europe, I don't think that they exhibit that at all. Most of the students I work with put forth much effort, and don't expect anything other than to be taught the material properly, helped when needed, and graded fairly.

    The only people I see with a "sense of entitlement" are the Boomers (I think that's the American term for people who are 50 to 65), and Indian students.

    The Boomers always have the most absurd expectations, from getting the best parking spaces (even though they've been at the college for less time than even I have) to getting college-funded coffee makers in their offices to getting raises several times a year, while also getting more vacation time. The unionized folks are by far the worst. Even though some of them are merely janitors, with no special training or education beyond high school, they expect a wage and benefits in excess of those that we get as professors.

    The Indians, and by Indians I mean the children of wealthy upper-class families in India, are perhaps the worst. Back in India they got everything and anything they wanted, I suppose. And they were used to treating others as being "lesser", due to their social classes. They bring this with them to America when they come to study here.

  22. Methinks many are missing the point by mschuyler · · Score: 4, Informative

    The many examples here of array declarations or variable initializations are not sufficient to get you pegged as a cheater. But when you get multi-line programs of dozens of lines that are precisely the same, even including comments, THAT will ring alarm bells. I don't think anyone writing a simple 'Hello, world' program that is exactly like mine will get called out. If you turn in a hundred line program full of regression equations to plot the Fry Readability Index in a matrix graph that is precisely like mine? Busted!

    --
    How about a moderation of -1 pedantic.
  23. Much easier to catch by cfulmer · · Score: 4, Interesting

    So, back in the 'day (1989 or so), I was grading for the first data structures course for computer science majors, and wrote a very simple program that stripped comments out of programs and then counted the number of semi-colons, colons, parentheses and so in in each program's source code, then sorted them. When two programs were sufficiently close, I compared them side-by-side and came up with more obvious cheaters than I was expecting. (Including one from two roommates who happened to be alphabetically next to each other.) If those programs have advanced *at all* in 20 years, they're now comparing parse-trees.

    The problem is that computer programs have structure, and it's impossible to copy somebody else's work and then 'only' replace the underlying structure. Instead, cheaters reorder their code, add a bunch of comments, rename variables, change indentation and so on. That sort of thing doesn't change the structure, so it's easy to catch.

    And, yes, this method only works on sufficiently large programs -- there are only a handful of ways of doing "Hello World." But, nobody cheats on "Hello World."

    1. Re:Much easier to catch by cadience · · Score: 2, Insightful

      nobody cheats on "Hello World."

      *Everybody* cheats on Hello World. After all, that IS the point of hello world.

  24. Re:But is the class even relevant? by immakiku · · Score: 2, Insightful

    This is somewhat of a sad reminder of the position CS departments are in. You are employed as a coder. Great. A significant percentage of CS grads are "coders" as well, but coding doesn't require more than an intro or two's worth of classes and a bit of experience to teach. The bigger portion of computer science goes into more advanced topics - networking, software engineering, UI, graphics, graph theory, algorithms, compilers, NLP, etc. - that you wouldn't really need for coding, but the knowledge of which is required to really understand what a computer is and does, why it does it, and how you can better use it.

  25. Why NetworkWorld cheats by PwnSnake · · Score: 2, Funny

    I've seen this exact same article, at least parts of it word-for-word, around before... no joke.

  26. Umm... it's required now? by drumcat · · Score: 2, Informative

    No one is saying that almost every major makes "Intro to computing" compulsory now. Why is it that we are surprised? The more you require people that aren't interested, the more they'll cheat. The more widely compulsory you make these courses, the more dumbed-down they are; the kids that are good are going to be lazy on purpose. Why not? Finally, you have tools to check that your History prof doesn't. Three very compelling reasons why there would be more cheating, not even taking into account the ease at which it is done. Yet, when these same kids get out in the real world, we call them EXAMPLES and REPURPOSING, and we tell them to COPY things out of books and sites that are KNOWN TO WORK. In reality, there's not enough cheating going on.

  27. easy to spot by cowdung · · Score: 2, Interesting

    Cheating is usually easy to spot. Because not only do they use the same algorithms and the same sequence of code, but also the same spacing. For example:

    x = x +1;
    printf(" %d", x);

    Notice no space between +1, and 2 spaces between " , x". When you see this combined with the same essential algorithms. A high degree of similarity in the strings and in the comments.. the user has copied the code.

    Most students don't do a great job of covering it up.

    The article also mentions foreign students as being more likely to cheat. Note that cheating is fairly commonplace in high schools and even in Universities in many countries. Not all countries penalize students very harshly when caught. In some cases they only get points deducted or get an F in the assignment. So a culture of cheating emerges.

    (I know.. I'm an instructor in South America.. :) )

  28. Re:And then they check it? by LanMan04 · · Score: 2, Insightful

    That's why you use a token analyzer. You think CS profs do this BY HAND? They run all their students' source through a token analyzer looking for matching chunks. It's not hard.

    --
    With the first link, the chain is forged.
  29. What is your quest? What is your favorite color? by proarchist · · Score: 5, Interesting

    It has always bothered me why CS assignments in some classes are so strangely off from what is supposedly being learned. Often there is some trick and the solution can be found only by not being deceived by the weaselly wording of the assignment, nor by being misled by the current subject matter in the class.

    If you are already a successful programmer, these CS projects seem especially surreal given that "cheating" is the label given for all those things you would do in real life to learn and solve, including collaboration and seeking example code.

    As an assignment in a computer ethics class I gave a talk on how the internet was going to bring college level CS education, especially self-education, to global masses. (Some universities even put their class materials online and available to everyone.) The idea was that once these useful information and materials got out there, they become part of a more advanced world culture.

    During Q and A the teacher criticized that I didn't account for how hard it was to come up with new problems year after year to test and grade CS students, and that putting everything online made this only more difficult. The teacher was actually advocating holding information back to make it easier to rate students.

    I answered by saying that there are two competing motivations for teaching methods in university classes: one is to enlighten, feed and grow minds, especially all the minds that paid through the nose for the service; the other was to "weed out," and to grade--like putting the class into a series of sifting screens--the course objects getting removed first and labeled low grade, and the finest ones coming out the end and getting labeled "academic excellence." I asked how much the former was to be sacrificed for the latter.

    Didn't finish that class.

  30. Re:And then they check it? by TheRaven64 · · Score: 2, Insightful
    I gave quite detailed feedback for all of the assignments that I marked, but I found teaching too depressing. On one assignment, I put a complete solution worth a high C or low B grade online, linked to it in the 'further reading' section of the assignment sheet. No one downloaded it. In another, I wrote the complete solution to the last question on the back page of the hand-out notes. Only 10% of the students attempted that question. Mind you, one of my students, when I suggested a good book on the subject for further reading posted this on the student forum:

    I'm paying £3,000 a year for this degree! I don't expect to be told to read something in a book!

    --
    I am TheRaven on Soylent News
  31. college the new HS because HS education failed by electrosoccertux · · Score: 3, Insightful

    Leaving aside the usual nonsense that kids today are worthless and can't do anything right, the problem is more complicated than that. Many universities have stepped away from the idea of going to college as a way to get a well-rounded education and have positioned themselves as places to get a piece of paper that will let you get a good job. Combine this with the increasing number of positions requiring a college degree, and you get a lot more people more interested in just getting through and getting that piece of paper as quickly as possible than they are with actually learning anything.

    College is quickly becoming like high school: It's a base requirement that everyone has to go through if they don't want to spend the rest of their lives picking lettuce, so people are going to go and try and get through it as quickly and painlessly as possible. There have always been people who do this of course, and cheating is certainly not a new problem, but the above-mentioned issues may make it more prevalent than it once was.

    Remember, though, that our generation cheated as well. Every college in the country has an honor code, and many of them have been in place for decades (or longer). These codes wouldn't exist if no one was cheating before.

    Undergrad diploma is the new HS diploma because companies can't depend on people having a HS diploma to mean that they are capable of critical thinking.
    That's what happens when you give them out willy-nilly (big thanks to the folks that implemented no-child-left-behind, and the liberals that won't let us fail students; but both of these are passing the buck-- the real problem is the parents not engaging in their childrens' lives.)

    So now an M.S. is the new B.S., but this whole education thing is approaching unsustainability due to the exorbitant cost, both fiscally time required. Quick example, my MicroEcon test that I aced today had 20 questions, took me 20 minutes, and if they gave me all the slides up front I could have learned the entire course in 2 days or less of studying. But this amount of work was spread out over an entire semester. Is that economically feasible? No, we do it for the paper that gets us a well-paying job. With the cost of post-secondary education running away from us, the supply of students getting degrees from legit schools (aka not DeVry, ITT Tech, or your local community college that passes everyone for the same reason the high school does-- because they need the money) will dwindle. Eventually the cost of employing those with legit degrees will be so high that it will be economically feasible to consider employing someone straight out of highschool and just train them yourself. The two requirements for this to work are
    1). student is smart enough to teach self things if you gave him a book and the internet
    2). student is either a). self-disciplined, or b). can be managed to do work.

    You can devise a test for 1), and if you just hire people you know and trust (and have people you know and trust who can refer you to people that they know and trust) then 2) is solved as well.

    The point I'm making is I could have learned all my circuits stuff a lot faster with proper documentation and material written down than it took me in the classroom. Further, frankly I didn't need chemistry and Calculus I-III & DiffEq to help me design circuits or code. And I certainly didn't need a semester each to learn the applicable parts. A much more efficient solution (and it's much more motivating) is to worry about that stuff when you need it-- when you run into the term "eigenvectors and eigenvalues" while learning on the job about applying neural networks to power systems, you go teach yourself the linear algebra. It's much more motivating when you're stuck at the job for 8 hours, can't surf the web all day, and the most entertaining thing you can do (and it's actually quite entertaining) is learning things. Even better, it's always need-based, never an arbitrary "you have to learn this so that y