Rubric

The teaching assistants will use the following rubric to evaluate your submission.

Please note, we reserve the right to change this rubric without advance notice, even after the submission deadline. However, the chances of doing so are slim, and at any rate, should not be a significant change.

General
  • TAs: A submission that does not contain files about this exam (e.g., the student submitted solution to a different homework), or one that only includes the starter code, do not meet any of the specifications of this rubric (under any of the "required," "satisfactory," or "complete" categories). In such a case, please check this item to flag the submission and immediately inform the head-TA.
    Note: We may consider evaluating an earlier submission if it exists.

  • TAs: A submission that fails to compile or run (or that it runs but times out or crashes) on Gradescope inherently fails to meet any of the specifications of this rubric for implementation (under any of the "required," "satisfactory," or "complete" categories). In such a case, please check this item to flag the submission and immediately inform the head-TA. Please evaluate the submission for testing and on the merit of their discussion.

  • TAs: A submission where the starter code is modified in ways that were not allowed will not meet any of the specifications of this rubric for related implementation (under any of the "required," "satisfactory," or "complete" categories) irrespective of passing any of the auto-tests. Please evaluate the submission for testing and discussion sections. Moreover, check this item to flag the submission.

Required
  1. Spec: The implementation of the constructor of RasterUnionFind is almost but not quite correct.
    TAs: The specification is met if all but a few of the related auto-tests pass. Please skim over the code. Please don't consider the efficiency or style of the implementation here.

  2. Spec: The implementation of the find operation of RasterUnionFind is almost but not quite correct.
    TAs: The specification is met if all but a few of the related auto-tests pass. Please skim over the code. Accept a non-recursive but correct implementation. Please don't consider the efficiency or style of the implementation here.

  3. Spec: The implementation of the union operation of RasterUnionFind is almost but not quite correct.
    TAs: The specification is met if all but a few of the related auto-tests pass. Please skim over the code. Please don't consider the efficiency or style of the implementation here.

  4. Spec: In RasterUnionFind, they correctly implemented the requested helper methods getX and getY.
    TAs: Please check the code. Please don't consider the efficiency or style of the implementation here.

  5. Spec: The implementation of RasterUnionFind exhibits good practices for writing readable code (such as consistent indentation, etc.) and good programming style (e.g., helper methods are made private, etc.).
    TAs: This specification is not met if there are any checkstyle errors (including errors related to MethodLength and CyclomaticComplexity). In addition to checkstyle mistakes, you also need to check the code manually to ensure, e.g., variable and method names are clear, concise, and descriptive; duplicate code is refactored into a helper method and reused; etc.

  6. Spec: In ImageRegions, they fixed the checkstyle issue of Cyclomatic complexity for labelRegions method .
    TAs: The specification is met if there is no CyclomaticComplexity checkstyle error.

  7. Spec: In ImageRegions, they fixed the checkstyle issue of Method length for labelRegions method.
    TAs: The specification is met if there is no MethodLength checkstyle error.

  8. Spec: In UnionFindTest.java, they added a unit test to UnionFindTest that is sufficiently different from the provided one.

  9. Spec: In UnionFindTest.java, they added another unit test to UnionFindTest that is sufficiently different from the provided one and their other unit test.

Satisfactory
  1. Spec: The implementation of the constructor of RasterUnionFind is entirely correct.
    TAs: The specification is most likely met if the related auto-tests pass. Please check the code carefully. Please don't consider the style or efficiency here.

  2. Spec: The implementation of the find operation RasterUnionFind is entirely correct.
    TAs: The specification is most likely met if the related auto-tests pass. Please check the code carefully. Do not accept a non-recursive implementation. Please don't consider the style or efficiency here.

  3. Spec: The implementation of the union operation RasterUnionFind is entirely correct.
    TAs: The specification is most likely met if the related auto-tests pass. Please check the code carefully. Please don't consider the style or efficiency here.

  4. Spec: In RasterUnionFind, they correctly update the count.\ TAs: The specification is most likely met if the related auto-tests pass. Please check the code carefully. Please don't consider the style or efficiency here.

  5. Spec: The labelRegions method in ImageRegions is correct (no error after refactoring) and does not perform any unnecessary work.
    TAs: There should not be any related checkstyle error. Please check the code carefully to ensure no unnecessary work is performed.

  6. Spec: In the README.md file, the explanation of "how the ImageSegmentation program works" is (mostly) correct and coherent.

  7. Spec: In the README.md file, the asymptotic analysis of kruskal method from ImageSegmentation is almost but not quite correct.
    TAs: At most two mistakes are acceptable!

  8. Spec: In the README.md file, they make a coherent argument in their answer to the question about "Kruskal vs. Prim," even if the answer is not quite correct.

  9. Spec: In the README.md file, they make a coherent argument in their answer to the question about "apparent path compression in RasterUnionFind implementation," even if the answer is not quite correct.
    TAs: Please check the README.md file.

Complete
  1. Spec: The implementation of RasterUnionFind does not involve any unnecessary work.
    TAs: Please carefully inspect the source code.

  2. Spec: In the README.md file, the asymptotic analysis of kruskal method in ImageSegmentation is entirely correct.

  3. Spec: In the README.md file, the answer to the question about "adding duplicate edges to the priority queue" is correct, and the argument is sound.

  4. Spec: In the README.md file, the answer to the question about "lack of cycle detection in kruskal method" is correct, and the argument is sound.

  5. Spec: In the README.md file, the answer to the question about "Kruskal vs. Prim" is correct, and the argument is sound.

  6. Spec: In the README.md file, they make a correct and sound argument in their answer to the question about "apparent path compression in RasterUnionFind implementation."