CSCE 221: Data Structures and Algorithms

Sections: 507, 508, 509
Fall 2015



Programming 4


Due Date: Dec. 7th


Assignment

In this assignment, you are tasked with implementing the graph ADT using an adjacency list implementation. As usual, there will be a code portion and a report portion to this assignment.

In addition to the regular portions, you are allowed to do this assignment in pairs. If you choose to have a partner, they must be from the same lab section (unless otherwise approved), and you will be required to do more implementation/reporting.

Code

At a minimum, you must implement the following for your graph:

Report

For each algorithm you implement, test performance of your graph on a planar mesh (each vertex has degree 4 essentially, it is basically a grid), a complete graph, and a random connected graph (start with a connected line of vertices, then add random edges). After doing base performance measures also determine big-oh constants for the algorithm for mesh-input. The report should include the following sections:

Bonus

Each extra algorithm and graph implementation that is implemented and analyzed can receive bonus points. Note if you are working in pairs, bonus points will be split between partners. Interfaces for such extra functions should follow this algorithms file.

Competition

I am curious which person/team can create the best implementation of a graph. Those wishing to participate in a competition can submit their graph.h and graph_algorithms.h files the night before the due date (emailed to me). The lecture period of, I will run a live timing test to see which team generates the best graph implementation. The winner will receive a special prize!


Grading Rubric

Each assignment composes 4% of your final grade. Each assignment will be graded out of 100 possible points. Please document code appropriately and use a standard programming style (i.e., name things nicely and effectively).

Turn in instructions - there are two separate items to turn in in two separate places (total of 4 things). Printed items are due before class and online items are due at 11:59pm the day of.

  1. Printed
    1. Project code - print out edited files, i.e., where you actually wrote code (e.g., .h files and timing code). Staple these together and put a cover page on this code packet.
    2. Project report - print out the report with its own cover page.
  2. Online
    1. Project code - turn in a complete zip file of all code/documentation/makefiles (.h and .cpp files) to eCampus.
    2. Turn in a PDF of the report to eCampus.

All assignments must be turned in with a signed coverpage. If no coverpage is provided, the assignment will not be graded.

If there are any discrepencies in grades please see Jory Denny during his office hours (not the TA or Grader).