HW09: Efficient Routing due Mon 10 Nov 10:00

\begin{purpose}
For this assignment you will:
\begin{itemize}
\item Implement D...
...e plugged in to the graph-drawing
program {\tt dot}.
\end{itemize}\end{purpose}

Context

In all you do please remember that being a part of CSCI@HSU means DOING THE RIGHT THING.

So, do this assignment in a way that demonstrates integrity, develops competence, is correct, and honors God ... because what we do matters!

Allowed and Disallowed Resources

In completing this assignment you MAY use/access the following resources:

You may NOT use/access:

Failure to abide by these guidelines will result in a zero for the assignment and the incident will be reported to the university provost as a violation of the university academic integrity policy. A second incident of academic dishonesty (whether from this course or another computer science course) will result in an F in the course.

Overview

The instructions for the assignment are given here: https://youtu.be/0YK2y4_Ypik

After watching the video, create a hand-written UML diagram. Take a picture of it for your records and give the physical document to the instructor on the day the assignment is given (NOT the due date).

Sample Input and Output

The input is an adjacency matrix which is interpreted in the video. This is what the network1.txt input file looks like:
6 0
0    0    0    250  190  52
0    0    39   0    0    85
0    39   0    0    133  0
250  0    0    0    0    155
190  0    133  0    0    0
52   85   0    155  0    0

As explained in the video your output needs to in dot format. Below is the output of my program for the input file above. You may find it helpful to paste this code in to the online dot editor at https://edotor.net/ to get a feel for what the various commands do. You will need to produce your output in this format. Again, details of the requirements are given in the video.

graph solution {
  node [shape="circle", fontsize="6", width="0.6", fixedsize="true"];
  R0 [label="R0\n0 ms", shape="doublecircle"];
  R1 [label="R1\n137 ms"];
  R2 [label="R2\n176 ms"];
  R3 [label="R3\n207 ms"];
  R4 [label="R4\n190 ms"];
  R5 [label="R5\n52 ms"];
  R0--R3 [style="dotted"];
  R0--R4 [style="bold"];
  R0--R5 [style="bold"];
  R1--R2 [style="bold"];
  R1--R5 [style="bold"];
  R2--R4 [style="dotted"];
  R3--R5 [style="bold"];
}

Grading

Prior to the due date you will push your completed work to your repository where it will be graded. Your program will be graded according the following criteria:

OOP Design 5 pts
Correctness/Completeness 20 pts
Documentation/Conventions 3 pts
Unit Tests 6 pts
Version Control 2 pts
Total 36 pts

Here are details regarding expectations for each category listed above:

OOP Design
Full credit is earned if the design is presented in the correct format, on-time, follows OOP design principles, and does not require substantial modification to be implemented. The design should be hand-drawn, should use customary UML notation (including types and showing inheritance) and must be physically turned in (email submissions will not be accepted). The design is due by noon on Thursday, Nov 2 at noon.
Correctness/Completeness
Full credit is earned if the program meets all requirements and if it works correctly without any needed tweaks or modifications.
Documentation/Conventions
Full credit is earned if all classes and methods are documented using JavaDoc format and if Java programming conventions are followed. The specific guidelines can be found here: https://hsutx.instructure.com/files/folder/courses_13381?preview=3026424
Unit Tests
Full credit is given if every major section of code is covered by unit tests that provide excellent coverage of the functionality of the the program. This may require some refactoring of your code to allow for programmatic measurement of its components.
Version Control
Full credit is given if there are a reasonable number of commits throughout the assignment (one commit is not enough) and if those commits have been pushed to your bitbucket account prior to the due date.