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.
-
The instructor and TAs are available to assist you. Make use of them.
-
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.
-
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.
-
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.
-
Programs must have proper inline documentation and must be properly
indented. Points will be deducted for poorly documented and/or
poorly indented code.
-
All submitted code must compile correctly. Code that does not compile
will receive no credit.
-
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.
-
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.
-
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.
-
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.
-
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.
-
The grading will differentiate between clumsy and elegant code.
-
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).
-
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).
-
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.
-
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.
-
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.
-
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.