On Thu, 17 Jan 2002, fooler wrote:
> > some student just copy their classmates work and then do cosmetic > > search-and-replace. > > that is what we called reverse-engineering.... still part of the educational > system.... many professional programmers are doing this... Reverse engineering is when you have the binary executable and try to reconstruct the source code from it. In the situation that I cited above you have the source code, and you just made it look different by changing the names of variables -- this is what I meant by "cosmetic search-and-replace". Many professional programmers actually copy from the source code published by others. If the source code is public domain, then you don't need to do anything special. Binary search, heap-sort, etc.,are all public domain now, and so you do not need to give credit to Hoare and company. If the program you are copying is open source GPL, you can still copy, but you are bound by GPL to cite the original authors, and in some cases you may not even modify their original sources -- you can only apply your modifications as patches. And you must make your own program GPL, or Stallman will run after you. In most cases, when a professional programmer copies source code belonging to others, he can not do so without the written permission of the original authors. If a student programmer from Ateneo copies published work, such as a device driver, written by another, and does not give credit to the original, the teacher can give him an F in the course, and the Discipline Committee can expel him from the University. This is blatant plagiarism and intellectual dishonesty. There is at least one case in which the Jesuit fathers have been upheld by the courts, when a student copied someone else's program and he was expelled from school. > > Let us write a program that > > is correct in the first place, so that there is no need to debug it. > > nahhhh i dont believe in this.... creating a mistake makes a person or a > programmer more intelligent... so therefore dont expect a newbie programmer > to perfect this kind of philosophy... I believe that if a student makes one syntax error in a one-page C program, correcting the error is a learning experience. The student becomes a more careful typist. A runtime error (say a semantic error, say division by zero, or extracting the square root of a negative number, or allowing age to be negative, etc) in a one-page C program should have been avoided in the first place if only the student had time to think out the program first. Now if we carry this logic to "programming in the large", then 10,000 errors in syntax or semantics in a 10,000 page program are just unforgivable! The fact that programmers (student or professional) are making so making errors in the programs that they write have prompted computer science research to look into formal methods (see http://www.afm.sbu.ac.uk/. This site defines "formal methods" as fault avoidance technique that help in the reduction of errors introduced into a system, particularly at the earlier stages of design. They complement fault removal techniques like testing). But one need not go into these "formal methods" thing to write programs carefully. When given a programming problem, instead of going to the computer right away, the prudent thing to do is to study the problem first, maybe go to the library and look up existing solutions, or at least find the formulas that are needed by the problem or ask the experts for help. Then you can sit down and write the code carefully (or do it on your computer if that is what you are comfortable with). The worst thing that a student can do is wait until the day before the deadline and hope that he can finish the program overnight! PMana _ Philippine Linux Users Group. Web site and archives at http://plug.linux.org.ph To leave: send "unsubscribe" in the body to [EMAIL PROTECTED] To subscribe to the Linux Newbies' List: send "subscribe" in the body to [EMAIL PROTECTED]
