Assistance for an assignment can be obtained from a number of sources:
The scope of collaboration deals with the extent to which the completed work is a product of collaboration. Did the collaboration just concern a single sentence in a 20 page effort? Or was the design of 25% of a computer program affected.
While scope deals with the quantity of assistance received, degree deals with the quality or depth of assistance received. Different degrees of assistance that can be defined include the following:
It is important to understand the difference between plagiarism and permitted collaboration. Plagiarism can be defined to be "the deliberate copying, writing or presenting as one's own the information, ideas or phrasing of another person without proper acknowledgment of the true source" (http://www.jmu.edu/judicial/handbook.html, 08/10/02). If one includes the work of another without proper citation, one is guilty of plagiarism and may be subject to honor system sanctions. If one includes the work of another with proper citation but the use of another's work is not permitted in completing the assignment (one submits an English paper that was copied in its entirety from someone else but the original author is properly cited), there is no plagiarism but the work submitted does not satisfy the assignment requirements. Although honor system penalties will not apply, the grade for the assignment may be reduced, even to the extent that no credit is given, because the requirements were not met.
The offense of plagiarism is far more serious than the offense of failing to meet an assignment's requirements. Whenever using the information, ideas, or phrasing of another person in one's work, cite the original author unless you have received explicit instructions that citing the original author is unnecessary. Including a citation where it is unnecessary does no harm. Failing to include a citation where it is necessary can get you expelled from school.
The first thing a student must do in working on an assignment is understanding what the assignment is asking them to do. One must understand the assignment specifications before one can satisfy them.
In many courses, this step is the same as the previous step. Program specification answers the question, what must the software that you are creating do? That information may have been specified in the assignment specification or it may be something you will have to determine. With detailed program specifications, one should be able to determine what the program's output should be for any input.
Large problems are often broken down into a collection of interacting problems that can be solved independently. The design of a solution involves decomposing the problem into these smaller units and defining the interaction between units. It is in many ways similar to developing an outline for an English paper (although much more detailed). In beginning programming courses, program design may be performed by the instructor.
Next, one must create the program code. This typically involves a process of refinement where one begins by creating a code "outline" (similar to an outline for a paper), possibly using some form of psuedo-code. The statements in the outline (or psuedo-code) are progressively made more precise until they evolve into actual statements in the programming language.
Compile and Link
Code that has been created must be entered into the computer. The programmer must know how to use basic system commands or menu options for manipulating files, how to use an editor to enter code into a file, how to compile and link the source code into an executable, and possibly how to electronically submit the program to the course instructor. Compilation typically results in syntax errors which must be corrected. This step is analogous to using a word processor to enter the text of an English paper and to check and correct spelling and grammar mistakes.
Testing and Debugging
Once there is an executable, it must be tested. With testing comes the discovery of bugs which must be removed. With testing and correction of bugs, one must step back to earlier tasks in the process. The resolution of a bug encountered during testing could lead back to changing a program design for one or more of the solution components.