CPSC 221H-200: Data Structures & Algorithms
Programming Assignment #5 (Term Project)
Spring 2009


General Guidelines for Programs


Assignment

Schedule of Deliverables:

Project Requirements

In this project, you will design and implement a graph data structure and a set of algorithms on it. You will work in pairs, each participating in all stages of the project. There will be 3 milestones that each team must satisfy:

Graph Requirements

You will implement a graph data structure capable of representing a directed graph that can be read in through a ASCII file. The data file will have a simple structure where each line represents a directed edge by 3 numbers:

EXAMPLE: < source vertex > < weight > < destination vertex >
1 5 2
2 3 3
3 3 3
1 2 3
3 0 2

You may assume that all 3 numbers are non-negative integers.

Graph Algorithms

You may choose to implement one of the two options of graph algorithms:

  1. Option 1: Path Algorithms
  2. Option 2: Structure Algorithms

Graph Data sets

You should create a method to generate random graphs. You will also be supplied with "real world" graphs in the near future.

Interface Design (20 points)

The objective of the interface design is to give a framework for your project implementation. A programmer should be able to implement your project with as few questions as possible. You should include the following parts in your interface design report:

Project Progress Report & Presentation (20 points)

The objective of this report is to show how your project is going, to identify any issues that have come up, document any design changes, etc. This will also serve to inform your classmates of your teams design decisions. Your presentation should address following issues:

Final Report. (40 points)

In your report you need to clearly describe your problem, discuss what data structures (other than the graph) are used and the reasons why you selected them (improve time complexity or other reasons), any other possible data structures/algorithms may be used and the reasons you did not use them, theoretical analysis of the complexity of your solution, experiments you tried and the reasons you did these experiments, comparison of your theoretical analysis and experimental results, and conclusions you made for your project. Your report should be well structured like the previous lab reports.

Coding Portion. (20 points)

The TA/instructor should be able to compile and run your program correctly with test data.