Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Education Programming News Technology

Why Computer Science Students Cheat 694

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.'"
This discussion has been archived. No new comments can be posted.

Why Computer Science Students Cheat

Comments Filter:
  • by nebaz ( 453974 ) on Monday April 19, 2010 @02:54PM (#31900100)

    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?

  • Problem (Score:5, Insightful)

    by COMON$ ( 806135 ) on Monday April 19, 2010 @02:55PM (#31900142) Journal
    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...
  • more about course (Score:1, Insightful)

    by Anonymous Coward on Monday April 19, 2010 @02:57PM (#31900168)

    maybe this says something more about how introductory level computer science courses are taught.

  • Hello, World! (Score:1, Insightful)

    by phissur ( 1285832 ) on Monday April 19, 2010 @02:57PM (#31900176)
    There are only so many ways to print 'Hello World'. Don't expect all students to have different code for an Introductory course's simplistic assignments. Now if their comments are the exact same, raise some flags.
  • by Surt ( 22457 ) on Monday April 19, 2010 @02:57PM (#31900186) Homepage Journal

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

  • by WillAffleckUW ( 858324 ) on Monday April 19, 2010 @03:00PM (#31900252) Homepage Journal

    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?

  • Code reuse? (Score:1, Insightful)

    by Anonymous Coward on Monday April 19, 2010 @03:00PM (#31900264)

    Isn't OO all about code reuse?

  • by TitusC3v5 ( 608284 ) on Monday April 19, 2010 @03:01PM (#31900266) Homepage
    If the person you copied it from also mistakenly used an assignment operator instead of a conditional, then yes. :)
  • Re:Why? (Score:5, Insightful)

    by Z34107 ( 925136 ) on Monday April 19, 2010 @03:01PM (#31900274)

    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.

  • by rodrigoandrade ( 713371 ) on Monday April 19, 2010 @03:01PM (#31900286)
    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...
  • by multipartmixed ( 163409 ) on Monday April 19, 2010 @03:02PM (#31900296) Homepage

    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?

  • how to not cheat (Score:5, Insightful)

    by Anonymous Coward on Monday April 19, 2010 @03:02PM (#31900300)

    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.

  • by wikid_one ( 1056810 ) <wikid_one@mchsi.com> on Monday April 19, 2010 @03:06PM (#31900384)
    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!
  • by emurphy42 ( 631808 ) on Monday April 19, 2010 @03:06PM (#31900386) Homepage
    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.
  • by AnonymousClown ( 1788472 ) on Monday April 19, 2010 @03:07PM (#31900400)

    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.

  • by CorporateSuit ( 1319461 ) on Monday April 19, 2010 @03:08PM (#31900420)
    What are these unneccesssary scribblings you're adding to your code? This is a job for a single line:

    System.out.println("12345678910");
  • by snowraver1 ( 1052510 ) on Monday April 19, 2010 @03:09PM (#31900448)
    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...
  • Re:Problem (Score:5, Insightful)

    by eln ( 21727 ) on Monday April 19, 2010 @03:12PM (#31900498)
    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.
  • by martas ( 1439879 ) on Monday April 19, 2010 @03:14PM (#31900520)
    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.
  • by Anonymous Coward on Monday April 19, 2010 @03:16PM (#31900550)

    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.

  • by pclminion ( 145572 ) on Monday April 19, 2010 @03:19PM (#31900612)

    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.

  • Re:Problem (Score:4, Insightful)

    by AstrumPreliator ( 708436 ) on Monday April 19, 2010 @03:23PM (#31900680)
    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.
  • by patternmatch ( 951637 ) on Monday April 19, 2010 @03:28PM (#31900738)
    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.
  • by adwarf ( 1002867 ) on Monday April 19, 2010 @03:28PM (#31900750)
    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.
  • by Anonymous Coward on Monday April 19, 2010 @03:34PM (#31900888)

    Hah! Cheating in math at the university level (by which I mean calculus and beyond) is essentially impossible if you give quizzes and exams in-class. I suppose it is more possible if you allow for take-home. To be good enough to

    1. copy an answer,
    2. modify it enough to not be spotted,
    3. provide enough work for it to be graded correct,
    4. and still have a correct answer

    is not possible unless you already had the skill to do the problem in first place.

    I've graded thousands of university math quizzes and exams. Cheating is obvious. When students complain, you just offer them the chance to do a similar problem on the white-board in your office. Case-closed.

  • by Monkeedude1212 ( 1560403 ) on Monday April 19, 2010 @03:36PM (#31900906) Journal

    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.

  • by fuzzyfuzzyfungus ( 1223518 ) on Monday April 19, 2010 @03:36PM (#31900910) Journal
    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...
  • by immakiku ( 777365 ) on Monday April 19, 2010 @03:41PM (#31900992)
    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.
  • by Anonymous Coward on Monday April 19, 2010 @03:52PM (#31901164)

    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.

  • by acidrainx ( 806006 ) on Monday April 19, 2010 @04:12PM (#31901466) Homepage

    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.

  • by LanMan04 ( 790429 ) on Monday April 19, 2010 @04:28PM (#31901658)

    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.

  • "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.

  • by Anonymous Coward on Monday April 19, 2010 @04:37PM (#31901780)

    What site am I on again...

    You're on a website that removes less than signs from people comments!

  • by fataugie ( 89032 ) on Monday April 19, 2010 @04:48PM (#31901918) Homepage

    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.

  • by Anonymous Coward on Monday April 19, 2010 @05:06PM (#31902182)

    What I've noticed is that a large percentage (50-60%) of students aren't really into computers(programming, hardware, or engineering), they just like playing computer games and think they can get by with that [Hmm, what should I do for a living, I really like computer games, maybe I can do something with them]. Then when they start getting into the real subject matter they just can't cut the work/understand the technology and panic. And don't give them that much credit, some of them can't even figure out how to change their names in a file.

    A real entrance exam for these programs should ask the very simple questions: Have you ever built your own computer? Have you ever created your own webpage(facebook/myspace/"the like" don't count)? Do you know why "Hello World" is a joke?

    Simple questions but I find that those people who have taken the initiative and gone out and learned on their own tend to make far more competent and worthy programmers, techs, admins and the like.

    For what it's worth.

  • Re:Problem (Score:1, Insightful)

    by Anonymous Coward on Monday April 19, 2010 @05:44PM (#31902648)

    What is so wonderful is to see these asstards crash and buuuurn when they meet the real world.

    Except that they don't. Ever wonder why it is that with all of these well-educated folks who have run the gauntlet of college, subject testing, psychological testing, and years of real-world experience running government and business that the world is as fucked up as it ever was? When an idiot goes to college, the typical product is a college-educated idiot. Like Charles Fort said

    The fittest survive.
    What is meant by the fittest?
    Not the strongest; not the cleverest—
    Weakness and stupidity everywhere survive.
    There is no way of determining fitness except in that a thing does survive.
    'Fitness,' then, is only another name for 'survival.'
    Darwinism:
    That survivors survive.

  • by cadience ( 770683 ) on Monday April 19, 2010 @06:06PM (#31903006)

    nobody cheats on "Hello World."

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

  • Re:Problem (Score:4, Insightful)

    by volsung ( 378 ) <stan@mtrr.org> on Monday April 19, 2010 @06:19PM (#31903242)

    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.

  • Re:keyword: caught (Score:3, Insightful)

    by volsung ( 378 ) <stan@mtrr.org> on Monday April 19, 2010 @06:27PM (#31903318)
    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).
  • Re:Problem (Score:3, Insightful)

    by volsung ( 378 ) <stan@mtrr.org> on Monday April 19, 2010 @06:35PM (#31903442)
    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.
  • by TheRaven64 ( 641858 ) on Monday April 19, 2010 @06:39PM (#31903504) Journal
    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!

  • by electrosoccertux ( 874415 ) on Monday April 19, 2010 @06:42PM (#31903532)

    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

  • by Anonymous Coward on Monday April 19, 2010 @08:23PM (#31904588)

    Isn't the fundamental problem in the way CS is taught? What if the coding were tested AS SOON as it's taught - with NO time to look things up -- and kept to a very short part of the course work. Once the basics are in their heads, quickly get them to learn how to assemble software in small teams. What if the students shared and collaborated ON PURPOSE? We could even them find code for algorithms on the web the glue things together for their projects - maybe even entire class projects? Only lazy teachers would find this approach abominable.

    Wouldn't it be great if Test-First and Source Code Control and Documentation were all taught at the same time?

    It's been said a million times - no decent programmer learns how to code in the classroom - they learn by doing. The classroom is where they learn how the algorithms work, not how to translate them into code. The classroom is where they should get to ASK questions about code not ANSWER them.

    Every plumber learns their trade by learning to read and analyze blueprints and learning the math, the principles, the parts and supplies and walking through real buildings from new construction sites to run-down ghettos. The hone their pipe-cutting and soldering skills during the apprenticeship, NOT in the classroom.

    In my nearly 30 yrs and some 17 computer languages I've hired the highest GPA students from CS and some know shit about code and others are brilliant -- the latter are the ones who learned coding by DOING, not by INSTRUCTION.

    My grey-haired 2c worth.

On the eighth day, God created FORTRAN.

Working...