Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations IamaSherpa on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Is plagiarism a risk to the future of quality programing? 1

Status
Not open for further replies.

lionelhill

Technical User
Dec 14, 2002
1,520
GB
This is just a philosophical moan, and perhaps a warning for something which I feel threatens the future of good quality IT altogether.

It's triggered by a recent thread in the assembly forum. Someone posted quite a reasonable question, another person posted quite an elegant solution, I pointed out a minor error, other person corrected it, and first person said thanks, we'd just completed his homework very nicely.

We actually teach people to reuse code. It's one of the first lessons people learn: if you can possibly get your code from anywhere else, a library, a previous application, then don't write anything yourself.

Is it any surprise that there are heaps of budding "programers" out there who reckon their best strategy to do homework is post it on enough sites that someone answers it by mistake?

If no one is doing their homework any more, where are all the good programers going to come from? And when all these wretched cheats get good certificates and jobs, what sort of quality of product are we going to get from them? Already software engineering has a poor reputation for success-rate and reliability compared to most other branches of engineering (how many bridges get left half-finished, change specification half-way-through, or fall over because of design faults? Some, but not many). How much worse is IT likely to get?

OK, moan over... Life probably isn't sooo bad.

 
And how are those learning programming any different from accounting students, chemistry students, history students, english students, or any other students?

These other students haven't done the same thing as these programmers you are "moaning" about?
 
Perhaps "software engineering" is a misnomer.

Perhaps it should be called software sculpting.
 
When you see students posting, go ahead and red-flag them. They're in violation of the site's terms of use.

Read more at:

Chip H.


____________________________________________________________________
If you want to get the best response to a question, please read FAQ222-2244 first
 
lionelhill said:
And when all these wretched cheats get good certificates and jobs, what sort of quality of product are we going to get from them

My current employer views certificates etc with some distrust, and I would doubt that he is the only one to do so. We've recently been interviewing for various support posts and resorted to devising a practical test (to be taken under exam conditions) based on real world problems that we've encountered. These have proved considerably more reliable in determining actual technical ability. We intend to use this approach when hiring development staff in the future.

I doubt that the future of IT is really threatened - it's been my experience that bluffers are always unmasked eventually, and that the recruiters learn quickly from their mistakes. I suspect however that the recruiting agencies who put too much faith in paper qualifications without an understanding of the demands of the industry will suffer the most.

TazUk

[pc] Blue-screening PCs since 1998
 
Question,,, is assembler, still that useful of a programming language???

Or was a professor,, simple trying to show his students,, how things use to be.???

 
Question,,, is assembler, still that useful of a programming language???

Write a simple program to put "Hello World" on the screen in VisualBasic, then compile it. See how big it is.

Now, write it in Assembler. ;)

Let's face it... our computers run machine language. Assembler is the down-and-dirty twiddly-bits way of doing it. It's as close to machine language as you can get without actually going in and putting in the 1's and 0's.



Just my 2¢

"In order to start solving a problem, one must first identify its owner." --Me
--Greg
 
With assembler you realize that people who say Basic's GOTO command is evil don't really understand what is going on under the covers with labels and jumps.
 
Thanks, all. You've encouraged me. I did red-flag the thread, though thinking about it later, the best thing is probably to leave threads like that on display for a few weeks (who knows, maybe the lecturers who set the homework keep an eye on sites like this to pick up the cheats?) but of course red-flagging should get the miscreant chucked off the site (briefly, until they re-register with a new name).

Incidentally, jmd0252, I sort-of feel that while assembler is very useful (yup, gbaughma!), the assembler thread on tek-tips is often abused by students. I shall be more careful about answering in future.

Really I feel a bit sorry for cheats; they're missing out on the warm feeling of knowing you are professionally capable of doing a good job.
 
'Assembler' is appropriate term--higher level languages assemble complete programs from pre-built assemblies. In the past with 3GL languages these assemblies may have been built with true assembly language. Then 4GL's may use stuff built with 3GLs, but often people are now building programs using 4GL's built with other 4GL assemblies.

And that's not necessarily bad--we are taught to reuse, whether it means reusing at the literal, high level by copy/pasting entire blocks of code, or at a lower, object level, which is what I believe the true meaning of 'reuse' means--class inheritance and polymorphism.

Anyway, a lot of these people who get their homework done here and other tech forums won't necessarily be programmers. Either they'll never get hired because it will be obvious in the interview that they're clueless, or--more likely--they were taking the programming class because it was required for some other area of study, and they never plan to write a line of code in their lives anyway.

Case in point was my brother-in-law. He's a network guy, never has or will need to write code--even script--but he had to take a MS Access course as part of the curriculum. And yes, I helped him, and I don't for a minute think it made him less skilled or knowledgeable at configuring a router than had he been forced to learn the intricacies of creating a Form in MS Access.

I understand that the higher-level abstract concepts of problem-solving, etc, are things that *any* course may have, and therefore cheating in any class regardless of whether you need it is a negative. But I felt, in this case, it was wrong to require this class for the school's 'network engineer' curriculum--they may as well have added 'Famous Ancient Painters' as a course--failing that course would have as much bearing on his network abilities as failing Access.
--Jim
 
About the only thing left to be said is this culture of reuse. I think it's always had to have been there, but it's much more prevalent these days. Actually, I describe this change as moving from "programming" to "librarian".

In most instances of the modern languages, all one would do is keep track of all the tinker-toys in the library and then select and put together the ones the application needs. Now this is a good thing in a lot of ways (like GUI programming), since certain wheels don't have to be reinvented and tested again.

The bad thing, however, is that you get people coming out of school with nothing but access to this kind of stuff, who (you guessed it) have no idea about doing anything else BUT put together the tinker-toys. As a result, you get questions in these programming forums asking for "components" to do a particular job, which often is a simple one.

They can't do the simplest thing that's considered "programming"!

Bad for the future of quality programming. For sure.
 
The crazy thing about this is that back in college, I remember a professor telling our class that if we liked something (this was a HTML/web design class - so I know its different) just view the source and copy what part you do like about it.

His theory was that you could retype it while using your own pictures, but this way it would save time. A couple of us asked in the class why this wouldn't be the same as plagerism.
I can't remember how he responded to our question...probably wasn't enough to convince me.
 
quick thoughts
- may not be plagerism if it's not copyrighted?
- intellectual property? it's not the words but the concepts
regards,

i remember in college being specifically told not to share / copy code. you need to work on it yourself to understand the concept(s). i can understand this train of thought for deep logic - such as an mrp system - but fail to see it the same way when setting up a basic loop and using pseudo code of:
for i = 1 to j i++
dp some work with i and some other stuff
end

regards,
longhair
 
Straying slightly off the original point of stolen homework, I have got one caution about using other people's wheels instead of reinventing them.

There are cases where performance matters, and the problem is much more limited than the general case wheel. It'd be really nice if more application designers recognised when this is the case and wrote their own efficient wheels to answer the limited case.

This is made worse by super-good hardware: programers using the best top-of-the-range hardware are sometimes unaware that the acceptable 5 second response time on their machine expands to a mind-numbing 2 minutes on the sort of machine available on an average desk.
 
It'd be really nice if more application designers recognised when this is the case and wrote their own efficient wheels to answer the limited case

Most programmers have no clue of things related to performance if it smacked them in the face. Expecting this is like expecting a blind man to successfully drive.

While this is a valid point, I think most teachers are just glad they can manage to teach anything to most people, and most business is just concerned with producing a final product.
 
But isn't programming more than just writing code? If these students decide to cheat their way through school what hope do they have in a landing a successful IT job. Not evreything is cut and paste technology. Sometimes you actually have to do the problem solving and coding to create a final product. If they cheat, their in for a rude awakening in the real world.
I was put in a position on my job that required me to know langauges I knew nothing about. The tech lead kept saying to me to copy another groups code and tweak it. I kept telling him there was more to it than just copying code. After some failed attempts at trying this I was removed from the team. Later they realized how complicated this was, and moved some more experienced programmers on to the team.
So will copying code work for them? No. does this mean were doomed? I doubt it, but there will always be bad programmers.
 
You know, while reading this post, a thought occurs to me.

Car and tire manufacturers reinvent the wheel all the time. Safer, better wear, better traction...

Writing modular code is, of course, nothing new. Having written hundreds of thousands of lines of code myself, I try to remind myself to use modular code. If I can re-use, for example, a piece of code that puts data on the screen, or processes a form, I'll reuse it.

I think the key point here is understanding. If you don't understand the nuances of the code, then you're just cutting and pasting and hoping it works.

By the same token, I've picked up hundreds of tips and tricks by looking at someone else's code and figuring out how it works; saying "Oh, that's a cool way of doing that." But I consider that part of learning.

A comparison I use often is that of legos. Legos are generally the same shape; but if you have *enough* legos, you can build just about anything that you wish. Good modular code should be the same way, using a standard set of practices so that the code *can* be reused as your project develops.

And, I hate to say it, but Microsoft (shudder) has been doing this for a long time, especially in the case of things such as printer drivers. I remember the old "Dos" days when I was coding, and having to write my own printer drivers to make things work properly. When I was teaching intro to computer classes, I would draw puzzle pieces representing the printer drivers. The piece had the same "left side", which plugged into the software, but different-shaped "right sides" that plugged into the printers. That visual helped people understand that different hardware could be made to work with the software, as long as you had the proper "puzzle piece" to make them fit together.



Just my 2¢

"In order to start solving a problem, one must first identify its owner." --Me
--Greg
 
Techx,,

Wonderful Point,, is programming more than just writting code?? As stated before,,, we all reuse code. If we have a piece of code that draws 2 legs and a nose,, (for example),, then every time we need to draw 2 legs and a nose,, voila,, we re-use our code. And If I find a really good way, to prompt, in acess for a date,,, hey I will use it.

What I think is the real question, is the problem solving question. Code and computers are used to solve problems. Humans have always been great tool users. Code and computers are tools that let us solve problems. But it comes down to how we use the tools to solve the problems.

Programmers are problem solvers, and solution inventors. Code and computers are our tools, we use to do our jobs.

Comments??
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top