On this page:
1 Get set up for the course
2 Choose a language
3 Design an interface
6.0.0.1

Project 1: 9/1

This project is due on 9/1 at midnight.

Submission Directory: project01 in your pair’s GitHub repository. Failure to follow the submission instructions means your project will not be graded.

1 Get set up for the course

Note: These items are gradedyou must do them by the deadline.

2 Choose a language

Your group is to implement a project from scratch for a new customer. The project has no connection to any pieces of the existing code base in your company, meaning you are free to choose whatever programming language and programming IDE you wish to use. Your manager has put you in charge of making the choice, justifying the choice, and writing a draft memo, which he will edit and pass on to his manager (replacing your name with his naturally).

Here are the constraints that your manager has spelled out. The chosen language must come with support

The IDE should make it easy to write exploratory code. In addition, the language must satisfy two deployment constraints:

Draft the memo. It is not to exceed a single page (letter format, 11pt font), including the memo header. Your grade will depend on the memo format, its English correctness (style, grammar, organization), and the content.

Delivery format: PDF version checked in GitHub.

3 Design an interface

Your company has decided to outsource the implementation of a graph management component. The component’s client is going to be constructed in-house, because it deals with sensitive data.

It is your task to specify a Java interface or a Racket provide specification for the outsourced component. You may document each element of the specification with English phrases that do not exceed two lines of 80 chars each. You may comment the entire specification as a whole with a single line of 80 chars.

Informally, the library must manage directed, planar graphs. The nodes are labeled. The edges of the graph are labeled with a traversal cost. They also obey the usual triangle inequality. That is, in a triangle such as

the triangle inequality x + y ≥ z where x, y, and z are the costs associated with traversing these edges. The costs are real numbers may not exceed some specified cost interval. At a minimum, your library should be able to add edges to a graph, join two graphs that operate on the same cost interval and disjoint sets of nodes, and compute whether there is a path from one node to another and, if so, its cost.

There is no need to pay attention to performance constraints for the library.

Delivery Format: Text file in GitHub.