Due date: 1/15
Objective 1: to choose a project programming language for the
Objective 2: to specify a component in Racket
Task 1: 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
- for modularity (packages, modules, functors, units)
- for automatic unit testing (often called xyzUnit, after the original sUnit)
- for reading and writing XML
- for dealing with tcp/ip sockets
- for constructing graphical user interfaces
The IDE should make it easy to write exploratory code.
In addition, the language must satisfy two deployment constraints:
the code will be deployed on the Linux machines that the College of
Computer Science (as the first customer) at Northeastern deploys in its
the code should run without any real changes on your own computer/OS as
Draft the memo. It is not to exceed a single page (letter format, 11pt
font, 16pt base line, 1.5in margin all around), 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 Subversion
Task 2: Your company has decided to outsource the implementation of
a graph management component to Bulramistan, a former part of the late
Soviet Union, that supplies cheap software engineers. The component's
client is going to be constructed in-house, because it deals with
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
x + y ≥ z
are the costs associated with traverses 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