COP 3530

Data Structures and Algorithms

University of Florida

Assignment Guidelines


Here is a partial list of things to keep in mind when doing your assignments.

  1. The instructor and TAs are available to assist you. Make use of them.
  2. Start working on an assignment the day it is given to you. Allow sufficient time for unexpected events such as computer failure, loss of files, power outages, software corruption, having to leave town for a few days, and so on. None of these events is considered a valid excuse for a late submission.
  3. Before you start an assignment look at the .java files for similar programs from the text or for similar exercise solutions. (You should have downloaded a zip file that contains these .java files) See how the code is set up. See how the test is done. Note that the tests in the files you have downloaded are not complete tests, because these tests do not cover all cases that may arise and in some cases do not even exercise all statements in the code. For your homework problems, your tests must exercise all statements in your code and must also cover all logically different cases.
  4. Although the most important attribute of a program is correctness, the grading of solutions will also take into account other measures of quality such as time and space efficiency, elegance, documentation, etc.
  5. Programs must have proper inline documentation and must be properly indented. Points will be deducted for poorly documented and/or poorly indented code.
  6. All submitted code must compile correctly. Code that does not compile will receive no credit.
  7. All code must be tested for correctness regardless of whether the problem specifically asks you to do this. Code that has not been tested will receive no credit.
  8. When doing an assignment, you may use any of the classes developed in the text. You may also read and learn from the solutions posted on the Web. However, unless otherwise stated, you cannot use (or cut and paste from) any of the classes developed as solutions to exercises either in the text for this course or in other texts. You can customize code that is available on the Web site for the course text. Basically, your solution needs to be what you would have developed in the absence of the exercise solutions available on the Web site. When in doubt, seek a clarification from the TAs or the instructor.
  9. When a problem asks you to do something from scratch, you must do that problem without the use of any class developed in the text or obtained from any other source. Unless otherwise stated, your ``from scratch'' code will employ only primitive data types. Consult with the instructor or one of the TAs if you have any doubt about what ``from scratch'' means. Failure to comply with the ``from scratch'' requirement will result in loss of all credit for that problem.
  10. When a problem states that your code/algorithm must run in O(f(n)) time, this becomes a minimum requirement. Failure to meet this requirement will result in no credit or loss of almost all credit.
  11. When a problem does not specify a required complexity, the grading will differentiate between efficient and nonefficient code. For example, suppose you have a method methodA that has five lines of code. You are in situation where you can either invoke this method or write one or two lines of new code to accomplish the task (this typically happens when methodA performs a number of checks that are redundant in your particular situation and/or has one or more loops that iterate zero or one time in your situation). In such a situation write the new code to get improved performance.
  12. The grading will differentiate between clumsy and elegant code.
  13. All issues with respect to the grading of an answer (whether assignment or exam) must be resolved within 2 weeks of the date when graded work is returned (this is the date when the graded work becomes available for pick up, not the date when you actually pick up the graded work).
  14. To resolve a grading problem, first attempt to resolve the problem by meeting with the person who graded that piece of work. If the problem remains unresolved, see your section TA and then the instructor (if necesssary).
  15. When a problem asks for an instance method you must develop an instance method. Similarly, when a static method is asked for, you must develop a static (i.e., class) method. When the method name and/or parameters are specified, you must use that name and/or parameters. Failure to do so could result in loss of all credit.
  16. When a problem asks you to add a method to an existing class you may optionally extend the class rather than change the file you downloaded.
  17. When you write a method, remember that this method is to work for all possible inputs. Not on just your test inputs. So you must test for all conditions that might possibly arise; throw exceptions as needed; and do not do extraneous things from the method (like output messages, etc. unless the method specification calls for this). Throw exceptions rather than print out error messages from within a method.
  18. Although inter student interaction is encouraged, you must write your answers yourself. When you write your answers yourself, no two answers will look alike. Answers that look alike will earn no credit and are subject to being reported to the appropriate authorities.