6515 S '13
Acquire, Revised
Acquire Plan
Project 1
Project 2
Project 3
Project 4
Project 5
Project 6
Project 7
Project 8
Project 9
Project 10
Project 11
Project 12

Project 1

Due date: 1/15

Objective 1: to choose a project programming language for the Acquire project

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

  1. for modularity (packages, modules, functors, units)
  2. for automatic unit testing (often called xyzUnit, after the original sUnit)
  3. for reading and writing XML
  4. for dealing with tcp/ip sockets
  5. for constructing graphical user interfaces
The IDE should make it easy to write exploratory code. In addition, the language must satisfy two deployment constraints:
  1. the code will be deployed on the Linux machines that the College of Computer Science (as the first customer) at Northeastern deploys in its labs, and
  2. the code should run without any real changes on your own computer/OS as well.

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 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

triangle inequality
x + y z where x, y, and 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 library.

last updated on Wed Apr 10 20:51:12 EDT 2013generated with Racket