4 ms·
Sorry, but this kind of thinking is bullshit. Treating cheating as being efficient and promoting code reuse is just ridiculous. To actually be a good programme
by hristov 16y ago
Sorry, but this kind of thinking is bullshit. Treating cheating as being efficient and promoting code reuse is just ridiculous.
To actually be a good programmer one should learn how to write code by themselves, and then start thinking about reusing it. If you start with reusing code, you will never be able to code anything new but will always rely on copying other people. You will also always copy other people's mistakes without noticing.
I finished school long time ago and cheating was rampant, and it really pissed me off. All it did was prevent the truly exceptional from standing out from the crowd. Also it gave the faculty a really false sense of their effectiveness as teachers.
- alanfalcon 16y agoThe point of the article has been missed entirely in this comment. The author of the orignal article uses the examples of code re-use and efficiency as just that: mere examples of real world considerations that his students should use in class as they would in real life. One lesson has the author providing students with an executable and asking them to reverse-engineer the code: this has nothing to do with re-using code or copying mistakes or cheating. The author creates interesting, useful problems for his students to solve. In this way, the students are self-motivated to learn and grow and problem solve for themselves, rather than simply try to achieve the highest grade by whatever means necessary. The author does not encourage cheating, he encourages engaging students meaningfully. I, for one, would have loved such a teacher in my CS classes. It might have prevented me from dropping out of the CS program. To add context, I was regularly in the top 5% of my CS classes. I would rush to complete all assignments on my own so that I could spend the rest of my lab time creating my own interesting problems to solve (wherein I would start to truly learn things that would be useful to me even if I was never tested on them directly.) I ended up pursuing (and obtaining) my degree in entrepreneurial management where cheating was also the norm among my classmates, but where I at least felt like I was being taught new things that I would be able to apply in my later life. While cheating was rampant, I never let it piss me off... I simply went on being exceptional and always found myself standing out from the crowd.
- tom_b 16y agohristov is dismissing the point of the article rather than missing it. CS higher education is faced with deep challenges (not least of which is the continuing argument of how much CS should be software-engineering oriented). Ignoring those challenges entirely though, we should not conflate plagiarism of programs with code re-use. Code re-use is an important part of the "real world." But not in the practice of programming for learning purposes. Exploratory programming and code hacking, as you point out, is a wonderful learning mechanism. I'm scared when the original article makes statements like "I no longer teach programming by teaching the features of the language and asking the students for original compositions in the language." And you should be too. I don't worry so much about cheating, but rather more about the end result in the marketplace. Why do organizations shy away from developing their own tools and software internally? High cost with a low likelihood of success? I think that poor software developers negatively influence the opportunity for software development. There are times when custom software development has significant advantages over the purchase of software solutions. While it is important to actually consider the benefits and costs of custom vs buy, I always feel a little bewildered explaining that we can create and support custom software in-house. I also cringe at in-house software dev shops that primarily are configuration experts and administrators for purchased solutions. Of course, that same reluctance to do in-house dev is probably a major opportunity for entrepreneurial hackers.
- catshirt 16y ago"If you start with reusing code, you will never be able to code anything new but will always rely on copying other people. You will also always copy other people's mistakes without noticing." I disagree. Not sure in what capacity you are speaking of "starting" (ie. third line or third language), but I find this statement to be (in my experience) false on both ends of the spectrum. Maybe I am just arguing an irresponsible use of "always" and "never". :)
- ZoFreX 16y agoI started with reusing code, by copying BASIC out of books and magazines by hand, I'm sure many of us did, and I've definitely created new code a few times!
- pbhjpbhj 16y agoYup, ditto (on an Acorn Electron for me). Slavish copying, then the inevitable debugging; then modifying others programs; then writing ones own things and referring to others code for syntax hints and such. I never really went as far as copying algorithms. At this early stage I never learnt code reuse in the sense of having libraries and such, that probably held me back quite a bit. But then any instruction at that stage would have helped I think.
- RodgerTheGreat 16y agoIt's worth considering that you had to type those BASIC programs yourself. Even if you didn't understand it, you had to look at every line. Compare that to Ctrl-A-Ctrl-C-Ctrl-V.
- teach 16y agoI'm a CS teacher, and at first, when I give code to students for them to type in / modify, I make it a screenshot just so they CAN'T copy and paste. It takes me quite a bit more time vs. just typing the code and putting up a link, but I really agree that having to type the code in is fairly important.
- foobarbazoo 16y agoI find it surprising and sad that this comment has the most points on HN. The poster may not have cheated in school, but he/she clearly has a bad case of sour grapes. You're not helping him/her by upvoting their post, though if you are a cheater, it definitely pays to do so -- you want as many people as possible to be pissed off in the face of "rampant" cheating. Pissed off people do poorly in life, as a general rule. In fact, given a choice between cheating and being pissed off, most people would be better off cheating. Didn't your parents ever tell you that life is not fair?
- eru 16y agoRe-using somebody else's code is fine. The test should just make sure that you understand that code. Understanding foreign code is as hard as writing your own.