Working Together
(The following standards were written by Dr. Embley. If you have any questions about the appropriateness of working together, you should talk to your professor.)
You may work together with other members of the class; however, do not turn in other people's work. There is a fine line here that may require some judgment on your part. Your objective when working with others should be to maximize your learning and the learning of others. You maximize everyone's learning when you help each other come to a greater understanding, but not when you accept or provide an unacceptably easy way to complete an assignment. (There are no shortcuts to learning.) Examples of acceptable collaboration: discussing ideas and concepts related to assignments and projects; posting general questions and/or general answers to the class newsgroup; developing high-level pseudo-code and sketching out data structures for a project; and working on homework problems in a study group in a way that enhances everyone's learning.
Examples of unacceptable collaboration: copying homework answers; allowing someone to copy your homework; using a copy of the provided homework answers; using parts of another person's code to complete an assignment; allowing someone else to use parts of your code to complete an assignment; copying solutions or parts of solutions from group-work notes or TA-consultation notes; and accepting help from a TA or classmate without really internalizing the material yourself so that you cannot fully claim the work you turn in as your own.
Coding Standards
The following Code Conventions for the Java Programming Language should be observed in Java programs turned in for credit in the Department of Computer Science. You should consult your course syllabus for class-specific changes. Many of the same conventions can be applied to C++ programs.
The standard Java conventions: http://www.oracle.com/technetwork/java/codeconvtoc-136057.html
In addition to the Java conventions, the following basic standards should be followed in writing code:
- Include your name in the source code for each program
- Define inputs, outputs and the purpose in a comment header for each method
- Programs should be separated into methods according to functionality. Avoid excessively large methods and files (a method with more than 10-20 statements is considered excessively large to some people). Each function should accomplish a single, well-defined task.
- Do not replicate the same statements at several places in your code. Instead make the common code a method and call it where that function is required.
- Avoid global variables. When they must be used, note the side effects in the comment header for the method.
CS Account Policies
Please also see the BYU CS Department Account policies page for policies and standards regarding using department resources (accounts, equipment, etc.) and working in groups. This page also has consequences for breaking policies and standards.