What is acceptable as "your own work"
Programming in a way is unlike most other types of creative work. It is a very creative process but we often desire the end product to be standard as policy. We often use others' ideas and sometimes even their code. However, it is essential that you learn to program on your own before adapting others' code. It is essential that you learn the fundamentals of programming and this can only be done by figuring things out on your own. But getting help from others is an essential skill that you develop from day one! How do you know if you are getting acceptable help or by passing the learning and cheating yourself from the experience developing a given program was to help you achieve? Below are some guidelines that should help!
- When in doubt, always ask your instructor. Asking your instructor and using his/her help is AWALYS acceptable and ALWAYS a good thing. The instructor knows how much to help without helping too much!
- You should always understand the code you turn in! If you don't understand code or an algorithm that you have turned in, you have short-changed yourself.
- Implementing an algorithm covered in class or found in the textbook for the course is always acceptable (unless explicitly stated otherwise). That is what the textbook is for. However, you learn more if you study the algorithm and then implement it yourself without referring back to the textbook after you understand it (except for debugging help).
- Using code covered in class or from the textbook for the course is also acceptable (unless explicitly stated otherwise). However you learn much more if you implement it from the algorithm. Referring to the textbook code to help in debugging is acceptable, but try to debug yourself first!
- Finding the algorithm online for a standard problem can be okay under some conditions. But no matter what, document the source of the solution (where and who)
- Refer to the second point above.
- If it the same algorithm in the textbook and you don't have the textbook with you. However, for a many algorithms, there are often a number of ways to express it. For example, sometimes you can count up and sometimes you can count down. There is probably a good reason for the form of the algorithm covered in class or in your textbook. You need to be aware of this.
- If it is a standard problem (such as a particular sort) and you look it up (in sometime like Wikipedia) that will usually be okay (given the thoughts expressed earlier). Include a comment as to where you got the code.
- If it is a solution to a problem assigned in class, you should not use online resources for that without checking with the instructor first. If this is allowed, you must include a comment as to the source of the solution and the author!
- Getting help from a classmate
- Getting help debugging a specific section of your code from your classmate is acceptable as long as you understand why the changes were needed and what they did. Document who helped you and what the help was. A comment covering a section of code is acceptable.
- Developing the program together from scratch and them writing the code is not acceptable (unless it is a teamwork assignment). The work should be primarily your own/ You should not work together and then make two copies of the code!
- You should never take an electronic copy of a program written by someone else and turn it in as your own. Just changing style (variable names, comments, etc.) does not make it your own!
- You should never type in (or scan in, etc.) a program written by someone else and turn it is as your own. See previous.
- You may be allowed to use code provided in class. In that case, you should also document who is the original author (even if that person did not document it.)
- It is not often a good idea to get help from a professional programmer. Typically that person is not skilled at helping you learn the objective of the assignment and will often give a more complex solution that is appropriate at that level. Simple help (sometimes with finding an error) can be useful when provided by a professional, but it is best to talk about this with your instructor if you think this is sometime that might be of help to you.
Suggestions to help
- Waiting until the "last" moment makes it very hard to get help esp. from the instructor. The last "day" of a programming should be left to final testing, cleaning up, and writing the report.
- Start right away to make sure you understand the problem and how long it will take. After you understand that, then you have enough information to decide when you need to work on it next to get it done.
- When in doubt, ask yourself: "Am I just trying to get it done?", "Will I learn something from doing it on my own?". If these questions lead you to think that maybe it is okay to use other resources, just ask your instructor. He/she will think better of you for asking!
- Refer to the textbook, your notes, and resources provided for the class by the instructor! These are designed to help you.