Data Structures Submission Requirements

Grading
Annotations
Packages
Exporting and Submitting

Grading

Much of the grading for this course is automated. Because of this, you must be careful to follow the instructions exactly. Filenames, directory names, and annotations should all be written precisely to avoid confusion by the automated system. Submission should be done according to the instructions. Mistakes mean extra work for the grader and instructors, and will result in undebatable loss of points.

Programming Tips

Start early and test often. Attempting to write an entire program without testing is asking for trouble. When you are done with a data structure or class, create a public static void main(String[] args) within the class that creates instances, tests methods, and prints the results.


Comments

Each class should start with a comment block that includes:

Annotations

To use automation for this course, we require incorporating annotations to describe the code being written. For this we have five annotation interfaces. SpaceComplexity, TimeComplexity, TimeComplexityAverage, TimeComplexityAmmortized, and TimeComplexityAverage. Each of your data structures should have a SpaceComplexity annotation at the top, and at least one of the Time Complexity annotations for each method. Valid values for the complexity are: "O(1)", "O(n)", "O(n^2)", "O(n^3)", "O(lg n)", "O(n lg n)", "O(n^2 lg n)", "O(2^n)", and "O(?)", though some may be added later. The "O(?)" should only be used when complexity isn't relevant.

To use the annotations, simply add the correct annotation above the method or class name:

@TimeComplexity("O(n)") METHOD_DECLARATION

Be sure that each of your annotations exactly the same as one of the annotations listed. Note that the notation is a capital 'o', not a zero.

TCJ & SCJ comments

Each non-trivial method should include special comment blocks that begin with the letters "SCJ" or "TCJ" that justify the time cost (TCJ=Time Cost Justification) or space cost (SCJ=Space Cost Justification). These will be highlighted in a special color so the grader can clearly see your arguments for your anticipated time and space costs.

Packages

The book uses a number of interfaces and exception classes that you will need. These are included in a package called net which are included in each assignment and on wopr. The assignments will include all the interfaces for that assignment, but the package in wopr includes all interfaces from the net package. When you submit, you must submit the net package with your code. Do not rename the package, or put it inside another package. This is important for the automated grading.

You will be writing a number of data structures through this course and annotating them. The structure for the data structure implementations, and annotation definitions will be in a package called cs2321. These will be provided for you in the assignment.


Exporting and Submitting

You must submit a program without errors. You may make multiple submits - the grader will grade the last program submitted before the due date. (Note: Anything submitted after the "official due date" and before the "resubmit date" will be considered late and will have a 10 point penalty (1 letter grade).

Exporting your Project

You must export your project to an archive file from Eclipse - DO NOT simply "zip" it up from your file browser. To export your file:

  1. Select File → Export
  2. In the "Select a Destination" pane, Select General → Archive
  3. Hit the "Next" button
  4. Select the checkbox for just the project that is due.
  5. Many people have performed this step incorrectly. If in doubt, skip it and submit everything. Use the down arrow and deselect the bin directory, but be sure that the src directory is selected.
  6. Select the archive name and destination. Assignment #1 should be submitted as prog1.zip, Assignment #2 as prog2.zip, Assignment #A as progA.zip, etc.
  7. The default settings should be sufficient, but double check that:
  8. Hit the "Finished" button

Submit

After you have exported your project to progN.zip (where N is the number/letter of the assignment), use the command submit to turn your program in. (Note: this is only available on CS lab machines. If you are not working in a lab, you will need to either come to campus or transfer your file and remotely login to complete your submission)